summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-x[-rw-r--r--]COPYING0
-rwxr-xr-x[-rw-r--r--]CliParser.cpp0
-rwxr-xr-x[-rw-r--r--]CliParser.h0
-rwxr-xr-x[-rw-r--r--]CompilerInfo.h2
-rwxr-xr-x[-rw-r--r--]CopyEngineManager.cpp8
-rwxr-xr-x[-rw-r--r--]CopyEngineManager.h1
-rwxr-xr-x[-rw-r--r--]CopyListener.cpp1
-rwxr-xr-x[-rw-r--r--]CopyListener.h0
-rwxr-xr-x[-rw-r--r--]Core.cpp54
-rwxr-xr-x[-rw-r--r--]Core.h11
-rwxr-xr-x[-rw-r--r--]DebugEngine.cpp8
-rwxr-xr-x[-rw-r--r--]DebugEngine.h0
-rwxr-xr-x[-rw-r--r--]DebugEngineMacro.h3
-rwxr-xr-x[-rw-r--r--]DebugModel.cpp0
-rwxr-xr-x[-rw-r--r--]Environment.h0
-rwxr-xr-x[-rw-r--r--]EventDispatcher.cpp103
-rwxr-xr-x[-rw-r--r--]EventDispatcher.h0
-rwxr-xr-x[-rw-r--r--]ExtraSocket.cpp0
-rwxr-xr-x[-rw-r--r--]ExtraSocket.h0
-rwxr-xr-x[-rw-r--r--]FacilityEngine.cpp103
-rwxr-xr-x[-rw-r--r--]FacilityEngine.h3
-rwxr-xr-xFacilityEngineVersion.cpp7
-rwxr-xr-x[-rw-r--r--]HelpDialog.cpp9
-rwxr-xr-x[-rw-r--r--]HelpDialog.h0
-rwxr-xr-x[-rw-r--r--]HelpDialog.ui3
-rwxr-xr-x[-rw-r--r--]InternetUpdater.cpp13
-rwxr-xr-x[-rw-r--r--]InternetUpdater.h0
-rwxr-xr-x[-rw-r--r--]LanguagesManager.cpp0
-rwxr-xr-x[-rw-r--r--]LanguagesManager.h0
-rwxr-xr-x[-rw-r--r--]LocalListener.cpp8
-rwxr-xr-x[-rw-r--r--]LocalListener.h0
-rwxr-xr-x[-rw-r--r--]LocalPluginOptions.cpp0
-rwxr-xr-x[-rw-r--r--]LocalPluginOptions.h0
-rwxr-xr-x[-rw-r--r--]LogThread.cpp0
-rwxr-xr-x[-rw-r--r--]LogThread.h0
-rwxr-xr-x[-rw-r--r--]OSSpecific.cpp42
-rwxr-xr-x[-rw-r--r--]OSSpecific.h2
-rwxr-xr-x[-rw-r--r--]OSSpecific.ui127
-rwxr-xr-x[-rw-r--r--]OptionDialog.cpp68
-rwxr-xr-x[-rw-r--r--]OptionDialog.h10
-rwxr-xr-x[-rw-r--r--]OptionDialog.ui111
-rwxr-xr-x[-rw-r--r--]OptionEngine.cpp0
-rwxr-xr-x[-rw-r--r--]OptionEngine.h0
-rwxr-xr-x[-rw-r--r--]PlatformMacro.h86
-rwxr-xr-x[-rw-r--r--]PluginInformation.cpp0
-rwxr-xr-x[-rw-r--r--]PluginInformation.h0
-rwxr-xr-x[-rw-r--r--]PluginInformation.ui0
-rwxr-xr-x[-rw-r--r--]PluginLoaderCore.cpp0
-rwxr-xr-x[-rw-r--r--]PluginLoaderCore.h0
-rwxr-xr-x[-rw-r--r--]PluginsManager.cpp15
-rwxr-xr-x[-rw-r--r--]PluginsManager.h0
-rwxr-xr-x[-rw-r--r--]ProductKey.cpp2
-rwxr-xr-x[-rw-r--r--]ProductKey.h0
-rwxr-xr-x[-rw-r--r--]ProductKey.ui6
-rwxr-xr-x[-rw-r--r--]README.md3
-rwxr-xr-x[-rw-r--r--]README.sources9
-rwxr-xr-x[-rw-r--r--]ResourcesManager.cpp0
-rwxr-xr-x[-rw-r--r--]ResourcesManager.h0
-rwxr-xr-x[-rw-r--r--]SessionLoader.cpp0
-rwxr-xr-x[-rw-r--r--]SessionLoader.h0
-rwxr-xr-x[-rw-r--r--]StructEnumDefinition.h96
-rwxr-xr-x[-rw-r--r--]StructEnumDefinition_UltracopierSpecific.h0
-rwxr-xr-x[-rw-r--r--]SystrayIcon.cpp21
-rwxr-xr-x[-rw-r--r--]SystrayIcon.h6
-rwxr-xr-x[-rw-r--r--]ThemesManager.cpp2
-rwxr-xr-x[-rw-r--r--]ThemesManager.h0
-rwxr-xr-x[-rw-r--r--]Variable.h19
-rwxr-xr-xVersion.h9
-rw-r--r--android-libultracopier.so-deployment-settings.json14
-rw-r--r--android-sources/AndroidManifest.xml92
-rwxr-xr-xandroid-sources/build.sh7
-rw-r--r--android-sources/res/drawable-hdpi/icon.pngbin0 -> 3057 bytes
-rw-r--r--android-sources/res/drawable-ldpi/icon.pngbin0 -> 1649 bytes
-rw-r--r--android-sources/res/drawable-mdpi/icon.pngbin0 -> 2162 bytes
-rwxr-xr-xcatchcopy-windows-explorer-plugin/CatchCopy.cpp115
-rwxr-xr-xcatchcopy-windows-explorer-plugin/CatchCopy.def7
-rwxr-xr-xcatchcopy-windows-explorer-plugin/CatchCopy.pro49
-rwxr-xr-xcatchcopy-windows-explorer-plugin/ClassFactory.cpp84
-rwxr-xr-xcatchcopy-windows-explorer-plugin/ClassFactory.h22
-rwxr-xr-xcatchcopy-windows-explorer-plugin/ClientCatchcopy.cpp455
-rwxr-xr-xcatchcopy-windows-explorer-plugin/ClientCatchcopy.h68
-rwxr-xr-xcatchcopy-windows-explorer-plugin/DDShellExt.cpp188
-rwxr-xr-xcatchcopy-windows-explorer-plugin/DDShellExt.h46
-rwxr-xr-xcatchcopy-windows-explorer-plugin/Deque.cpp100
-rwxr-xr-xcatchcopy-windows-explorer-plugin/Deque.h29
-rwxr-xr-xcatchcopy-windows-explorer-plugin/Reg.cpp403
-rwxr-xr-xcatchcopy-windows-explorer-plugin/Reg.h103
-rwxr-xr-xcatchcopy-windows-explorer-plugin/Variable.h7
-rwxr-xr-xcatchcopy-windows-explorer-plugin/resource.h18
-rwxr-xr-x[-rw-r--r--]cpp11addition.cpp165
-rwxr-xr-x[-rw-r--r--]cpp11addition.h10
-rwxr-xr-x[-rw-r--r--]cpp11additionstringtointcpp.cpp0
-rw-r--r--file-manager/libfm-qt-uc.patch94
-rw-r--r--file-manager/pcmanfm-qt-uc.patch191
-rw-r--r--file-manager/pcmanfm-qt.txt3
-rw-r--r--interface/FacilityInterface.h3
-rw-r--r--interface/PluginInterface_CopyEngine.h4
-rw-r--r--interface/PluginInterface_Listener.h2
-rw-r--r--interface/PluginInterface_PluginLoader.h2
-rw-r--r--interface/PluginInterface_SessionLoader.h2
-rw-r--r--interface/PluginInterface_Themes.h6
-rw-r--r--lib/qt-tar-xz/xz_dec_lzma2.c1696
-rw-r--r--lib/qt-tar-xz/xz_dec_stream.c1215
-rw-r--r--libfm-qt-ultracopier/README1
-rw-r--r--libfm-qt-ultracopier/libfm-qt-ultracopier.pro14
-rw-r--r--libfm-qt-ultracopier/utilities.cpp89
-rw-r--r--libfm-qt-ultracopier/utilities.h21
-rw-r--r--libogg/COPYING28
-rw-r--r--libogg/bitwise.c1088
-rw-r--r--libogg/framing.c2140
-rw-r--r--libogg/ogg.h210
-rw-r--r--libogg/os_types.h153
-rw-r--r--little/main-little.cpp19
-rwxr-xr-x[-rw-r--r--]main.cpp10
-rw-r--r--opusfile/info.c771
-rw-r--r--opusfile/internal.c42
-rw-r--r--opusfile/internal.h259
-rw-r--r--opusfile/opusfile.c3326
-rw-r--r--opusfile/opusfile.h2164
-rw-r--r--opusfile/stream.c364
-rwxr-xr-x[-rw-r--r--]other-pro/static.pro0
-rwxr-xr-x[-rw-r--r--]other-pro/supercopier-core.pro0
-rwxr-xr-x[-rw-r--r--]other-pro/ultracopier-core.pro45
-rwxr-xr-xother-pro/ultracopier-core.pro.user.4.8-pre1336
-rwxr-xr-xother-pro/ultracopier-core.pro.user.74ab603.4.8-pre1336
-rwxr-xr-xother-pro/ultracopier-little-random.pro11
-rwxr-xr-xother-pro/ultracopier-little-random.pro.user.4.8-pre1291
-rwxr-xr-xother-pro/ultracopier-little.pri63
-rwxr-xr-x[-rw-r--r--]other-pro/ultracopier-little.pro200
-rwxr-xr-xother-pro/ultracopier-little.pro.user.74ab603.4.9-pre1281
-rwxr-xr-x[-rw-r--r--]other-pro/ultracopier-static.pro6
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/AvancedQFile.cpp (renamed from plugins/CopyEngine/Ultracopier/AvancedQFile.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/AvancedQFile.h (renamed from plugins/CopyEngine/Ultracopier/AvancedQFile.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/CompilerInfo.h (renamed from plugins/CopyEngine/Ultracopier/CompilerInfo.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine-collision-and-error.cpp (renamed from plugins/CopyEngine/Ultracopier/CopyEngine-collision-and-error.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine.cpp (renamed from plugins/CopyEngine/Ultracopier/CopyEngine.cpp)8
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine.h (renamed from plugins/CopyEngine/Ultracopier/CopyEngine.h)4
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine.pro (renamed from plugins/CopyEngine/Ultracopier/CopyEngine.pro)2
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine.pro.user.4.8-pre1288
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngineFactory.cpp (renamed from plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp)6
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngineFactory.h (renamed from plugins/CopyEngine/Ultracopier/CopyEngineFactory.h)2
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngineUltracopierVariable.h (renamed from plugins/CopyEngine/Ultracopier/Variable.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/DebugDialog.cpp (renamed from plugins/CopyEngine/Ultracopier/DebugDialog.cpp)4
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/DebugDialog.h (renamed from plugins/CopyEngine/Ultracopier/DebugDialog.h)2
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/DebugEngineMacro.h (renamed from plugins/CopyEngine/Ultracopier/DebugEngineMacro.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/DiskSpace.cpp (renamed from plugins/CopyEngine/Ultracopier/DiskSpace.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/DiskSpace.h (renamed from plugins/CopyEngine/Ultracopier/DiskSpace.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/DiskSpace.ui (renamed from plugins/CopyEngine/Ultracopier/DiskSpace.ui)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/DriveManagement.cpp (renamed from plugins/CopyEngine/Ultracopier/DriveManagement.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/DriveManagement.h (renamed from plugins/CopyEngine/Ultracopier/DriveManagement.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Environment.h (renamed from plugins/CopyEngine/Ultracopier/Environment.h)2
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileErrorDialog.cpp (renamed from plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileErrorDialog.h (renamed from plugins/CopyEngine/Ultracopier/FileErrorDialog.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileExistsDialog.cpp (renamed from plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileExistsDialog.h (renamed from plugins/CopyEngine/Ultracopier/FileExistsDialog.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileIsSameDialog.cpp (renamed from plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileIsSameDialog.h (renamed from plugins/CopyEngine/Ultracopier/FileIsSameDialog.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/FilterRules.cpp (renamed from plugins/CopyEngine/Ultracopier/FilterRules.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/FilterRules.h (renamed from plugins/CopyEngine/Ultracopier/FilterRules.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/FilterRules.ui (renamed from plugins/CopyEngine/Ultracopier/FilterRules.ui)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Filters.cpp (renamed from plugins/CopyEngine/Ultracopier/Filters.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Filters.h (renamed from plugins/CopyEngine/Ultracopier/Filters.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Filters.ui (renamed from plugins/CopyEngine/Ultracopier/Filters.ui)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/FolderExistsDialog.cpp (renamed from plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/FolderExistsDialog.h (renamed from plugins/CopyEngine/Ultracopier/FolderExistsDialog.h)0
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ar/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ar/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/id/translation.ts)136
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/de/translation.qmbin0 -> 26769 bytes
-rw-r--r--plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/de/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/de/translation.ts)238
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/el/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/el/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/el/translation.ts)136
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/en/translation.qmbin0 -> 334 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/en/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/en/translation.ts)126
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/es/translation.qmbin0 -> 22315 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/es/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/es/translation.ts)140
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/fr/translation.qmbin0 -> 24417 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/fr/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/fr/translation.ts)140
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hi/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hi/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/ar/translation.ts)136
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hu/translation.qmbin0 -> 20586 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hu/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/hu/translation.ts)130
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/id/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/id/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/hi/translation.ts)136
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/it/translation.qmbin0 -> 17126 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/it/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/it/translation.ts)140
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ja/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ja/translation.ts1291
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ko/translation.qmbin0 -> 3219 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ko/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/ko/translation.ts)126
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/nl/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/nl/translation.ts1291
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/no/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/no/translation.ts1291
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pl/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pl/translation.ts1291
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pt/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pt/translation.ts1291
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ru/translation.qmbin0 -> 7450 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ru/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/ru/translation.ts)140
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/th/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/th/translation.ts1291
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/tr/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/tr/translation.ts1291
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/zh/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/zh/translation.ts1291
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/ListThread.cpp (renamed from plugins/CopyEngine/Ultracopier/ListThread.cpp)27
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/ListThread.h (renamed from plugins/CopyEngine/Ultracopier/ListThread.h)2
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/ListThread_InodeAction.cpp (renamed from plugins/CopyEngine/Ultracopier/ListThread_InodeAction.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/MkPath.cpp (renamed from plugins/CopyEngine/Ultracopier/MkPath.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/MkPath.h (renamed from plugins/CopyEngine/Ultracopier/MkPath.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/README.md (renamed from plugins/CopyEngine/Ultracopier/README.md)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/ReadThread.cpp (renamed from plugins/CopyEngine/Ultracopier/ReadThread.cpp)2
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/ReadThread.h (renamed from plugins/CopyEngine/Ultracopier/ReadThread.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/RenamingRules.cpp (renamed from plugins/CopyEngine/Ultracopier/RenamingRules.cpp)8
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/RenamingRules.h (renamed from plugins/CopyEngine/Ultracopier/RenamingRules.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/RenamingRules.ui (renamed from plugins/CopyEngine/Ultracopier/RenamingRules.ui)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/ScanFileOrFolder.cpp (renamed from plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/ScanFileOrFolder.h (renamed from plugins/CopyEngine/Ultracopier/ScanFileOrFolder.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/StructEnumDefinition.h (renamed from plugins/CopyEngine/Ultracopier/StructEnumDefinition.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/StructEnumDefinition_CopyEngine.h (renamed from plugins/CopyEngine/Ultracopier/StructEnumDefinition_CopyEngine.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/TransferThread.cpp (renamed from plugins/CopyEngine/Ultracopier/TransferThread.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/TransferThread.h (renamed from plugins/CopyEngine/Ultracopier/TransferThread.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/WriteThread.cpp (renamed from plugins/CopyEngine/Ultracopier/WriteThread.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/WriteThread.h (renamed from plugins/CopyEngine/Ultracopier/WriteThread.h)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/copyEngineOptions.ui (renamed from plugins/CopyEngine/Ultracopier/copyEngineOptions.ui)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/copyEngineResources.qrc (renamed from plugins/CopyEngine/Ultracopier/copyEngineResources.qrc)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/debugDialog.ui (renamed from plugins/CopyEngine/Ultracopier/debugDialog.ui)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/documentation.dox (renamed from plugins/CopyEngine/Ultracopier/documentation.dox)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/fileErrorDialog.ui (renamed from plugins/CopyEngine/Ultracopier/fileErrorDialog.ui)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/fileExistsDialog.ui (renamed from plugins/CopyEngine/Ultracopier/fileExistsDialog.ui)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/fileIsSameDialog.ui (renamed from plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/folderExistsDialog.ui (renamed from plugins/CopyEngine/Ultracopier/folderExistsDialog.ui)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/informations.xml (renamed from plugins/CopyEngine/Ultracopier/informations.xml)2
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/plugin.json (renamed from plugins/CopyEngine/Ultracopier/plugin.json)0
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/resources/add.png (renamed from plugins/CopyEngine/Ultracopier/resources/add.png)bin552 -> 552 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/resources/edit.png (renamed from plugins/CopyEngine/Ultracopier/resources/edit.png)bin623 -> 623 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/resources/filter.png (renamed from plugins/CopyEngine/Ultracopier/resources/filter.png)bin685 -> 685 bytes
-rwxr-xr-x[-rw-r--r--]plugins-unmaintained/CopyEngine/Ultracopier-Qt/resources/remove.png (renamed from plugins/CopyEngine/Ultracopier/resources/remove.png)bin683 -> 683 bytes
-rw-r--r--plugins-unmaintained/Listener/dbus/informations.xml2
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/ar/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/de/translation.qmbin0 -> 334 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/el/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/en/translation.qmbin0 -> 334 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/es/translation.qmbin0 -> 334 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/fr/translation.qmbin0 -> 334 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/hi/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/hu/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/id/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/it/translation.qmbin0 -> 334 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/ja/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/ko/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/nl/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/no/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/pl/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/pt/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/ru/translation.qmbin0 -> 345 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/th/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/tr/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/Languages/zh/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/PluginLoader/keybinding/informations.xml2
-rw-r--r--plugins-unmaintained/SessionLoader/KDE4/informations.xml2
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/ar/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/de/translation.qmbin0 -> 1094 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/el/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/en/translation.qmbin0 -> 334 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/es/translation.qmbin0 -> 1015 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/fr/translation.qmbin0 -> 986 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/hi/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/hu/translation.qmbin0 -> 1065 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/id/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/it/translation.qmbin0 -> 983 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/ja/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/ko/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/nl/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/no/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/pl/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/ru/translation.qmbin0 -> 1036 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/th/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/tr/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/Languages/zh/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Clean/informations.xml2
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/ar/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/de/translation.qmbin0 -> 3171 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/el/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/en/translation.qmbin0 -> 334 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/es/translation.qmbin0 -> 2972 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/fr/translation.qmbin0 -> 3131 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/hi/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/hu/translation.qmbin0 -> 3148 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/id/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/it/translation.qmbin0 -> 3129 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/ja/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/ko/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/nl/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/no/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/pl/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/ru/translation.qmbin0 -> 3011 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/th/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/tr/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/Languages/zh/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Teracopy/informations.xml2
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/ar/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/de/translation.qmbin0 -> 2224 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/el/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/en/translation.qmbin0 -> 807 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/es/translation.qmbin0 -> 1380 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/fr/translation.qmbin0 -> 2281 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/hi/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/hu/translation.qmbin0 -> 2031 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/id/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/it/translation.qmbin0 -> 2249 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/ja/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/ko/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/nl/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/no/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/pl/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/ru/translation.qmbin0 -> 859 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/th/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/tr/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/Languages/zh/translation.qmbin0 -> 327 bytes
-rw-r--r--plugins-unmaintained/Themes/Windows/informations.xml2
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/README.md0
-rwxr-xr-xplugins/CopyEngine/Random/CopyEngine.cpp253
-rwxr-xr-xplugins/CopyEngine/Random/CopyEngine.h128
-rwxr-xr-xplugins/CopyEngine/Random/CopyEngine.pro26
-rwxr-xr-xplugins/CopyEngine/Random/CopyEngineFactory.cpp78
-rwxr-xr-xplugins/CopyEngine/Random/CopyEngineFactory.h58
-rwxr-xr-xplugins/CopyEngine/Random/README.md3
-rwxr-xr-xplugins/CopyEngine/Random/informations.xml24
-rwxr-xr-xplugins/CopyEngine/Random/plugin.json1
-rwxr-xr-xplugins/CopyEngine/Rsync/CopyEngine.pro2
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Rsync/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Rsync/Rsync.pro0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Rsync/informations.xml2
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/CallBackEventLoop.h15
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/CompilerInfo.h1
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/CopyEngine-collision-and-error.cpp719
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp1129
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/CopyEngine.h356
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/CopyEngine.pro115
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp654
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.h127
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/CopyEngineUltracopier-SpecVariable.h43
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/DebugDialog.cpp63
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/DebugDialog.h48
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/DebugEngineMacro.h28
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/DiskSpace.cpp53
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/DiskSpace.h29
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/DiskSpace.ui68
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/DriveManagement.cpp180
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/DriveManagement.h34
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Environment.h11
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/EventLoop.cpp71
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/EventLoop.h30
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp209
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.h56
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp313
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.h68
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp226
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.h63
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/FilterRules.cpp199
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/FilterRules.h47
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/FilterRules.ui162
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Filters.cpp464
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Filters.h45
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Filters.ui221
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp252
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.h60
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.qmbin0 -> 20287 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.qmbin0 -> 19546 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.qmbin0 -> 334 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.qmbin0 -> 23560 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.qmbin0 -> 23074 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/hi/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/hi/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/hu/translation.qmbin0 -> 15971 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/hu/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/id/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/id/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/it/translation.qmbin0 -> 23932 bytes
-rw-r--r--plugins/CopyEngine/Ultracopier-Spec/Languages/it/translation.ts1150
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/ja/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/ja/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/ko/translation.qmbin0 -> 2785 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/ko/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/nl/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/nl/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/no/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/no/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/pl/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/pl/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/pt/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/pt/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/ru/translation.qmbin0 -> 6529 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/ru/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/th/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/th/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/tr/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/tr/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/zh/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/zh/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThread.cpp1235
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThread.h437
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadActions.cpp129
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp423
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadMedia.cpp169
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadNew.cpp104
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadOptions.cpp296
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadScan.cpp97
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadStat.cpp184
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThread_InodeAction.cpp91
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/MkPath.cpp676
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/MkPath.h100
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/README.md3
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/RenamingRules.cpp96
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/RenamingRules.h34
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/RenamingRules.ui134
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp953
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.h118
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition.h1
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition_CopyEngine.h118
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp1547
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/TransferThread.h265
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/async/ReadThread.cpp883
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/async/ReadThread.h163
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp1442
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.h153
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/async/WriteThread.cpp1164
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/async/WriteThread.h181
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui602
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/copyEngineResources.qrc8
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/debugDialog.ui120
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/documentation.dox39
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui264
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui428
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui214
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui309
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/informations.xml26
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/plugin.json1
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ports.h6
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/resources/add.pngbin0 -> 552 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/resources/edit.pngbin0 -> 623 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/resources/filter.pngbin0 -> 685 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/resources/remove.pngbin0 -> 683 bytes
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/ja/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/nl/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/no/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/pl/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/pt/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/th/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/tr/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/zh/translation.ts1291
-rwxr-xr-x[-rw-r--r--]plugins/Languages/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ar/flag.pngbin585 -> 585 bytes
-rw-r--r--plugins/Languages/ar/informations.xml6
-rwxr-xr-xplugins/Languages/ar/translation.qmbin0 -> 28595 bytes
-rw-r--r--plugins/Languages/ar/translation.ts1853
-rw-r--r--plugins/Languages/de/informations.xml2
-rwxr-xr-xplugins/Languages/de/translation.qmbin0 -> 30785 bytes
-rw-r--r--plugins/Languages/de/translation.ts1444
-rwxr-xr-x[-rw-r--r--]plugins/Languages/el/flag.pngbin726 -> 726 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/el/informations.xml2
-rwxr-xr-xplugins/Languages/el/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/el/translation.ts1287
-rwxr-xr-xplugins/Languages/en/translation.qm1
-rwxr-xr-x[-rw-r--r--]plugins/Languages/es/flag.pngbin726 -> 726 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/es/informations.xml2
-rwxr-xr-xplugins/Languages/es/translation.qmbin0 -> 31962 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/es/translation.ts1343
-rwxr-xr-x[-rw-r--r--]plugins/Languages/fr/flag.pngbin699 -> 699 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/fr/informations.xml2
-rwxr-xr-xplugins/Languages/fr/translation.qmbin0 -> 32564 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/fr/translation.ts1299
-rwxr-xr-x[-rw-r--r--]plugins/Languages/hi/flag.pngbin728 -> 728 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/hi/informations.xml2
-rwxr-xr-xplugins/Languages/hi/translation.qmbin0 -> 334 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/hi/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/hu/flag.pngbin810 -> 810 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/hu/informations.xml2
-rwxr-xr-xplugins/Languages/hu/translation.qmbin0 -> 23508 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/hu/translation.ts1292
-rwxr-xr-x[-rw-r--r--]plugins/Languages/id/flag.pngbin691 -> 691 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/id/informations.xml2
-rwxr-xr-xplugins/Languages/id/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/id/translation.ts1287
-rw-r--r--plugins/Languages/it/informations.xml2
-rwxr-xr-xplugins/Languages/it/translation.qmbin0 -> 32517 bytes
-rw-r--r--plugins/Languages/it/translation.ts1574
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ja/flag.pngbin595 -> 595 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ja/informations.xml2
-rwxr-xr-xplugins/Languages/ja/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ja/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ko/flag.pngbin650 -> 650 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ko/informations.xml2
-rwxr-xr-xplugins/Languages/ko/translation.qmbin0 -> 8248 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ko/translation.ts1289
-rwxr-xr-x[-rw-r--r--]plugins/Languages/nl/flag.pngbin709 -> 709 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/nl/informations.xml2
-rwxr-xr-xplugins/Languages/nl/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/nl/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/no/flag.pngbin715 -> 715 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/no/informations.xml2
-rwxr-xr-xplugins/Languages/no/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/no/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/pl/flag.pngbin586 -> 586 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/pl/informations.xml2
-rwxr-xr-xplugins/Languages/pl/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/pl/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/pt/flag.pngbin686 -> 686 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/pt/informations.xml2
-rwxr-xr-xplugins/Languages/pt/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/pt/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ru/flag.pngbin721 -> 721 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ru/informations.xml2
-rwxr-xr-xplugins/Languages/ru/translation.qmbin0 -> 15940 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ru/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/th/flag.pngbin731 -> 731 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/th/informations.xml2
-rwxr-xr-xplugins/Languages/th/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/th/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/tr/flag.pngbin634 -> 634 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/tr/informations.xml2
-rwxr-xr-xplugins/Languages/tr/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/tr/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/zh/flag.pngbin538 -> 538 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/zh/informations.xml2
-rwxr-xr-xplugins/Languages/zh/translation.qmbin0 -> 412 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/zh/translation.ts1424
-rwxr-xr-x[-rw-r--r--]plugins/Languages/zh_TW/flag.pngbin616 -> 616 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/zh_TW/informations.xml2
-rwxr-xr-xplugins/Languages/zh_TW/translation.qmbin0 -> 2444 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/zh_TW/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Listener/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/DebugEngineMacro.h0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/Environment.h2
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/Listenercatchcopy-v0002Variable.h (renamed from plugins/SessionLoader/Windows/Variable.h)2
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/StructEnumDefinition.h0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ClientCatchcopy.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ClientCatchcopy.h0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ExtraSocketCatchcopy.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ExtraSocketCatchcopy.h0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ServerCatchcopy.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ServerCatchcopy.h0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/VariablesCatchcopy.h0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/documentation.dox0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/informations.xml2
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/listener.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/listener.h18
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/listener.pro2
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/plugin.json0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/DebugEngineMacro.h0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Environment.h2
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/ar/translation.qmbin0 -> 1059 bytes
-rw-r--r--plugins/PluginLoader/catchcopy-v0002/Languages/ar/translation.ts8
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/de/translation.qmbin0 -> 1136 bytes
-rw-r--r--plugins/PluginLoader/catchcopy-v0002/Languages/de/translation.ts4
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/el/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/el/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/en/translation.qmbin0 -> 334 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/en/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/es/translation.qmbin0 -> 487 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/es/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/fr/translation.qmbin0 -> 1246 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/fr/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/hi/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/hi/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/hu/translation.qmbin0 -> 989 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/hu/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/id/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/id/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/it/translation.qmbin0 -> 1300 bytes
-rw-r--r--plugins/PluginLoader/catchcopy-v0002/Languages/it/translation.ts6
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/ja/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/ja/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/ko/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/ko/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/nl/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/nl/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/no/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/no/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/pl/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/pl/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/pt/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/pt/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/ru/translation.qmbin0 -> 498 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/ru/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/th/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/th/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/tr/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/tr/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/zh/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/zh/translation.ts0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/OptionsWidget.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/OptionsWidget.h0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/OptionsWidget.ui0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/PlatformMacro.h0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/PluginLoadercatchcopy-v0002Variable.h (renamed from plugins/PluginLoader/catchcopy-v0002/Variable.h)2
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/StructEnumDefinition.h0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/documentation.dox0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/informations.xml2
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/plugin.json0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/pluginLoader.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/pluginLoader.h8
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/pluginLoader.pro2
-rwxr-xr-x[-rw-r--r--]plugins/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/DebugEngineMacro.h0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/Environment.h2
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/SessionLoaderWindowsVariable.h (renamed from plugins/Listener/catchcopy-v0002/Variable.h)2
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/StructEnumDefinition.h0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/documentation.dox0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/informations.xml2
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/plugin.json0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/sessionLoader.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/sessionLoader.h0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/sessionLoader.pro2
-rwxr-xr-xplugins/SessionLoader/Windows/sessionLoader.pro.user.4.8-pre1333
-rwxr-xr-xplugins/SessionLoader/Windows/sessionLoader.pro.user.74ab603.4.8-pre1333
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/DebugEngineMacro.h0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Environment.h2
-rwxr-xr-xplugins/Themes/Oxygen/Languages/ar/translation.qmbin0 -> 5785 bytes
-rw-r--r--plugins/Themes/Oxygen/Languages/ar/translation.ts166
-rwxr-xr-xplugins/Themes/Oxygen/Languages/de/translation.qmbin0 -> 6711 bytes
-rw-r--r--plugins/Themes/Oxygen/Languages/de/translation.ts50
-rwxr-xr-xplugins/Themes/Oxygen/Languages/el/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/el/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/en/translation.qmbin0 -> 334 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/en/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/es/translation.qmbin0 -> 6167 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/es/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/fr/translation.qmbin0 -> 6346 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/fr/translation.ts16
-rwxr-xr-xplugins/Themes/Oxygen/Languages/hi/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/hi/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/hu/translation.qmbin0 -> 5951 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/hu/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/id/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/id/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/it/translation.qmbin0 -> 6445 bytes
-rw-r--r--plugins/Themes/Oxygen/Languages/it/translation.ts128
-rwxr-xr-xplugins/Themes/Oxygen/Languages/ja/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/ja/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/ko/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/ko/translation.ts16
-rwxr-xr-xplugins/Themes/Oxygen/Languages/nl/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/nl/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/no/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/no/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/pl/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/pl/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/pt/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/pt/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/ru/translation.qmbin0 -> 1630 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/ru/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/th/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/th/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/tr/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/tr/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/zh/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/zh/translation.ts40
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/OxygenVariable.h (renamed from plugins/Themes/Oxygen/Variable.h)2
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/StructEnumDefinition.h0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/ThemesFactory.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/ThemesFactory.h0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/TransferModel.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/TransferModel.h0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/documentation.dox0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/informations.xml2
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interface.cpp48
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interface.h5
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interface.pro2
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interface.ui0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interfaceInclude.pri4
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interfaceResources.qrc0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interfaceResources_unix.qrc0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interfaceResources_windows.qrc0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/options.ui0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/plugin.json0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/add.pngbin552 -> 552 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/exit.pngbin874 -> 874 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/informations.pngbin841 -> 841 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/options.pngbin624 -> 624 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Unix.pngbin1093 -> 1093 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Windows.pngbin623 -> 623 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Semiuncaught_Unix.pngbin1174 -> 1174 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Semiuncaught_Windows.pngbin677 -> 677 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Uncaught_Unix.pngbin665 -> 665 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Uncaught_Windows.pngbin439 -> 439 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/add.pngbin552 -> 552 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/cancel.pngbin874 -> 874 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/export-transfer-list.pngbin455 -> 455 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/import-transfer-list.pngbin454 -> 454 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/main.pngbin623 -> 623 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/moveDown.pngbin466 -> 466 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/moveUp.pngbin466 -> 466 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/player_end.pngbin696 -> 696 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/player_pause.pngbin640 -> 640 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/player_play.pngbin673 -> 673 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/putOnBottom.pngbin676 -> 676 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/putOnTop.pngbin681 -> 681 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/remove.pngbin683 -> 683 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/search.pngbin781 -> 781 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/themesOptions.ui0
-rwxr-xr-xplugins/Themes/Oxygen2/DarkButton.cpp99
-rwxr-xr-xplugins/Themes/Oxygen2/DarkButton.h22
-rwxr-xr-xplugins/Themes/Oxygen2/DebugEngineMacro.h28
-rwxr-xr-xplugins/Themes/Oxygen2/Environment.h10
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ar/translation.qmbin0 -> 6338 bytes
-rw-r--r--plugins/Themes/Oxygen2/Languages/ar/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/de/translation.qmbin0 -> 7079 bytes
-rw-r--r--plugins/Themes/Oxygen2/Languages/de/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/el/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/el/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/en/translation.qmbin0 -> 334 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/en/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/es/translation.qmbin0 -> 6112 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/es/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/fr/translation.qmbin0 -> 6702 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/fr/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/hi/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/hi/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/hu/translation.qmbin0 -> 5898 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/hu/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/id/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/id/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/it/translation.qmbin0 -> 7360 bytes
-rw-r--r--plugins/Themes/Oxygen2/Languages/it/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ja/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ja/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ko/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ko/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/nl/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/nl/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/no/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/no/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/pl/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/pl/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/pt/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/pt/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ru/translation.qmbin0 -> 1581 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ru/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/th/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/th/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/tr/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/tr/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/zh/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/zh/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Oxygen2Environment.h10
-rwxr-xr-xplugins/Themes/Oxygen2/Oxygen2Variable.h18
-rwxr-xr-xplugins/Themes/Oxygen2/ProgressBarDark.cpp69
-rwxr-xr-xplugins/Themes/Oxygen2/ProgressBarDark.h17
-rwxr-xr-xplugins/Themes/Oxygen2/README.md4
-rwxr-xr-xplugins/Themes/Oxygen2/StructEnumDefinition.h1
-rwxr-xr-xplugins/Themes/Oxygen2/ThemesFactory.cpp573
-rwxr-xr-xplugins/Themes/Oxygen2/ThemesFactory.h89
-rwxr-xr-xplugins/Themes/Oxygen2/TransferModel.cpp755
-rwxr-xr-xplugins/Themes/Oxygen2/TransferModel.h106
-rwxr-xr-xplugins/Themes/Oxygen2/VerticalLabel.cpp44
-rwxr-xr-xplugins/Themes/Oxygen2/VerticalLabel.h21
-rwxr-xr-xplugins/Themes/Oxygen2/chartarea.cpp117
-rwxr-xr-xplugins/Themes/Oxygen2/chartarea.h31
-rwxr-xr-xplugins/Themes/Oxygen2/documentation.dox31
-rwxr-xr-xplugins/Themes/Oxygen2/fileTree.cpp149
-rwxr-xr-xplugins/Themes/Oxygen2/fileTree.h133
-rwxr-xr-xplugins/Themes/Oxygen2/informations.xml26
-rwxr-xr-xplugins/Themes/Oxygen2/interface.cpp1995
-rwxr-xr-xplugins/Themes/Oxygen2/interface.h259
-rwxr-xr-xplugins/Themes/Oxygen2/interface.pro8
-rwxr-xr-xplugins/Themes/Oxygen2/interface.ui1098
-rwxr-xr-xplugins/Themes/Oxygen2/interfaceInclude.pri73
-rwxr-xr-xplugins/Themes/Oxygen2/interfaceResources.qrc36
-rwxr-xr-xplugins/Themes/Oxygen2/interfaceResources_unix.qrc7
-rwxr-xr-xplugins/Themes/Oxygen2/interfaceResources_windows.qrc7
-rwxr-xr-xplugins/Themes/Oxygen2/options.ui280
-rwxr-xr-xplugins/Themes/Oxygen2/plugin.json1
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/labels.cpp338
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/map.cpp421
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/map.h85
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/radialMap.h109
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/widget.cpp211
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/widget.h118
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/widgetEvents.cpp254
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/add.pngbin0 -> 552 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/exit.pngbin0 -> 874 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/informations.pngbin0 -> 841 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/options.pngbin0 -> 624 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Unix.pngbin0 -> 1093 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Windows.pngbin0 -> 623 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Unix.pngbin0 -> 1174 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Windows.pngbin0 -> 677 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Unix.pngbin0 -> 665 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Windows.pngbin0 -> 439 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/add.pngbin0 -> 552 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/cancel.pngbin0 -> 874 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/cancelDarkD.pngbin0 -> 151 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/cancelDarkE.pngbin0 -> 473 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/click.opusbin0 -> 632 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkButton.pngbin0 -> 3632 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkButtonOver.pngbin0 -> 4286 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkButtonPushed.pngbin0 -> 3541 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkmoveDown.pngbin0 -> 1349 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkmoveUp.pngbin0 -> 1530 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkplayer_end.pngbin0 -> 1153 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkplayer_pause.pngbin0 -> 1059 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkplayer_play.pngbin0 -> 1166 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/export-transfer-list.pngbin0 -> 455 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/import-transfer-list.pngbin0 -> 454 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/main.pngbin0 -> 623 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/moveDown.pngbin0 -> 466 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/moveUp.pngbin0 -> 466 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/over.opusbin0 -> 527 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/player_end.pngbin0 -> 696 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/player_pause.pngbin0 -> 640 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/player_play.pngbin0 -> 673 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/progressBarin.pngbin0 -> 4487 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/progressBarout.pngbin0 -> 1287 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/putOnBottom.pngbin0 -> 676 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/putOnTop.pngbin0 -> 681 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/remove.pngbin0 -> 683 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/search.pngbin0 -> 781 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/themesOptions.ui466
-rwxr-xr-x[-rw-r--r--]plugins/Themes/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/informations.xml2
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/interface.pro2
-rwxr-xr-xplugins/Themes/Supercopier/interface.pro.user.4.8-pre1328
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/interfaceResources.qrc0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/interfaceResources_unix.qrc0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/interfaceResources_windows.qrc0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/add.pngbin246 -> 246 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/exit.pngbin545 -> 545 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/informations.pngbin281 -> 281 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/options.pngbin275 -> 275 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Unix.pngbin147 -> 147 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Windows.pngbin148 -> 148 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Unix.pngbin147 -> 147 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Windows.pngbin148 -> 148 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Unix.pngbin141 -> 141 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Windows.pngbin139 -> 139 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/add.pngbin240 -> 240 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/cancel.pngbin284 -> 284 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/export-transfer-list.pngbin264 -> 264 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/import-transfer-list.pngbin316 -> 316 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/main.pngbin148 -> 148 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/moveDown.pngbin191 -> 191 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/moveUp.pngbin190 -> 190 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/player_end.pngbin226 -> 226 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/player_pause.pngbin207 -> 207 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/player_play.pngbin208 -> 208 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/progressbarleft.pngbin133 -> 133 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/progressbarright.pngbin132 -> 132 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/putOnBottom.pngbin206 -> 206 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/putOnTop.pngbin208 -> 208 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/remove.pngbin254 -> 254 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/search.pngbin237 -> 237 bytes
-rwxr-xr-x[-rw-r--r--]plugins/static-plugins-oxygen.qrc3
-rwxr-xr-x[-rw-r--r--]plugins/static-plugins-windows.qrc1
-rwxr-xr-x[-rw-r--r--]plugins/static-plugins.qrc9
-rwxr-xr-xrecipe-haiku.txt60
-rw-r--r--resources/Languages/en/informations.xml2
-rw-r--r--resources/Languages/en/translation.qmbin0 -> 334 bytes
-rw-r--r--resources/Languages/en/translation.ts1287
-rw-r--r--resources/finish.opusbin0 -> 2096 bytes
-rw-r--r--resources/resources-windows.rc2
-rw-r--r--resources/ultracopier-36x36.pngbin0 -> 1649 bytes
-rw-r--r--resources/ultracopier-48x48.pngbin0 -> 2162 bytes
-rw-r--r--resources/ultracopier-72x72.pngbin0 -> 3057 bytes
-rw-r--r--resources/ultracopier-oxygen.pngbin0 -> 3805 bytes
-rw-r--r--resources/ultracopier-oxygen2.pngbin0 -> 8794 bytes
-rw-r--r--resources/ultracopier-resources.qrc3
-rw-r--r--resources/ultracopier-supercopier.pngbin0 -> 2740 bytes
-rw-r--r--test-client-catchcopy/catchcopy-api-0002/ClientCatchcopy.cpp380
-rw-r--r--test-client-catchcopy/catchcopy-api-0002/ClientCatchcopy.h114
-rw-r--r--test-client-catchcopy/catchcopy-api-0002/ExtraSocketCatchcopy.cpp31
-rw-r--r--test-client-catchcopy/catchcopy-api-0002/ExtraSocketCatchcopy.h27
-rw-r--r--test-client-catchcopy/catchcopy-api-0002/ServerCatchcopy.cpp725
-rw-r--r--test-client-catchcopy/catchcopy-api-0002/ServerCatchcopy.h162
-rw-r--r--test-client-catchcopy/catchcopy-api-0002/VariablesCatchcopy.h14
-rwxr-xr-xtest-client-catchcopy/catchcopy-api-0002/documentation.dox31
-rw-r--r--test-client-catchcopy/icon.icobin0 -> 101758 bytes
-rw-r--r--test-client-catchcopy/images/dialog-ok-apply.pngbin0 -> 1977 bytes
-rwxr-xr-xtest-client-catchcopy/images/download.pngbin0 -> 3284 bytes
-rw-r--r--test-client-catchcopy/images/main.pngbin0 -> 621 bytes
-rw-r--r--test-client-catchcopy/images/process-stop.pngbin0 -> 2780 bytes
-rw-r--r--test-client-catchcopy/images/tools-report-bug.pngbin0 -> 3329 bytes
-rwxr-xr-xtest-client-catchcopy/images/upload.pngbin0 -> 3193 bytes
-rw-r--r--test-client-catchcopy/main.cpp10
-rw-r--r--test-client-catchcopy/mainwindow.cpp305
-rw-r--r--test-client-catchcopy/mainwindow.h68
-rw-r--r--test-client-catchcopy/mainwindow.ui441
-rwxr-xr-xtest-client-catchcopy/resources-windows.rc2
-rw-r--r--test-client-catchcopy/resources.qrc10
-rw-r--r--test-client-catchcopy/test-client-catchcopy.pro24
-rw-r--r--test/button.pngbin0 -> 3962 bytes
-rw-r--r--test/button.xcfbin0 -> 7496 bytes
-rw-r--r--test/chartarea/MainWindow.cpp26
-rw-r--r--test/chartarea/MainWindow.h26
-rw-r--r--test/chartarea/MainWindow.ui49
-rw-r--r--test/chartarea/chartarea.pro35
-rw-r--r--test/chartarea/main.cpp11
-rw-r--r--test/chartarea/widget.cpp134
-rw-r--r--test/chartarea/widget.h49
-rw-r--r--test/darkbutton/DarkButton.cpp99
-rw-r--r--test/darkbutton/DarkButton.h22
-rw-r--r--test/darkbutton/MainWindow.cpp41
-rw-r--r--test/darkbutton/MainWindow.h26
-rw-r--r--test/darkbutton/MainWindow.ui26
-rw-r--r--test/darkbutton/cancelDarkD.pngbin0 -> 151 bytes
-rw-r--r--test/darkbutton/cancelDarkE.pngbin0 -> 473 bytes
-rw-r--r--test/darkbutton/darkButton.pngbin0 -> 3969 bytes
-rw-r--r--test/darkbutton/darkButtonOver.pngbin0 -> 4286 bytes
-rw-r--r--test/darkbutton/darkButtonPushed.pngbin0 -> 3903 bytes
-rw-r--r--test/darkbutton/darkbutton.pro38
-rw-r--r--test/darkbutton/main.cpp11
-rw-r--r--test/darkbutton/res.qrc9
-rw-r--r--test/progressbardark/MainWindow.cpp32
-rw-r--r--test/progressbardark/MainWindow.h26
-rw-r--r--test/progressbardark/MainWindow.ui26
-rw-r--r--test/progressbardark/ProgressBarDark.cpp50
-rw-r--r--test/progressbardark/ProgressBarDark.h16
-rw-r--r--test/progressbardark/main.cpp11
-rw-r--r--test/progressbardark/progressBarin.pngbin0 -> 4487 bytes
-rw-r--r--test/progressbardark/progressBarout.pngbin0 -> 1287 bytes
-rw-r--r--test/progressbardark/progressbardark.pro38
-rw-r--r--test/progressbardark/progressbardark.pro.user.4.8-pre1336
-rw-r--r--test/progressbardark/res.qrc6
-rw-r--r--test/radialmap/Config.cpp31
-rw-r--r--test/radialmap/Config.h45
-rw-r--r--test/radialmap/MainWindow.cpp81
-rw-r--r--test/radialmap/MainWindow.h29
-rw-r--r--test/radialmap/MainWindow.ui46
-rw-r--r--test/radialmap/fileTree.cpp54
-rw-r--r--test/radialmap/fileTree.h157
-rw-r--r--test/radialmap/main.cpp11
-rw-r--r--test/radialmap/radialMap/labels.cpp317
-rw-r--r--test/radialmap/radialMap/map.cpp413
-rw-r--r--test/radialmap/radialMap/map.h84
-rw-r--r--test/radialmap/radialMap/radialMap.h109
-rw-r--r--test/radialmap/radialMap/sincos.h45
-rw-r--r--test/radialmap/radialMap/widget.cpp191
-rw-r--r--test/radialmap/radialMap/widget.h112
-rw-r--r--test/radialmap/radialMap/widgetEvents.cpp212
-rw-r--r--test/radialmap/radialmap.pro46
-rw-r--r--tools/to-pack/data/gentoo/ultracopier.ebuild118
-rwxr-xr-xtools/to-pack/data/qm-translation/ar.qmbin0 -> 33910 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/cs.qmbin0 -> 319922 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/da.qmbin0 -> 119836 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/de.qmbin0 -> 172 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/es.qmbin0 -> 82411 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/fa.qmbin0 -> 293111 bytes
-rw-r--r--tools/to-pack/data/qm-translation/fr.qmbin0 -> 255133 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/gl.qmbin0 -> 323577 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/he.qmbin0 -> 25666 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/hu.qmbin0 -> 272162 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/ja.qmbin0 -> 247883 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/ko.qmbin0 -> 241968 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/lt.qmbin0 -> 165373 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/pl.qmbin0 -> 316163 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/pt.qmbin0 -> 70321 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/ru.qmbin0 -> 183 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/sk.qmbin0 -> 176 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/sl.qmbin0 -> 228418 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/sv.qmbin0 -> 65848 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/uk.qmbin0 -> 216013 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/zh_CN.qmbin0 -> 117337 bytes
-rwxr-xr-xtools/to-pack/data/qm-translation/zh_TW.qmbin0 -> 117253 bytes
-rwxr-xr-x[-rw-r--r--]ultracopier.dox0
-rwxr-xr-x[-rw-r--r--]ultracopier.pro142
-rwxr-xr-xultracopier.pro.user.4.9-pre1601
981 files changed, 107279 insertions, 29372 deletions
diff --git a/COPYING b/COPYING
index 818433e..818433e 100644..100755
--- a/COPYING
+++ b/COPYING
diff --git a/CliParser.cpp b/CliParser.cpp
index a18e270..a18e270 100644..100755
--- a/CliParser.cpp
+++ b/CliParser.cpp
diff --git a/CliParser.h b/CliParser.h
index edcf115..edcf115 100644..100755
--- a/CliParser.h
+++ b/CliParser.h
diff --git a/CompilerInfo.h b/CompilerInfo.h
index 0ec1e08..c795fa3 100644..100755
--- a/CompilerInfo.h
+++ b/CompilerInfo.h
@@ -3,6 +3,8 @@
\author alpha_one_x86
\licence GPL3, see the file COPYING */
+#include <QObject>
+
/// \def COMPILERINFO the string to identify the compiler
#if defined(Q_CC_GNU)
#define COMPILERINFO std::string("GCC ")+std::to_string(__GNUC__)+"."+std::to_string(__GNUC_MINOR__)+"."+std::to_string(__GNUC_PATCHLEVEL__)
diff --git a/CopyEngineManager.cpp b/CopyEngineManager.cpp
index fc1ec95..61a1399 100644..100755
--- a/CopyEngineManager.cpp
+++ b/CopyEngineManager.cpp
@@ -10,7 +10,7 @@
#include "cpp11addition.h"
#ifdef ULTRACOPIER_PLUGIN_ALL_IN_ONE_DIRECT
-#include "plugins/CopyEngine/Ultracopier/CopyEngineFactory.h"
+#include "plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.h"
#endif
CopyEngineManager::CopyEngineManager(OptionDialog *optionDialog)
@@ -221,6 +221,7 @@ CopyEngineManager::returnCopyEngine CopyEngineManager::getCopyEngine(const Ultra
pluginList[index].intances.push_back(pluginList.at(index).factory->getInstance());
temp.engine=pluginList.at(index).intances.back();
temp.canDoOnlyCopy=pluginList.at(index).canDoOnlyCopy;
+ temp.havePause=pluginList.at(index).factory->havePause();
temp.type=pluginList.at(index).type;
temp.transferListOperation=pluginList.at(index).transferListOperation;
return temp;
@@ -262,10 +263,13 @@ CopyEngineManager::returnCopyEngine CopyEngineManager::getCopyEngine(const Ultra
temp.engine=NULL;
return temp;
}
- pluginList[index].intances.push_back(pluginList.at(index).factory->getInstance());
+ PluginInterface_CopyEngineFactory * factory=pluginList.at(index).factory;
+ PluginInterface_CopyEngine * newIntance=factory->getInstance();
+ pluginList[index].intances.push_back(newIntance);
temp.engine=pluginList.at(index).intances.back();
temp.canDoOnlyCopy=pluginList.at(index).canDoOnlyCopy;
temp.type=pluginList.at(index).type;
+ temp.havePause=factory->havePause();
temp.transferListOperation=pluginList.at(index).transferListOperation;
return temp;
}
diff --git a/CopyEngineManager.h b/CopyEngineManager.h
index 904508c..4966004 100644..100755
--- a/CopyEngineManager.h
+++ b/CopyEngineManager.h
@@ -34,6 +34,7 @@ public:
{
PluginInterface_CopyEngine * engine; ///< The copy engine instance
bool canDoOnlyCopy; ///< true if can do only the copy (not move)
+ bool havePause;
Ultracopier::CopyType type; ///< Kind of copy what it can do
Ultracopier::TransferListOperation transferListOperation;
};
diff --git a/CopyListener.cpp b/CopyListener.cpp
index 31517d2..f357303 100644..100755
--- a/CopyListener.cpp
+++ b/CopyListener.cpp
@@ -16,6 +16,7 @@
CopyListener::CopyListener(OptionDialog *optionDialog)
{
+ nextOrderId=1;
stopIt=false;
this->optionDialog=optionDialog;
pluginLoader=new PluginLoaderCore(optionDialog);
diff --git a/CopyListener.h b/CopyListener.h
index 02a123c..02a123c 100644..100755
--- a/CopyListener.h
+++ b/CopyListener.h
diff --git a/Core.cpp b/Core.cpp
index eab1a8c..25f26eb 100644..100755
--- a/Core.cpp
+++ b/Core.cpp
@@ -22,6 +22,9 @@ Core::Core(CopyEngineManager *copyEngineList)
connect(ThemesManager::themesManager, &ThemesManager::theThemeNeedBeUnloaded, this, &Core::unloadInterface);
connect(ThemesManager::themesManager, &ThemesManager::theThemeIsReloaded, this, &Core::loadInterface, Qt::QueuedConnection);
connect(&forUpateInformation, &QTimer::timeout, this, &Core::periodicSynchronization);
+ #ifndef NOAUDIO
+ audio=nullptr;
+ #endif
}
Core::~Core()
@@ -35,6 +38,13 @@ Core::~Core()
delete copyList.at(index).engine;
index++;
}
+ #ifndef NOAUDIO
+ if(audio!=nullptr)
+ {
+ audio->stop();
+ delete audio;
+ }
+ #endif
}
void Core::newCopyWithoutDestination(const uint32_t &orderId,const std::vector<std::string> &protocolsUsedForTheSources,const std::vector<std::string> &sources)
@@ -355,6 +365,7 @@ int Core::connectCopyEngine(const Ultracopier::CopyMode &mode,bool ignoreMode,co
newItem.action=Ultracopier::Idle;
newItem.lastProgression=0;//store the real byte transfered, used in time remaining calculation
newItem.isPaused=false;
+ newItem.havePause=returnInformations.havePause;
newItem.isRunning=false;
newItem.haveError=false;
newItem.lastConditionalSync.start();
@@ -461,7 +472,7 @@ void Core::doneTime(const std::vector<std::pair<uint64_t,uint32_t> > &timeList)
{
case Ultracopier::RemainingTimeAlgo_Logarithmic:
if(copyInstance.remainingTimeLogarithmicValue.size()<ULTRACOPIER_MAXREMAININGTIMECOL)
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"bug, copyInstance.remainingTimeLogarithmicValue.size() "+std::to_string(copyInstance.remainingTimeLogarithmicValue.size())+" <ULTRACOPIER_MAXREMAININGTIMECOL");
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"bug, copyInstance.remainingTimeLogarithmicValue.size() "+std::to_string(copyInstance.remainingTimeLogarithmicValue.size())+" <ULTRACOPIER_MAXREMAININGTIMECOL");
else
{
unsigned int sub_index=0;
@@ -472,7 +483,7 @@ void Core::doneTime(const std::vector<std::pair<uint64_t,uint32_t> > &timeList)
RemainingTimeLogarithmicColumn &remainingTimeLogarithmicColumn=copyInstance.remainingTimeLogarithmicValue[col];
if(copyInstance.remainingTimeLogarithmicValue.size()<=col)
{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"bug, copyInstance.remainingTimeLogarithmicValue.size() "+std::to_string(copyInstance.remainingTimeLogarithmicValue.size())+" < col %2"+std::to_string(col));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"bug, copyInstance.remainingTimeLogarithmicValue.size() "+std::to_string(copyInstance.remainingTimeLogarithmicValue.size())+" < col %2"+std::to_string(col));
break;
}
else
@@ -481,7 +492,7 @@ void Core::doneTime(const std::vector<std::pair<uint64_t,uint32_t> > &timeList)
{
remainingTimeLogarithmicColumn.lastProgressionSpeed.push_back(static_cast<unsigned int>(timeUnit.first/timeUnit.second));
if(remainingTimeLogarithmicColumn.lastProgressionSpeed.size()>ULTRACOPIER_MAXVALUESPEEDSTORED)
- remainingTimeLogarithmicColumn.lastProgressionSpeed.pop_back();
+ remainingTimeLogarithmicColumn.lastProgressionSpeed.erase(remainingTimeLogarithmicColumn.lastProgressionSpeed.begin());
}
}
sub_index++;
@@ -536,6 +547,25 @@ void Core::actionInProgess(const Ultracopier::EngineActionInProgress &action)
copyList[index].orderId.clear();
resetSpeedDetected(index);
}
+ #ifndef NOAUDIO
+ if(action==Ultracopier::Idle)
+ if(stringtobool(OptionEngine::optionEngine->getOptionValue("Ultracopier","soundWhenFinish")))
+ {
+ const std::string newSoundFile=OptionEngine::optionEngine->getOptionValue("Ultracopier","soundFile");
+ if(newSoundFile!=soundFile)
+ {
+ if(audio!=nullptr)
+ delete audio;
+ audio=static_cast<QAudioOutput *>(FacilityEngine::facilityEngine.prepareOpusAudio(newSoundFile,buffer));
+ soundFile=newSoundFile;
+ }
+ if(audio!=nullptr)
+ {
+ buffer.seek(0);
+ audio->start(&buffer);
+ }
+ }
+ #endif
}
else
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to locate the interface sender");
@@ -702,14 +732,17 @@ void Core::connectInterfaceAndSync(const unsigned int &index)
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"error at connect, the interface can not work correctly: "+std::to_string(index)+": "+std::to_string((uint64_t)sender())+" for pushGeneralProgression()");
if(!connect(currentCopyInstance.engine,&PluginInterface_CopyEngine::pushGeneralProgression, this,&Core::pushGeneralProgression, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"error at connect, the interface can not work correctly: "+std::to_string(index)+": "+std::to_string((uint64_t)sender())+" for pushGeneralProgression() for this");
- if(!connect(currentCopyInstance.engine,&PluginInterface_CopyEngine::errorToRetry, currentCopyInstance.interface,&PluginInterface_Themes::errorToRetry, Qt::QueuedConnection))
+ if(!connect(currentCopyInstance.engine,&PluginInterface_CopyEngine::errorToRetry, currentCopyInstance.interface,&PluginInterface_Themes::errorToRetry, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"error at connect, the interface can not work correctly: "+std::to_string(index)+": "+std::to_string((uint64_t)sender())+" for errorToRetry() for this");
+ if(!connect(currentCopyInstance.engine,&PluginInterface_CopyEngine::doneTime, currentCopyInstance.interface,&PluginInterface_Themes::doneTime,Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"error at connect, the engine can not work correctly: "+std::to_string(index)+": "+std::to_string((uint64_t)sender())+" for doneTime()");
currentCopyInstance.interface->setSupportSpeedLimitation(currentCopyInstance.engine->supportSpeedLimitation());
currentCopyInstance.interface->setCopyType(currentCopyInstance.type);
currentCopyInstance.interface->setTransferListOperation(currentCopyInstance.transferListOperation);
currentCopyInstance.interface->actionInProgess(currentCopyInstance.action);
currentCopyInstance.interface->isInPause(currentCopyInstance.isPaused);
+ currentCopyInstance.interface->havePause(currentCopyInstance.havePause);
if(currentCopyInstance.haveError)
currentCopyInstance.interface->errorDetected();
QWidget *tempWidget=currentCopyInstance.interface->getOptionsEngineWidget();
@@ -848,8 +881,12 @@ void Core::periodicSynchronizationWithIndex(const int &index)
average_speed+=remainingTimeLogarithmicColumn.lastProgressionSpeed.at(temp_loop_index);
temp_loop_index++;
}
- average_speed/=remainingTimeLogarithmicColumn.lastProgressionSpeed.size();
- remainingTimeValue+=remainingSize/average_speed;
+ if(!remainingTimeLogarithmicColumn.lastProgressionSpeed.empty())
+ {
+ average_speed/=remainingTimeLogarithmicColumn.lastProgressionSpeed.size();
+ if(average_speed!=0)
+ remainingTimeValue+=remainingSize/average_speed;
+ }
}
//fallback
else
@@ -860,7 +897,10 @@ void Core::periodicSynchronizationWithIndex(const int &index)
if(currentCopyInstance.totalProgression==0 || currentCopyInstance.currentProgression==0)
remainingTimeValue+=1;
else if((currentCopyInstance.totalProgression-currentCopyInstance.currentProgression)>1024)
- remainingTimeValue+=remainingSize/totAverageSpeed;
+ {
+ if(totAverageSpeed!=0)
+ remainingTimeValue+=remainingSize/totAverageSpeed;
+ }
}
else
remainingTimeValue+=1;
diff --git a/Core.h b/Core.h
index cd8733e..8b40ae3 100644..100755
--- a/Core.h
+++ b/Core.h
@@ -14,6 +14,10 @@
#include <QTime>
#include <QFile>
#include <QUrl>
+#ifndef NOAUDIO
+#include <QBuffer>
+#include <QAudioOutput>
+#endif
#include "Environment.h"
#include "StructEnumDefinition.h"
@@ -64,6 +68,7 @@ class Core : public QObject
std::string collisionAction;
std::string errorAction;
bool isPaused;
+ bool havePause;
bool isRunning;
Ultracopier::CopyType type;
Ultracopier::TransferListOperation transferListOperation;
@@ -129,6 +134,12 @@ class Core : public QObject
LogThread log;///< To save the log like mkpath, rmpath, error, copy, ...
uint64_t realByteTransfered;
+ #ifndef NOAUDIO
+ QBuffer buffer;
+ QAudioOutput *audio;
+ std::string soundFile;
+ #endif
+
static uint8_t fileCatNumber(uint64_t size);
signals:
void copyFinished(const uint32_t & orderId,bool withError) const;
diff --git a/DebugEngine.cpp b/DebugEngine.cpp
index 2168210..336b138 100644..100755
--- a/DebugEngine.cpp
+++ b/DebugEngine.cpp
@@ -14,11 +14,15 @@
#include "DebugEngine.h"
#include "ExtraSocket.h"
#include "cpp11addition.h"
+#include "FacilityEngine.h"
#ifdef WIN32
# define __func__ __FUNCTION__
#endif
+#ifdef ULTRACOPIER_DEBUGCONSOLE
+#undef ULTRACOPIER_DEBUGCONSOLE
+#endif
/// \brief The local macro: ULTRACOPIER_DEBUGCONSOLE
#if defined (__FILE__) && defined (__LINE__)
# define ULTRACOPIER_DEBUGCONSOLE(a,b) addDebugInformation(a,__func__,b,__FILE__,__LINE__)
@@ -59,7 +63,7 @@ DebugEngine::DebugEngine()
debugHtmlContent+="</style>";
debugHtmlContent+="<title>";
debugHtmlContent+="Ultracopier";
- debugHtmlContent+=" "+std::string(ULTRACOPIER_VERSION)+" "+ULTRACOPIER_PLATFORM_NAME.toStdString()+", debug report</title>";
+ debugHtmlContent+=" "+FacilityEngine::version()+" "+ULTRACOPIER_PLATFORM_NAME.toStdString()+", debug report</title>";
debugHtmlContent+="</head>";
debugHtmlContent+="<body>";
debugHtmlContent+="<table>";
@@ -335,7 +339,7 @@ void DebugEngine::addDebugInformation(const DebugLevel_custom &level,const std::
if(addDebugInformationCallNumber<ULTRACOPIER_DEBUG_MAX_GUI_LINE)
{
addDebugInformationCallNumber++;
- DebugModel::debugModel->addDebugInformation(startTime.elapsed(),level,function,text,file,static_cast<const unsigned int>(ligne),location);
+ DebugModel::debugModel->addDebugInformation(startTime.elapsed(),level,function,text,file,static_cast<unsigned int>(ligne),location);
}
}
}
diff --git a/DebugEngine.h b/DebugEngine.h
index 7a75264..7a75264 100644..100755
--- a/DebugEngine.h
+++ b/DebugEngine.h
diff --git a/DebugEngineMacro.h b/DebugEngineMacro.h
index 4785067..ab53c55 100644..100755
--- a/DebugEngineMacro.h
+++ b/DebugEngineMacro.h
@@ -12,6 +12,9 @@
#include "Variable.h"
+#ifdef ULTRACOPIER_DEBUGCONSOLE
+#undef ULTRACOPIER_DEBUGCONSOLE
+#endif
/// \brief Macro for the debug log
#ifdef ULTRACOPIER_DEBUG
# include "DebugEngine.h"
diff --git a/DebugModel.cpp b/DebugModel.cpp
index 5afa3ba..5afa3ba 100644..100755
--- a/DebugModel.cpp
+++ b/DebugModel.cpp
diff --git a/Environment.h b/Environment.h
index d653c5f..d653c5f 100644..100755
--- a/Environment.h
+++ b/Environment.h
diff --git a/EventDispatcher.cpp b/EventDispatcher.cpp
index c3fc61f..1e37592 100644..100755
--- a/EventDispatcher.cpp
+++ b/EventDispatcher.cpp
@@ -28,8 +28,6 @@
#include <tchar.h>
#include <stdio.h>
#include <strsafe.h>
- typedef void (WINAPI *PGNSI) (LPSYSTEM_INFO);
- typedef BOOL (WINAPI *PGPI) (DWORD, DWORD, DWORD, DWORD, PDWORD);
#endif
#ifdef Q_OS_MAC
#include <QStringList>
@@ -51,6 +49,7 @@ EventDispatcher::EventDispatcher()
qRegisterMetaType<std::vector<Ultracopier::ProgressionItem> >("std::vector<Ultracopier::ProgressionItem>");
qRegisterMetaType<std::vector<Ultracopier::ReturnActionOnCopyList> >("std::vector<Ultracopier::ReturnActionOnCopyList>");
qRegisterMetaType<std::vector<std::string> >("std::vector<std::string>");
+ qRegisterMetaType<QLocalSocket::LocalSocketError >("QLocalSocket::LocalSocketError");
copyServer=new CopyListener(&optionDialog);
if(!connect(&localListener, &LocalListener::cli, &cliParser, &CliParser::cli,Qt::QueuedConnection))
@@ -113,7 +112,7 @@ EventDispatcher::EventDispatcher()
#ifdef __STDC_VERSION__
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"__STDC_VERSION__: "+std::to_string(__STDC_VERSION__));
#endif
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,std::string("ULTRACOPIER_VERSION: ")+ULTRACOPIER_VERSION);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,std::string("ULTRACOPIER_VERSION: ")+FacilityEngine::version());
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,std::string("Qt version: ")+qVersion()+" "+std::to_string(QT_VERSION));
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,std::string("ULTRACOPIER_PLATFORM_NAME: ")+ULTRACOPIER_PLATFORM_NAME.toStdString());
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Application path: "+QCoreApplication::applicationFilePath().toStdString()+" "+std::to_string(QCoreApplication::applicationPid()));
@@ -139,7 +138,24 @@ EventDispatcher::EventDispatcher()
int index=0;
while(index<mountedVolumesList.size())
{
+ #ifdef Q_OS_WIN32
+ const int typeint=GetDriveTypeA(mountedVolumesList.at(index).rootPath().toStdString().c_str());
+ std::string type("Unknown type ("+std::to_string(typeint)+")");
+ switch(typeint)
+ {
+ case 0: type="Cannot be determined";break;
+ case 1: type="Invalid root path/Not available";break;
+ case 2: type="Removable";break;
+ case 3: type="Fixed";break;
+ case 4: type="Network";break;
+ case 5: type="CD-ROM";break;
+ case 6: type="RAMDISK";break;
+ default:break;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"mountSysPoint: "+mountedVolumesList.at(index).rootPath().toStdString()+" "+type);
+ #else
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"mountSysPoint: "+mountedVolumesList.at(index).rootPath().toStdString());
+ #endif
index++;
}
if(mountedVolumesList.isEmpty())
@@ -151,11 +167,11 @@ EventDispatcher::EventDispatcher()
lunchInitFunction.setSingleShot(true);
connect(&lunchInitFunction,&QTimer::timeout,this,&EventDispatcher::initFunction,Qt::QueuedConnection);
lunchInitFunction.start();
- if(OptionEngine::optionEngine->getOptionValue("Ultracopier","Last_version_used")!="na" && OptionEngine::optionEngine->getOptionValue("Ultracopier","Last_version_used")!=ULTRACOPIER_VERSION)
+ if(OptionEngine::optionEngine->getOptionValue("Ultracopier","Last_version_used")!="na" && OptionEngine::optionEngine->getOptionValue("Ultracopier","Last_version_used")!=FacilityEngine::version())
{
//then ultracopier have been updated
}
- OptionEngine::optionEngine->setOptionValue("Ultracopier","Last_version_used",ULTRACOPIER_VERSION);
+ OptionEngine::optionEngine->setOptionValue("Ultracopier","Last_version_used",FacilityEngine::version());
unsigned int a=stringtouint32(OptionEngine::optionEngine->getOptionValue("Ultracopier","ActionOnManualOpen"));
if(a>2)
OptionEngine::optionEngine->setOptionValue("Ultracopier","ActionOnManualOpen","1");
@@ -393,10 +409,7 @@ std::string EventDispatcher::GetOSDisplayString()
QString Os;
OSVERSIONINFOEX osvi;
SYSTEM_INFO si;
- PGNSI pGNSI;
- PGPI pGPI;
BOOL bOsVersionInfoEx;
- DWORD dwType;
ZeroMemory(&si, sizeof(SYSTEM_INFO));
ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
@@ -406,15 +419,7 @@ std::string EventDispatcher::GetOSDisplayString()
if(bOsVersionInfoEx == 0)
return "Os detection blocked";
-
- // Call GetNativeSystemInfo if supported or GetSystemInfo otherwise.
-
- pGNSI = (PGNSI) GetProcAddress(
- GetModuleHandle(TEXT("kernel32.dll")),
- "GetNativeSystemInfo");
- if(NULL != pGNSI)
- pGNSI(&si);
- else GetSystemInfo(&si);
+ GetNativeSystemInfo(&si);
if(VER_PLATFORM_WIN32_NT==osvi.dwPlatformId && osvi.dwMajorVersion>4)
{
@@ -443,70 +448,6 @@ std::string EventDispatcher::GetOSDisplayString()
else Os+=QStringLiteral("Windows Server (dwMajorVersion: %1, dwMinorVersion: %2)").arg(osvi.dwMinorVersion).arg(osvi.dwMinorVersion);
break;
}
-
- pGPI = (PGPI) GetProcAddress(
- GetModuleHandle(TEXT("kernel32.dll")),
- "GetProductInfo");
-
- pGPI(osvi.dwMajorVersion, osvi.dwMinorVersion, 0, 0, &dwType);
-
- switch(dwType)
- {
- case PRODUCT_ULTIMATE:
- Os+=QStringLiteral("Ultimate Edition");
- break;
- case PRODUCT_PROFESSIONAL:
- Os+=QStringLiteral("Professional");
- break;
- case PRODUCT_HOME_PREMIUM:
- Os+=QStringLiteral("Home Premium Edition");
- break;
- case PRODUCT_HOME_BASIC:
- Os+=QStringLiteral("Home Basic Edition");
- break;
- case PRODUCT_ENTERPRISE:
- Os+=QStringLiteral("Enterprise Edition");
- break;
- case PRODUCT_BUSINESS:
- Os+=QStringLiteral("Business Edition");
- break;
- case PRODUCT_STARTER:
- Os+=QStringLiteral("Starter Edition");
- break;
- case PRODUCT_CLUSTER_SERVER:
- Os+=QStringLiteral("Cluster Server Edition");
- break;
- case PRODUCT_DATACENTER_SERVER:
- Os+=QStringLiteral("Datacenter Edition");
- break;
- case PRODUCT_DATACENTER_SERVER_CORE:
- Os+=QStringLiteral("Datacenter Edition (core installation)");
- break;
- case PRODUCT_ENTERPRISE_SERVER:
- Os+=QStringLiteral("Enterprise Edition");
- break;
- case PRODUCT_ENTERPRISE_SERVER_CORE:
- Os+=QStringLiteral("Enterprise Edition (core installation)");
- break;
- case PRODUCT_ENTERPRISE_SERVER_IA64:
- Os+=QStringLiteral("Enterprise Edition for Itanium-based Systems");
- break;
- case PRODUCT_SMALLBUSINESS_SERVER:
- Os+=QStringLiteral("Small Business Server");
- break;
- case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:
- Os+=QStringLiteral("Small Business Server Premium Edition");
- break;
- case PRODUCT_STANDARD_SERVER:
- Os+=QStringLiteral("Standard Edition");
- break;
- case PRODUCT_STANDARD_SERVER_CORE:
- Os+=QStringLiteral("Standard Edition (core installation)");
- break;
- case PRODUCT_WEB_SERVER:
- Os+=QStringLiteral("Web Server Edition");
- break;
- }
}
else if(osvi.dwMajorVersion==5)
{
diff --git a/EventDispatcher.h b/EventDispatcher.h
index 77b1948..77b1948 100644..100755
--- a/EventDispatcher.h
+++ b/EventDispatcher.h
diff --git a/ExtraSocket.cpp b/ExtraSocket.cpp
index ef196fa..ef196fa 100644..100755
--- a/ExtraSocket.cpp
+++ b/ExtraSocket.cpp
diff --git a/ExtraSocket.h b/ExtraSocket.h
index c8d44c5..c8d44c5 100644..100755
--- a/ExtraSocket.h
+++ b/ExtraSocket.h
diff --git a/FacilityEngine.cpp b/FacilityEngine.cpp
index 185492a..b96c932 100644..100755
--- a/FacilityEngine.cpp
+++ b/FacilityEngine.cpp
@@ -13,6 +13,11 @@
#endif
#include <windows.h>
#endif
+#ifndef NOAUDIO
+#include "opusfile/opusfile.h"
+#include <QAudioOutput>
+#include <QCoreApplication>
+#endif
FacilityEngine FacilityEngine::facilityEngine;
@@ -73,6 +78,7 @@ void FacilityEngine::retranslate()
translations["Copying"]=tr("Copying").toStdString();
translations["Listing and copying"]=tr("Listing and copying").toStdString();
translations["Time remaining:"]=tr("Time remaining:").toStdString();
+ translations["Remaining:"]=tr("Remaining:").toStdString();
//for copy engine
translations["Ask"]=tr("Ask").toStdString();
translations["Skip"]=tr("Skip").toStdString();
@@ -230,21 +236,29 @@ std::string FacilityEngine::simplifiedRemainingTime(const uint32_t &seconds) con
/// \brief Return ultimate url, empty is not found or already ultimate
std::string FacilityEngine::ultimateUrl() const
{
+ #ifndef ULTRACOPIER_LITTLE
if(ProductKey::productKey->isUltimate())
return std::string();
else
{
- #if defined(Q_OS_WIN32) || defined(Q_OS_MAC)
+ #if ! defined(Q_OS_LINUX)
return "https://shop.first-world.info/";
#else
return std::string();
#endif
}
+ #else
+ return std::string();
+ #endif
}
bool FacilityEngine::isUltimate() const
{
+ #ifndef ULTRACOPIER_LITTLE
return ProductKey::productKey->isUltimate();
+ #else
+ return true;
+ #endif
}
/// \brief Return the software name
@@ -256,3 +270,90 @@ std::string FacilityEngine::softwareName() const
return "Ultracopier";
#endif
}
+
+/// \brief return audio if created from opus file, nullptr if failed
+void *FacilityEngine::prepareOpusAudio(const std::string &file,QBuffer &buffer) const
+{
+ #ifndef NOAUDIO
+ if(file.empty())
+ return nullptr;
+
+ QAudioOutput* audio;
+ QAudioFormat format;
+ format.setSampleRate(48000);
+ format.setChannelCount(2);
+ format.setSampleSize(16);
+ format.setCodec("audio/pcm");
+ format.setByteOrder(QAudioFormat::LittleEndian);
+ format.setSampleType(QAudioFormat::SignedInt);
+
+ QAudioDeviceInfo info(QAudioDeviceInfo::defaultOutputDevice());
+ if (!info.isFormatSupported(format)) {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"raw audio format not supported by backend, cannot play audio.");
+ return nullptr;
+ }
+ audio = new QAudioOutput(format);
+ buffer.open(QBuffer::ReadWrite);
+
+ int ret;
+ std::string path=file;
+ if(path.find("/") == std::string::npos && path.find("\\") == std::string::npos)
+ {
+ QString appPath=QCoreApplication::applicationDirPath();
+ if(appPath.endsWith("/") || appPath.endsWith("\\"))
+ path=appPath.toStdString()+path;
+ else
+ path=appPath.toStdString()+"/"+path;
+ }
+ OggOpusFile *of=op_open_file(file.c_str(),&ret);
+ if(of==NULL) {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Failed to open file"+file+", "+std::to_string(ret));
+ return nullptr;
+ }
+ ogg_int64_t pcm_offset;
+ ogg_int64_t nsamples;
+ nsamples=0;
+ pcm_offset=op_pcm_tell(of);
+ if(pcm_offset!=0)
+ fprintf(stderr,"Non-zero starting PCM offset: %li\n",(long)pcm_offset);
+ for(;;) {
+ ogg_int64_t next_pcm_offset;
+ opus_int16 pcm[120*48*2];
+ unsigned char out[120*48*2*2];
+ int si;
+ ret=op_read_stereo(of,pcm,sizeof(pcm)/sizeof(*pcm));
+ if(ret==OP_HOLE) {
+ fprintf(stderr,"\nHole detected! Corrupt file segment?\n");
+ continue;
+ }
+ else if(ret<0) {
+ fprintf(stderr,"\nError decoding '%s': %i\n","file.opus",ret);
+ ret=EXIT_FAILURE;
+ break;
+ }
+ next_pcm_offset=op_pcm_tell(of);
+ pcm_offset=next_pcm_offset;
+ if(ret<=0) {
+ ret=EXIT_SUCCESS;
+ break;
+ }
+ for(si=0;si<2*ret;si++) { /// Ensure the data is little-endian before writing it out.
+ out[2*si+0]=(unsigned char)(pcm[si]&0xFF);
+ out[2*si+1]=(unsigned char)(pcm[si]>>8&0xFF);
+ }
+ buffer.write(reinterpret_cast<char *>(out),sizeof(*out)*4*ret);
+ nsamples+=ret;
+ }
+ if(ret==EXIT_SUCCESS)
+ fprintf(stderr,"\nDone: played ");
+ op_free(of);
+
+ buffer.seek(0);
+ return audio;
+ // audio->start(&buffer); -> do out of this function
+ #else
+ (void)file;
+ (void)buffer;
+ return nullptr;
+ #endif
+}
diff --git a/FacilityEngine.h b/FacilityEngine.h
index ce4bb36..fb93876 100644..100755
--- a/FacilityEngine.h
+++ b/FacilityEngine.h
@@ -47,7 +47,10 @@ public:
static std::string separator();
/// \brief return if is ultimate
bool isUltimate() const;
+ /// \brief return audio if created from opus file, nullptr if failed
+ void/*casted to #ifndef QAudioOutput*/* prepareOpusAudio(const std::string &file,QBuffer &buffer) const;
+ static std::string version();
static FacilityEngine facilityEngine;
private:
//undirect translated string
diff --git a/FacilityEngineVersion.cpp b/FacilityEngineVersion.cpp
new file mode 100755
index 0000000..5fe36f6
--- /dev/null
+++ b/FacilityEngineVersion.cpp
@@ -0,0 +1,7 @@
+#include "FacilityEngine.h"
+#include "Version.h"
+
+std::string FacilityEngine::version()
+{
+ return ULTRACOPIER_VERSION;
+}
diff --git a/HelpDialog.cpp b/HelpDialog.cpp
index b52e402..584e76e 100644..100755
--- a/HelpDialog.cpp
+++ b/HelpDialog.cpp
@@ -5,6 +5,7 @@
#include "HelpDialog.h"
#include "ProductKey.h"
+#include "FacilityEngine.h"
#include <QTreeWidgetItem>
#include <QApplication>
@@ -32,11 +33,7 @@ HelpDialog::HelpDialog() :
#endif // ULTRACOPIER_DEBUG
//connect the about Qt
connect(ui->pushButtonAboutQt,&QPushButton::toggled,&QApplication::aboutQt);
- #ifdef ULTRACOPIER_MODE_SUPERCOPIER
- setWindowTitle(tr("About Supercopier"));
- #else
setWindowTitle(tr("About Ultracopier"));
- #endif
#ifndef ULTRACOPIER_INTERNET_SUPPORT
ui->checkUpdate->hide();
#endif
@@ -69,9 +66,9 @@ void HelpDialog::reloadTextValue()
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
QString text=ui->label_ultracopier->text();
if(ProductKey::productKey->isUltimate())
- text=text.replace(QStringLiteral("%1"),QStringLiteral("Ultimate %1").arg(ULTRACOPIER_VERSION));
+ text=text.replace(QStringLiteral("%1"),QStringLiteral("Ultimate %1").arg(QString::fromStdString(FacilityEngine::version())));
else
- text=text.replace(QStringLiteral("%1"),ULTRACOPIER_VERSION);
+ text=text.replace(QStringLiteral("%1"),QString::fromStdString(FacilityEngine::version()));
#ifdef ULTRACOPIER_MODE_SUPERCOPIER
text=text.replace(QStringLiteral("Ultracopier"),QStringLiteral("Supercopier"),Qt::CaseInsensitive);
#endif
diff --git a/HelpDialog.h b/HelpDialog.h
index cb47606..cb47606 100644..100755
--- a/HelpDialog.h
+++ b/HelpDialog.h
diff --git a/HelpDialog.ui b/HelpDialog.ui
index d3f3076..617041e 100644..100755
--- a/HelpDialog.ui
+++ b/HelpDialog.ui
@@ -91,6 +91,9 @@ This version is compiled as version: %1.</string>
<property name="text">
<string>Author: BRULE Herman Jacques Roger (alpha_one_x86), company: &lt;a href=&quot;http://www.confiared.com/&quot;&gt;confiared&lt;/a&gt;</string>
</property>
+ <property name="openExternalLinks">
+ <bool>true</bool>
+ </property>
</widget>
</item>
</layout>
diff --git a/InternetUpdater.cpp b/InternetUpdater.cpp
index 28b7215..c5d4ec9 100644..100755
--- a/InternetUpdater.cpp
+++ b/InternetUpdater.cpp
@@ -3,6 +3,7 @@
#include "OptionEngine.h"
#include "cpp11addition.h"
#include "ProductKey.h"
+#include "Version.h"
#ifdef ULTRACOPIER_INTERNET_SUPPORT
@@ -16,9 +17,9 @@ InternetUpdater::InternetUpdater(QObject *parent) :
{
connect(&newUpdateTimer,&QTimer::timeout,this,&InternetUpdater::downloadFile);
connect(&firstUpdateTimer,&QTimer::timeout,this,&InternetUpdater::downloadFile);
- newUpdateTimer.start(1000*3600);
+ newUpdateTimer.start(1000*3600*72);
firstUpdateTimer.setSingleShot(true);
- firstUpdateTimer.start(1000*60);
+ firstUpdateTimer.start(1000*600);
reply=NULL;
qnam=new QNetworkAccessManager();
}
@@ -55,9 +56,9 @@ void InternetUpdater::downloadFileInternal(const bool force)
#endif
std::string ultracopierVersion;
if(ProductKey::productKey->isUltimate())
- ultracopierVersion=name+" Ultimate/"+ULTRACOPIER_VERSION;
+ ultracopierVersion=name+" Ultimate/"+FacilityEngine::version();
else
- ultracopierVersion=name+"/"+ULTRACOPIER_VERSION;
+ ultracopierVersion=name+"/"+FacilityEngine::version();
#ifdef ULTRACOPIER_VERSION_PORTABLE
#ifdef ULTRACOPIER_PLUGIN_ALL_IN_ONE
ultracopierVersion+=" portable/all-in-one";
@@ -122,14 +123,14 @@ void InternetUpdater::httpFinished()
reply=NULL;
return;
}
- if(newVersion==ULTRACOPIER_VERSION)
+ if(newVersion.toStdString()==FacilityEngine::version())
{
reply->deleteLater();
reply=NULL;
emit noNewUpdate();
return;
}
- if(PluginsManager::compareVersion(newVersion.toStdString(),"<=",ULTRACOPIER_VERSION))
+ if(PluginsManager::compareVersion(newVersion.toStdString(),"<=",FacilityEngine::version()))
{
reply->deleteLater();
reply=NULL;
diff --git a/InternetUpdater.h b/InternetUpdater.h
index 7ed6abc..7ed6abc 100644..100755
--- a/InternetUpdater.h
+++ b/InternetUpdater.h
diff --git a/LanguagesManager.cpp b/LanguagesManager.cpp
index 136c590..136c590 100644..100755
--- a/LanguagesManager.cpp
+++ b/LanguagesManager.cpp
diff --git a/LanguagesManager.h b/LanguagesManager.h
index e7c715e..e7c715e 100644..100755
--- a/LanguagesManager.h
+++ b/LanguagesManager.h
diff --git a/LocalListener.cpp b/LocalListener.cpp
index 4a418aa..6983b10 100644..100755
--- a/LocalListener.cpp
+++ b/LocalListener.cpp
@@ -83,6 +83,7 @@ bool LocalListener::tryConnect()
int byteWriten =
#endif
localSocket.write(blockToSend);
+ localSocket.readAll();
#ifdef ULTRACOPIER_DEBUG
if(!localSocket.isValid())
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"localSocket is not valid!");
@@ -92,7 +93,7 @@ bool LocalListener::tryConnect()
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"blockToSend("+std::to_string(blockToSend.size())+
")!=byteWriten("+std::to_string(byteWriten)+")");
#endif // ULTRACOPIER_DEBUG
- if(localSocket.waitForBytesWritten(200))
+ if(localSocket.waitForBytesWritten())
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Block send correctly");
}
@@ -107,7 +108,12 @@ bool LocalListener::tryConnect()
}
while(block.size());
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"disconnect the socket");
+ localSocket.readAll();
+ localSocket.waitForBytesWritten();
+ QThread::msleep(50);
localSocket.disconnectFromServer();
+ QThread::msleep(50);
+ localSocket.waitForDisconnected();
return true;
}
else
diff --git a/LocalListener.h b/LocalListener.h
index 9f91a95..9f91a95 100644..100755
--- a/LocalListener.h
+++ b/LocalListener.h
diff --git a/LocalPluginOptions.cpp b/LocalPluginOptions.cpp
index 0834d9d..0834d9d 100644..100755
--- a/LocalPluginOptions.cpp
+++ b/LocalPluginOptions.cpp
diff --git a/LocalPluginOptions.h b/LocalPluginOptions.h
index 853181f..853181f 100644..100755
--- a/LocalPluginOptions.h
+++ b/LocalPluginOptions.h
diff --git a/LogThread.cpp b/LogThread.cpp
index 234ccbf..234ccbf 100644..100755
--- a/LogThread.cpp
+++ b/LogThread.cpp
diff --git a/LogThread.h b/LogThread.h
index 40f9154..40f9154 100644..100755
--- a/LogThread.h
+++ b/LogThread.h
diff --git a/OSSpecific.cpp b/OSSpecific.cpp
index ada8d68..60f5b92 100644..100755
--- a/OSSpecific.cpp
+++ b/OSSpecific.cpp
@@ -9,6 +9,12 @@ OSSpecific::OSSpecific(QWidget *parent) :
if(!QIcon::fromTheme(QStringLiteral("dialog-warning")).isNull())
setWindowIcon(QIcon::fromTheme(QStringLiteral("dialog-warning")));
updateText();
+ #if defined(ULTRACOPIER_PLUGIN_ALL_IN_ONE) || defined(ULTRACOPIER_MODE_SUPERCOPIER)
+ setMinimumWidth(0);
+ ui->widgetStyle->setVisible(false);
+ #endif
+ updateGeometry();
+ adjustSize();
}
OSSpecific::~OSSpecific()
@@ -20,7 +26,7 @@ void OSSpecific::updateText()
{
QString text;
#if defined(Q_OS_LINUX)
- text=tr("The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).<br />Ask the developer to support it.<br />You need do the copy/move manually.");
+ text=tr("The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).<br />Ask the developer of your file manager to support it.<br />You need do the copy/move manually.");
#elif defined(Q_OS_WIN32)
text=tr("Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).");
#elif defined(Q_OS_MAC)
@@ -52,7 +58,41 @@ bool OSSpecific::dontShowAgain()
return ui->dontShowAgain->isChecked();
}
+QString OSSpecific::theme()
+{
+ #if defined(ULTRACOPIER_PLUGIN_ALL_IN_ONE) || defined(ULTRACOPIER_MODE_SUPERCOPIER)
+ return "classic";
+ #else
+ switch (ui->comboBox->currentIndex()) {
+ default:
+ case 0:
+ return "classic";
+ case 1:
+ return "modern";
+ case 2:
+ return "supercopier";
+ }
+ #endif
+}
+
void OSSpecific::on_pushButton_clicked()
{
close();
}
+
+void OSSpecific::on_comboBox_currentIndexChanged(int index)
+{
+ switch(index)
+ {
+ default:
+ case 0:
+ ui->themePreview->setPixmap(QPixmap(":/ultracopier-oxygen.png"));
+ break;
+ case 1:
+ ui->themePreview->setPixmap(QPixmap(":/ultracopier-oxygen2.png"));
+ break;
+ case 2:
+ ui->themePreview->setPixmap(QPixmap(":/ultracopier-supercopier.png"));
+ break;
+ }
+}
diff --git a/OSSpecific.h b/OSSpecific.h
index 0b6ffcb..d9f3d0d 100644..100755
--- a/OSSpecific.h
+++ b/OSSpecific.h
@@ -17,9 +17,11 @@ public:
explicit OSSpecific(QWidget *parent = 0);
~OSSpecific();
bool dontShowAgain();
+ QString theme();
private slots:
void on_pushButton_clicked();
void updateText();
+ void on_comboBox_currentIndexChanged(int index);
protected slots:
void changeEvent(QEvent *e);
private:
diff --git a/OSSpecific.ui b/OSSpecific.ui
index 3d0d89e..2a76c69 100644..100755
--- a/OSSpecific.ui
+++ b/OSSpecific.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>600</width>
- <height>88</height>
+ <width>731</width>
+ <height>413</height>
</rect>
</property>
<property name="sizePolicy">
@@ -18,7 +18,7 @@
</property>
<property name="minimumSize">
<size>
- <width>500</width>
+ <width>380</width>
<height>0</height>
</size>
</property>
@@ -29,7 +29,126 @@
<iconset resource="resources/ultracopier-resources.qrc">
<normaloff>:/warning.png</normaloff>:/warning.png</iconset>
</property>
- <layout class="QVBoxLayout" name="verticalLayout">
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QWidget" name="widgetStyle" native="true">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <spacer name="horizontalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="themePreview">
+ <property name="minimumSize">
+ <size>
+ <width>360</width>
+ <height>150</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>360</width>
+ <height>150</height>
+ </size>
+ </property>
+ <property name="pixmap">
+ <pixmap resource="resources/ultracopier-resources.qrc">:/ultracopier-oxygen.png</pixmap>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_6">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QComboBox" name="comboBox">
+ <item>
+ <property name="text">
+ <string>Classic</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Modern</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Supercopier</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
<item>
<widget class="QLabel" name="label">
<property name="sizePolicy">
diff --git a/OptionDialog.cpp b/OptionDialog.cpp
index 4727501..64d5e13 100644..100755
--- a/OptionDialog.cpp
+++ b/OptionDialog.cpp
@@ -8,13 +8,20 @@
#include "OSSpecific.h"
#include "LanguagesManager.h"
#include "cpp11addition.h"
+#include "FacilityEngine.h"
#include <QDomElement>
#include <QFileDialog>
#include <QMessageBox>
+#ifndef NOAUDIO
+#include <QAudioOutput>
+#endif
OptionDialog::OptionDialog() :
ui(new Ui::OptionDialog)
+ #ifndef NOAUDIO
+ ,buffer(&data)
+ #endif
{
quit=false;
QStringList ultracopierArguments=QCoreApplication::arguments();
@@ -27,8 +34,8 @@ OptionDialog::OptionDialog() :
oSSpecific=NULL;
ui->setupUi(this);
ui->treeWidget->topLevelItem(0)->setSelected(true);
- ui->treeWidget->topLevelItem(4)->setTextColor(0,QColor(150, 150, 150, 255));
- ui->treeWidget->topLevelItem(5)->setTextColor(0,QColor(150, 150, 150, 255));
+ ui->treeWidget->topLevelItem(4)->setForeground(0,QColor(150, 150, 150, 255));
+ ui->treeWidget->topLevelItem(5)->setForeground(0,QColor(150, 150, 150, 255));
ui->treeWidget->expandAll();
ui->pluginList->expandAll();
number_of_listener=0;
@@ -402,10 +409,12 @@ void OptionDialog::loadOption()
newOptionValue("Ultracopier", "ActionOnManualOpen", OptionEngine::optionEngine->getOptionValue("Ultracopier","ActionOnManualOpen"));
newOptionValue("Ultracopier", "GroupWindowWhen", OptionEngine::optionEngine->getOptionValue("Ultracopier","GroupWindowWhen"));
newOptionValue("Ultracopier", "confirmToGroupWindows", OptionEngine::optionEngine->getOptionValue("Ultracopier","confirmToGroupWindows"));
- newOptionValue("Ultracopier", "displayOSSpecific", OptionEngine::optionEngine->getOptionValue("Ultracopier","displayOSSpecific"));
+ newOptionValue("Ultracopier", "displayOSSpecific2", OptionEngine::optionEngine->getOptionValue("Ultracopier","displayOSSpecific2"));
newOptionValue("Ultracopier", "checkTheUpdate", OptionEngine::optionEngine->getOptionValue("Ultracopier","checkTheUpdate"));
newOptionValue("Ultracopier", "remainingTimeAlgorithm", OptionEngine::optionEngine->getOptionValue("Ultracopier","remainingTimeAlgorithm"));
newOptionValue("Ultracopier", "portable", OptionEngine::optionEngine->getOptionValue("Ultracopier","portable"));
+ newOptionValue("Ultracopier", "soundFile", OptionEngine::optionEngine->getOptionValue("Ultracopier","soundFile"));
+ newOptionValue("Ultracopier", "soundWhenFinish", OptionEngine::optionEngine->getOptionValue("Ultracopier","soundWhenFinish"));
newOptionValue("Language", "Language", OptionEngine::optionEngine->getOptionValue("Language","Language"));
newOptionValue("Language", "Language_force", OptionEngine::optionEngine->getOptionValue("Language","Language_force"));
#ifndef ULTRACOPIER_VERSION_PORTABLE
@@ -447,7 +456,7 @@ void OptionDialog::loadOption()
allPluginsIsLoaded=true;
on_Ultracopier_current_theme_currentIndexChanged(ui->Ultracopier_current_theme->currentIndex());
- if(stringtobool(OptionEngine::optionEngine->getOptionValue("Ultracopier","displayOSSpecific")))
+ if(stringtobool(OptionEngine::optionEngine->getOptionValue("Ultracopier","displayOSSpecific2")))
{
if(!quit)
{
@@ -463,7 +472,11 @@ void OptionDialog::oSSpecificClosed()
if(oSSpecific==NULL)
return;
if(oSSpecific->dontShowAgain())
- OptionEngine::optionEngine->setOptionValue("Ultracopier","displayOSSpecific","false");
+ OptionEngine::optionEngine->setOptionValue("Ultracopier","displayOSSpecific2","false");
+ if(oSSpecific->theme()=="classic")
+ OptionEngine::optionEngine->setOptionValue("Themes","Ultracopier_current_theme","Oxygen");
+ else if(oSSpecific->theme()=="supercopier")
+ OptionEngine::optionEngine->setOptionValue("Themes","Ultracopier_current_theme","Supercopier");
delete oSSpecific;
oSSpecific=NULL;
}
@@ -585,10 +598,14 @@ void OptionDialog::newOptionValue(const std::string &group,const std::string &na
ui->GroupWindowWhen->setCurrentIndex(stringtoint32(value));
else if(name=="confirmToGroupWindows")
ui->confirmToGroupWindows->setChecked(stringtobool(value));
- else if(name=="displayOSSpecific")
+ else if(name=="displayOSSpecific2")
ui->DisplayOSWarning->setChecked(stringtobool(value));
else if(name=="checkTheUpdate")
ui->checkTheUpdate->setChecked(stringtobool(value));
+ else if(name=="soundFile")
+ ui->soundFile->setText(QString::fromStdString(value));
+ else if(name=="soundWhenFinish")
+ ui->soundWhenFinish->setChecked(stringtobool(value));
else if(name=="remainingTimeAlgorithm")
{
bool ok;
@@ -984,7 +1001,7 @@ void OptionDialog::on_DisplayOSWarning_clicked()
if(allPluginsIsLoaded)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
- OptionEngine::optionEngine->setOptionValue("Ultracopier","displayOSSpecific",booltostring(ui->DisplayOSWarning->isChecked()));
+ OptionEngine::optionEngine->setOptionValue("Ultracopier","displayOSSpecific2",booltostring(ui->DisplayOSWarning->isChecked()));
}
}
@@ -1036,3 +1053,40 @@ void OptionDialog::on_portable_toggled(bool)
else
QFile::remove(settingsFilePath+"/Ultracopier.conf");
}
+
+void OptionDialog::on_soundFile_editingFinished()
+{
+ if(allPluginsIsLoaded)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ OptionEngine::optionEngine->setOptionValue("Ultracopier","soundFile",ui->soundFile->text().toStdString());
+ }
+}
+
+void OptionDialog::on_soundWhenFinish_toggled(bool checked)
+{
+ if(allPluginsIsLoaded)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ OptionEngine::optionEngine->setOptionValue("Ultracopier","soundWhenFinish",std::to_string(checked));
+ }
+}
+
+void OptionDialog::on_playSound_clicked()
+{
+ #ifndef NOAUDIO
+ const std::string newSoundFile=ui->soundFile->text().toStdString();
+ buffer.seek(0);
+ data.clear();
+ if(!buffer.isOpen())
+ buffer.open(QIODevice::ReadWrite);
+ QAudioOutput *audio=static_cast<QAudioOutput *>(FacilityEngine::facilityEngine.prepareOpusAudio(newSoundFile,buffer));
+ if(audio!=nullptr)
+ {
+ buffer.seek(0);
+ audio->start(&buffer);
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"unable to open sound file: "+newSoundFile);
+ #endif
+}
diff --git a/OptionDialog.h b/OptionDialog.h
index d1de3db..b1595d9 100644..100755
--- a/OptionDialog.h
+++ b/OptionDialog.h
@@ -11,6 +11,9 @@
#include <QDialog>
#include <QAbstractButton>
#include <QTreeWidgetItem>
+#ifndef NOAUDIO
+#include <QBuffer>
+#endif
#include "Environment.h"
#include "OSSpecific.h"
@@ -82,6 +85,9 @@ private slots:
void oSSpecificClosed();
void on_remainingTimeAlgorithm_currentIndexChanged(int index);
void on_portable_toggled(bool);
+ void on_soundFile_editingFinished();
+ void on_soundWhenFinish_toggled(bool checked);
+ void on_playSound_clicked();
private:
bool quit;
Ui::OptionDialog *ui;
@@ -112,6 +118,10 @@ private:
QTreeWidgetItem * treeWidgetItem;
OSSpecific *oSSpecific;
bool allPluginsIsLoaded;
+ #ifndef NOAUDIO
+ QByteArray data;
+ QBuffer buffer;
+ #endif
public slots:
void newThemeOptions(const std::string &name,QWidget* theNewOptionsWidget,bool isLoaded,bool havePlugin);
void newClientList(const std::vector<std::string> &clientsList);
diff --git a/OptionDialog.ui b/OptionDialog.ui
index 2a154ec..7cb657d 100644..100755
--- a/OptionDialog.ui
+++ b/OptionDialog.ui
@@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
- <width>779</width>
+ <width>808</width>
<height>455</height>
</rect>
</property>
@@ -290,6 +290,37 @@
</property>
</widget>
</item>
+ <item row="10" column="1">
+ <layout class="QHBoxLayout" name="horizontalLayout_6">
+ <item>
+ <widget class="QCheckBox" name="soundWhenFinish"/>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="soundFile">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="placeholderText">
+ <string>default: finish.opus</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="playSound">
+ <property name="text">
+ <string>Play</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="10" column="0">
+ <widget class="QLabel" name="label_13">
+ <property name="text">
+ <string>Sound when finish</string>
+ </property>
+ </widget>
+ </item>
</layout>
</item>
<item>
@@ -877,12 +908,12 @@
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
- <x>313</x>
- <y>13</y>
+ <x>301</x>
+ <y>7</y>
</hint>
<hint type="destinationlabel">
- <x>533</x>
- <y>44</y>
+ <x>252</x>
+ <y>11</y>
</hint>
</hints>
</connection>
@@ -893,12 +924,12 @@
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
- <x>583</x>
- <y>20</y>
+ <x>301</x>
+ <y>7</y>
</hint>
<hint type="destinationlabel">
- <x>584</x>
- <y>40</y>
+ <x>300</x>
+ <y>11</y>
</hint>
</hints>
</connection>
@@ -909,12 +940,12 @@
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
- <x>345</x>
- <y>21</y>
+ <x>301</x>
+ <y>7</y>
</hint>
<hint type="destinationlabel">
- <x>582</x>
- <y>105</y>
+ <x>301</x>
+ <y>14</y>
</hint>
</hints>
</connection>
@@ -925,12 +956,12 @@
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
- <x>348</x>
- <y>25</y>
+ <x>301</x>
+ <y>7</y>
</hint>
<hint type="destinationlabel">
- <x>557</x>
- <y>156</y>
+ <x>301</x>
+ <y>20</y>
</hint>
</hints>
</connection>
@@ -941,12 +972,12 @@
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
- <x>537</x>
- <y>105</y>
+ <x>301</x>
+ <y>14</y>
</hint>
<hint type="destinationlabel">
- <x>533</x>
- <y>131</y>
+ <x>301</x>
+ <y>16</y>
</hint>
</hints>
</connection>
@@ -957,12 +988,12 @@
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
- <x>501</x>
- <y>156</y>
+ <x>301</x>
+ <y>20</y>
</hint>
<hint type="destinationlabel">
- <x>501</x>
- <y>182</y>
+ <x>301</x>
+ <y>22</y>
</hint>
</hints>
</connection>
@@ -973,12 +1004,12 @@
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
- <x>269</x>
- <y>15</y>
+ <x>301</x>
+ <y>7</y>
</hint>
<hint type="destinationlabel">
- <x>456</x>
- <y>207</y>
+ <x>301</x>
+ <y>27</y>
</hint>
</hints>
</connection>
@@ -989,12 +1020,28 @@
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
- <x>334</x>
+ <x>301</x>
+ <y>7</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>301</x>
<y>12</y>
</hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>soundWhenFinish</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>soundFile</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>488</x>
+ <y>337</y>
+ </hint>
<hint type="destinationlabel">
- <x>304</x>
- <y>69</y>
+ <x>632</x>
+ <y>346</y>
</hint>
</hints>
</connection>
diff --git a/OptionEngine.cpp b/OptionEngine.cpp
index cd3adf1..cd3adf1 100644..100755
--- a/OptionEngine.cpp
+++ b/OptionEngine.cpp
diff --git a/OptionEngine.h b/OptionEngine.h
index 027861f..027861f 100644..100755
--- a/OptionEngine.h
+++ b/OptionEngine.h
diff --git a/PlatformMacro.h b/PlatformMacro.h
index d15329d..b5815c9 100644..100755
--- a/PlatformMacro.h
+++ b/PlatformMacro.h
@@ -10,50 +10,54 @@
//windows
#if defined(Q_OS_WIN32)
- #if defined(_M_X64) //_WIN64
- //windows 64Bits
- #define ULTRACOPIER_PLATFORM_NAME tr("Windows 64Bits")
- #define ULTRACOPIER_PLATFORM_CODE "windows-x86_64"
- #else
- //windows 32Bits
- #define ULTRACOPIER_PLATFORM_NAME tr("Windows 32Bits")
- #define ULTRACOPIER_PLATFORM_CODE "windows-x86"
- #endif
+ #if defined(_M_X64) //_WIN64
+ //windows 64Bits
+ #define ULTRACOPIER_PLATFORM_NAME tr("Windows 64Bits")
+ #define ULTRACOPIER_PLATFORM_CODE "windows-x86_64"
+ #else
+ //windows 32Bits
+ #define ULTRACOPIER_PLATFORM_NAME tr("Windows 32Bits")
+ #define ULTRACOPIER_PLATFORM_CODE "windows-x86"
+ #endif
#elif defined(Q_OS_MAC)
- //Mac OS X
- #define ULTRACOPIER_PLATFORM_NAME tr("Mac OS X")
- #define ULTRACOPIER_PLATFORM_CODE "mac-os-x"
+ //Mac OS X
+ #define ULTRACOPIER_PLATFORM_NAME tr("Mac OS X")
+ #define ULTRACOPIER_PLATFORM_CODE "mac-os-x"
#elif defined(Q_OS_LINUX)
- #if defined(__i386__)
- //linux pc i386
- #define ULTRACOPIER_PLATFORM_NAME tr("Linux pc i386")
- #define ULTRACOPIER_PLATFORM_CODE "linux-i386-pc"
- #elif defined(__i486__)
- //linux pc i486
- #define ULTRACOPIER_PLATFORM_NAME tr("Linux pc i486")
- #define ULTRACOPIER_PLATFORM_CODE "linux-i486-pc"
- #elif defined(__i586__)
- //linux pc i586
- #define ULTRACOPIER_PLATFORM_NAME tr("Linux pc i586")
- #define ULTRACOPIER_PLATFORM_CODE "linux-i586-pc"
- #elif defined(__i686__)
- //linux pc i686
- #define ULTRACOPIER_PLATFORM_NAME tr("Linux pc i686")
- #define ULTRACOPIER_PLATFORM_CODE "linux-i686-pc"
- #elif defined(__x86_64__)
- //linux pc 64Bits
- #define ULTRACOPIER_PLATFORM_NAME tr("Linux pc 64Bits")
- #define ULTRACOPIER_PLATFORM_CODE "linux-x86_64-pc"
- #else
- //linux unknow
- #define ULTRACOPIER_PLATFORM_NAME tr("Linux unknow platform")
- #define ULTRACOPIER_PLATFORM_CODE "linux-unknow-pc"
- #endif
+ #if defined(__i386__)
+ //linux pc i386
+ #define ULTRACOPIER_PLATFORM_NAME tr("Linux pc i386")
+ #define ULTRACOPIER_PLATFORM_CODE "linux-i386-pc"
+ #elif defined(__i486__)
+ //linux pc i486
+ #define ULTRACOPIER_PLATFORM_NAME tr("Linux pc i486")
+ #define ULTRACOPIER_PLATFORM_CODE "linux-i486-pc"
+ #elif defined(__i586__)
+ //linux pc i586
+ #define ULTRACOPIER_PLATFORM_NAME tr("Linux pc i586")
+ #define ULTRACOPIER_PLATFORM_CODE "linux-i586-pc"
+ #elif defined(__i686__)
+ //linux pc i686
+ #define ULTRACOPIER_PLATFORM_NAME tr("Linux pc i686")
+ #define ULTRACOPIER_PLATFORM_CODE "linux-i686-pc"
+ #elif defined(__x86_64__)
+ //linux pc 64Bits
+ #define ULTRACOPIER_PLATFORM_NAME tr("Linux pc 64Bits")
+ #define ULTRACOPIER_PLATFORM_CODE "linux-x86_64-pc"
+ #else
+ //linux unknow
+ #define ULTRACOPIER_PLATFORM_NAME tr("Linux unknow platform")
+ #define ULTRACOPIER_PLATFORM_CODE "linux-unknow-pc"
+ #endif
+#elif defined(__HAIKU__)
+ //Haiku OS
+ #define ULTRACOPIER_PLATFORM_NAME tr("Haiku OS platform")
+ #define ULTRACOPIER_PLATFORM_CODE "haiku-os"
#else
- //unknow
- #define ULTRACOPIER_PLATFORM_NAME tr("Unknow platform")
- #define ULTRACOPIER_PLATFORM_CODE "unknow"
+ //unknow
+ #define ULTRACOPIER_PLATFORM_NAME tr("Unknow platform")
+ #define ULTRACOPIER_PLATFORM_CODE "unknow"
#endif
#endif // PLATFORM_MACRO_H
-
+
diff --git a/PluginInformation.cpp b/PluginInformation.cpp
index 8c1551c..8c1551c 100644..100755
--- a/PluginInformation.cpp
+++ b/PluginInformation.cpp
diff --git a/PluginInformation.h b/PluginInformation.h
index d3c1d5a..d3c1d5a 100644..100755
--- a/PluginInformation.h
+++ b/PluginInformation.h
diff --git a/PluginInformation.ui b/PluginInformation.ui
index 64a0bd1..64a0bd1 100644..100755
--- a/PluginInformation.ui
+++ b/PluginInformation.ui
diff --git a/PluginLoaderCore.cpp b/PluginLoaderCore.cpp
index 1cc3089..1cc3089 100644..100755
--- a/PluginLoaderCore.cpp
+++ b/PluginLoaderCore.cpp
diff --git a/PluginLoaderCore.h b/PluginLoaderCore.h
index fbbc6f6..fbbc6f6 100644..100755
--- a/PluginLoaderCore.h
+++ b/PluginLoaderCore.h
diff --git a/PluginsManager.cpp b/PluginsManager.cpp
index 269e837..b885612 100644..100755
--- a/PluginsManager.cpp
+++ b/PluginsManager.cpp
@@ -310,8 +310,9 @@ void PluginsManager::loadPluginXml(PluginsAvailable * thePlugin,const QByteArray
loadBalise(root,"architecture",&(thePlugin->informations),&(thePlugin->errorString),true,false);
if(thePlugin->errorString.empty())
{
- if(thePlugin->informations.back().back()!=ULTRACOPIER_PLATFORM_CODE)
- thePlugin->errorString="Wrong platform code: "+thePlugin->informations.back().back();
+ const std::string &platform=thePlugin->informations.back().back();
+ if(platform!=ULTRACOPIER_PLATFORM_CODE)
+ thePlugin->errorString="Wrong platform code: "+platform+std::string(" should be ")+ULTRACOPIER_PLATFORM_CODE;
}
#endif
}
@@ -528,10 +529,10 @@ std::string PluginsManager::getPluginVersion(const std::string &pluginName) cons
{
#ifdef ULTRACOPIER_MODE_SUPERCOPIER
if(pluginName=="supercopier")
- return ULTRACOPIER_VERSION;
+ return FacilityEngine::version();
#else
if(pluginName=="ultracopier")
- return ULTRACOPIER_VERSION;
+ return FacilityEngine::version();
#endif
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
unsigned int index=0;
@@ -907,7 +908,7 @@ void PluginsManager::newAuthPath(const std::string &path)
/// \brief transfor short plugin name into file name
std::string PluginsManager::getResolvedPluginName(const std::string &name)
{
- #if defined(Q_OS_LINUX) || defined(Q_OS_HURD)
+ #if defined(Q_OS_LINUX) || defined(Q_OS_HURD) || defined(__HAIKU__)
return "lib"+name+".so";
#elif defined(Q_OS_MAC)
#if defined(QT_DEBUG)
@@ -922,7 +923,11 @@ std::string PluginsManager::getResolvedPluginName(const std::string &name)
return name+".dll";
#endif
#else
+ #ifndef ULTRACOPIER_PLUGIN_ALL_IN_ONE
#error "Platform not supported"
+ #else
+ return std::string();
+ #endif
#endif
}
diff --git a/PluginsManager.h b/PluginsManager.h
index 4e24839..4e24839 100644..100755
--- a/PluginsManager.h
+++ b/PluginsManager.h
diff --git a/ProductKey.cpp b/ProductKey.cpp
index eeb533c..a96efec 100644..100755
--- a/ProductKey.cpp
+++ b/ProductKey.cpp
@@ -28,7 +28,7 @@ bool ProductKey::parseKey(QString orgkey)
if(!key.isEmpty())
{
QCryptographicHash hash(QCryptographicHash::Sha224);
- hash.addData(QStringLiteral("U2NgvbKVrVwlaXnx").toUtf8());
+ hash.addData(QStringLiteral("mQcLvEg1HW8JuRXY3BawjSpe").toUtf8());
hash.addData(key.toUtf8());
const QByteArray &result=hash.result();
if(!result.isEmpty() && result.at(0)==0x00 && result.at(1)==0x00)
diff --git a/ProductKey.h b/ProductKey.h
index 64fd536..64fd536 100644..100755
--- a/ProductKey.h
+++ b/ProductKey.h
diff --git a/ProductKey.ui b/ProductKey.ui
index bd881ec..c7d49f8 100644..100755
--- a/ProductKey.ui
+++ b/ProductKey.ui
@@ -14,8 +14,8 @@
<string>Product key</string>
</property>
<property name="windowIcon">
- <iconset resource="plugins/Themes/Oxygen/interfaceResources_unix.qrc">
- <normaloff>:/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Unix.png</normaloff>:/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Unix.png</iconset>
+ <iconset resource="plugins/Themes/Oxygen2/interfaceResources_unix.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Unix.png</normaloff>:/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Unix.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
@@ -35,7 +35,7 @@
</layout>
</widget>
<resources>
- <include location="plugins/Themes/Oxygen/interfaceResources_unix.qrc"/>
+ <include location="plugins/Themes/Oxygen2/interfaceResources_unix.qrc"/>
</resources>
<connections/>
</ui>
diff --git a/README.md b/README.md
index 18d0a4e..1c0783a 100644..100755
--- a/README.md
+++ b/README.md
@@ -12,11 +12,14 @@ Main features include:
- collision management
- plugin support
+# Dependency
+- libogg and libopus if audio support is enabled
# Building
Building an all-in-one version is as easy as compiling the main Qt project:
+ find ./ -name '*.ts' -exec lrelease {} \;
qmake ultracopier.pro
diff --git a/README.sources b/README.sources
index d569b28..5abd28f 100644..100755
--- a/README.sources
+++ b/README.sources
@@ -29,4 +29,11 @@ Licensing of XZ Embedded =============================
All the files in this package have been written by Lasse Collin
and/or Igor Pavlov. All these files have been put into the
public domain. You can do whatever you want with these files.
-As usual, this software is provided "as is", without any warranty. \ No newline at end of file
+As usual, this software is provided "as is", without any warranty.
+
+======================================================
+MXE ==================================================
+======================================================
+
+To compile for windows I use MXE:
+make MXE_TARGETS='i686-w64-mingw32.shared' QT5_BUILD_TYPE=-debug-and-release MXE_PLUGIN_DIRS=plugins/gcc7 qt5 opus ogg zstd
diff --git a/ResourcesManager.cpp b/ResourcesManager.cpp
index 32106a8..32106a8 100644..100755
--- a/ResourcesManager.cpp
+++ b/ResourcesManager.cpp
diff --git a/ResourcesManager.h b/ResourcesManager.h
index fec25da..fec25da 100644..100755
--- a/ResourcesManager.h
+++ b/ResourcesManager.h
diff --git a/SessionLoader.cpp b/SessionLoader.cpp
index 1266e2f..1266e2f 100644..100755
--- a/SessionLoader.cpp
+++ b/SessionLoader.cpp
diff --git a/SessionLoader.h b/SessionLoader.h
index 7889284..7889284 100644..100755
--- a/SessionLoader.h
+++ b/SessionLoader.h
diff --git a/StructEnumDefinition.h b/StructEnumDefinition.h
index e8f8de2..b275c36 100644..100755
--- a/StructEnumDefinition.h
+++ b/StructEnumDefinition.h
@@ -11,78 +11,78 @@
namespace Ultracopier {
/// \brief Define the mode of the copy window/request, if need be copy or move
-enum CopyMode
+enum CopyMode : uint8_t
{
- Copy=0x00000000,
- Move=0x00000001
+ Copy=0x00,
+ Move=0x01
};
-enum RemainingTimeAlgo
+enum RemainingTimeAlgo : uint8_t
{
- RemainingTimeAlgo_Traditional=0x00000000,
- RemainingTimeAlgo_Logarithmic=0x00000001
+ RemainingTimeAlgo_Traditional=0x00,
+ RemainingTimeAlgo_Logarithmic=0x01
};
/// \brief Define the catching state, if the copy is totally catch of the explorer, partially or nothing
-enum CatchState
+enum CatchState : uint8_t
{
- Uncaught=0x00000000,
- Semiuncaught=0x00000001,
- Caught=0x00000002
+ Uncaught=0x00,
+ Semiuncaught=0x01,
+ Caught=0x02
};
/// \brief Define the listening state
-enum ListeningState
+enum ListeningState : uint8_t
{
- NotListening=0x00000000,///< 0 listener is listening
- SemiListening=0x00000001,///< only part of listeners are listening
- FullListening=0x00000002///< all the listeners are listening
+ NotListening=0x00,///< 0 listener is listening
+ SemiListening=0x01,///< only part of listeners are listening
+ FullListening=0x02///< all the listeners are listening
};
/// \brief Define the copy type, if folder, file or both
-enum CopyType
+enum CopyType : uint8_t
{
- File = 0x00000001,
- FileAndFolder = 0x00000002
+ File = 0x01,
+ FileAndFolder = 0x02
};
/// \brief transfer list operation, can define nothing, the import/export or both
-enum TransferListOperation
+enum TransferListOperation : uint8_t
{
- TransferListOperation_None = 0x00000000,
- TransferListOperation_Import = 0x00000001,
- TransferListOperation_Export = 0x00000002,
+ TransferListOperation_None = 0x00,
+ TransferListOperation_Import = 0x01,
+ TransferListOperation_Export = 0x02,
TransferListOperation_ImportExport = TransferListOperation_Import | TransferListOperation_Export
};
-enum EngineActionInProgress
+enum EngineActionInProgress : uint8_t
{
- Idle = 0x00000000,
- Listing = 0x00000001,
- Copying = 0x00000002,
+ Idle = 0x00,
+ Listing = 0x01,
+ Copying = 0x02,
CopyingAndListing = Listing | Copying
};
/// \brief the level of information
-enum DebugLevel
+enum DebugLevel : uint8_t
{
- DebugLevel_Information=0x00000001, ///< Information like the compiler, OS, Qt version, all to know in witch condition ultracopier is launched
- DebugLevel_Critical=0x00000002, ///< Critical error, where it don't know how skip it
- DebugLevel_Warning=0x00000003, ///< Error, but have way to skip it
- DebugLevel_Notice=0x00000004 ///< General information to debug, what file is open, what event is received, ...
+ DebugLevel_Information=0x01, ///< Information like the compiler, OS, Qt version, all to know in witch condition ultracopier is launched
+ DebugLevel_Critical=0x02, ///< Critical error, where it don't know how skip it
+ DebugLevel_Warning=0x03, ///< Error, but have way to skip it
+ DebugLevel_Notice=0x04 ///< General information to debug, what file is open, what event is received, ...
};
-enum SizeUnit
+enum SizeUnit : uint8_t
{
- SizeUnit_byte=0x00000000,
- SizeUnit_KiloByte=0x00000001,
- SizeUnit_MegaByte=0x00000002,
- SizeUnit_GigaByte=0x00000003,
- SizeUnit_TeraByte=0x00000004,
- SizeUnit_PetaByte=0x00000005,
- SizeUnit_ExaByte=0x00000006,
- SizeUnit_ZettaByte=0x00000007,
- SizeUnit_YottaByte=0x00000008
+ SizeUnit_byte=0x00,
+ SizeUnit_KiloByte=0x01,
+ SizeUnit_MegaByte=0x02,
+ SizeUnit_GigaByte=0x03,
+ SizeUnit_TeraByte=0x04,
+ SizeUnit_PetaByte=0x05,
+ SizeUnit_ExaByte=0x06,
+ SizeUnit_ZettaByte=0x07,
+ SizeUnit_YottaByte=0x08
};
/// \brief structure for decompossed time
@@ -94,17 +94,17 @@ struct TimeDecomposition
};
//////////////////////////// Return list //////////////////////////////
-enum ActionTypeCopyList
+enum ActionTypeCopyList : uint8_t
{
//playlist action
- MoveItem=0x00000000,
- RemoveItem=0x00000001,
- AddingItem=0x00000002,
+ MoveItem=0x00,
+ RemoveItem=0x01,
+ AddingItem=0x02,
//Item action, to inform the stat of one entry
- PreOperation=0x00000003,
- Transfer=0x00000004,
- PostOperation=0x00000005,
- CustomOperation=0x00000006 /// \note this need be used after preoperation and before postoperation
+ PreOperation=0x03,
+ Transfer=0x04,//need send PreOperation before
+ PostOperation=0x05,
+ CustomOperation=0x06 /// \note this need be used after preoperation and before postoperation
};
/// \brief structure for progression item
diff --git a/StructEnumDefinition_UltracopierSpecific.h b/StructEnumDefinition_UltracopierSpecific.h
index 067eb18..067eb18 100644..100755
--- a/StructEnumDefinition_UltracopierSpecific.h
+++ b/StructEnumDefinition_UltracopierSpecific.h
diff --git a/SystrayIcon.cpp b/SystrayIcon.cpp
index eb09f3b..ceed27d 100644..100755
--- a/SystrayIcon.cpp
+++ b/SystrayIcon.cpp
@@ -36,7 +36,7 @@ SystrayIcon::SystrayIcon(QObject * parent) :
actionOptions = new QAction(this);
actionProductKey = new QAction(this);
//actionTransfer = new QAction(this);
- #if ! defined(Q_OS_LINUX) || (QT_VERSION < QT_VERSION_CHECK(5, 6, 0))
+ #ifdef TREEMENU
copyMenu = NULL;
#endif
//to prevent init bug
@@ -80,8 +80,10 @@ SystrayIcon::SystrayIcon(QObject * parent) :
#ifdef ULTRACOPIER_DEBUG
systrayMenu->addAction(actionSaveBugReport);
#endif
+ #ifndef Q_OS_LINUX
if(!ProductKey::productKey->isUltimate())
systrayMenu->addAction(actionProductKey);
+ #endif
systrayMenu->addAction(actionMenuQuit);
#ifndef Q_OS_MAC
systrayMenu->insertSeparator(actionOptions);
@@ -90,7 +92,7 @@ SystrayIcon::SystrayIcon(QObject * parent) :
updateSystrayIcon();
#ifdef ULTRACOPIER_INTERNET_SUPPORT
- lastVersion=ULTRACOPIER_VERSION;
+ lastVersion=FacilityEngine::version();
#endif
timerCheckSetTooltip.setSingleShot(true);
@@ -118,7 +120,7 @@ SystrayIcon::~SystrayIcon()
delete actionOptions;
delete actionProductKey;
delete systrayMenu;
- #if ! defined(Q_OS_LINUX) || (QT_VERSION < QT_VERSION_CHECK(5, 6, 0))
+ #ifdef TREEMENU
if(copyMenu!=NULL)
{
delete copyMenu;
@@ -267,8 +269,11 @@ void SystrayIcon::updateSystrayIcon()
#endif
}
if(theNewSystrayIcon.isNull())
+ {
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"All the icon include the default icon remain null");
- setIcon(theNewSystrayIcon);
+ }
+ else
+ setIcon(theNewSystrayIcon);
#ifdef ULTRACOPIER_MODE_SUPERCOPIER
setToolTip(QString::fromStdString("Supercopier - "+toolTip));
#else
@@ -494,7 +499,7 @@ void SystrayIcon::addEngineAction(const QString &name, const QIcon &icon, const
QAction *copy = new QAction(icon, label, menu);
connect(copy,&QAction::triggered, this, query);
copy->setData(name);
- #if ! defined(Q_OS_LINUX) || (QT_VERSION < QT_VERSION_CHECK(5, 6, 0))
+ #ifdef TREEMENU
copyMenu->addAction(copy);
#else
actions.push_back(copy);
@@ -505,7 +510,7 @@ void SystrayIcon::addEngineAction(const QString &name, const QIcon &icon, const
void SystrayIcon::reloadEngineList()
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
- #if ! defined(Q_OS_LINUX) || (QT_VERSION < QT_VERSION_CHECK(5, 6, 0))
+ #ifdef TREEMENU
if(copyMenu!=NULL)
{
delete copyMenu;
@@ -542,7 +547,7 @@ void SystrayIcon::reloadEngineList()
QString labelTransfer = tr("Add &transfer");
QString labelMove = tr("Add &move");
QMenu *menu = nullptr;
- #if ! defined(Q_OS_LINUX) || (QT_VERSION < QT_VERSION_CHECK(5, 6, 0))
+ #ifdef TREEMENU
if(engineEntryList.size()==1)
menu = copyMenu;
else
@@ -560,7 +565,7 @@ void SystrayIcon::reloadEngineList()
addEngineAction(name, IconAdd, labelTransfer, menu, &SystrayIcon::CatchTransferQuery);
addEngineAction(name, IconAdd, labelMove, menu, &SystrayIcon::CatchMoveQuery);
}
- #if ! defined(Q_OS_LINUX) || (QT_VERSION < QT_VERSION_CHECK(5, 6, 0))
+ #ifdef TREEMENU
if(engineEntryList.size()!=1)
copyMenu->addMenu(menu);
#endif
diff --git a/SystrayIcon.h b/SystrayIcon.h
index e17da02..6b909de 100644..100755
--- a/SystrayIcon.h
+++ b/SystrayIcon.h
@@ -15,6 +15,10 @@
#include <QList>
#include <QUrl>
+#ifdef Q_OS_WIN32
+#define TREEMENU
+#endif
+
#include "Environment.h"
/** \brief The systray icon
@@ -49,7 +53,7 @@ class SystrayIcon : public QSystemTrayIcon
std::string lastVersion;
#endif
QMenu* systrayMenu; ///< Pointer on the menu
- #if ! defined(Q_OS_LINUX) || (QT_VERSION < QT_VERSION_CHECK(5, 6, 0))
+ #ifdef TREEMENU
QMenu* copyMenu; ///< Pointer on the copy menu (move or copy)
#else
std::vector<QAction*> actions;
diff --git a/ThemesManager.cpp b/ThemesManager.cpp
index ab61e44..c78ea9c 100644..100755
--- a/ThemesManager.cpp
+++ b/ThemesManager.cpp
@@ -12,7 +12,7 @@
#include "LanguagesManager.h"
#ifdef ULTRACOPIER_PLUGIN_ALL_IN_ONE
-#include "plugins/Themes/Oxygen/ThemesFactory.h"
+#include "plugins/Themes/Oxygen2/ThemesFactory.h"
#endif
#ifdef ULTRACOPIER_MODE_SUPERCOPIER
diff --git a/ThemesManager.h b/ThemesManager.h
index 9e83af8..9e83af8 100644..100755
--- a/ThemesManager.h
+++ b/ThemesManager.h
diff --git a/Variable.h b/Variable.h
index 957530e..7107d0d 100644..100755
--- a/Variable.h
+++ b/Variable.h
@@ -3,26 +3,21 @@
\author alpha_one_x86
\licence GPL3, see the file COPYING */
-#ifndef VARIABLE_H
-#define VARIABLE_H
+#ifndef VARIABLEUCP_H
+#define VARIABLEUCP_H
/// \brief Un-comment this next line to put ultracopier in debug mode
#ifndef ULTRACOPIER_NODEBUG
-#define ULTRACOPIER_DEBUG
+////#define ULTRACOPIER_DEBUG
#endif
-#define ULTRACOPIER_DEBUG_MAX_GUI_LINE 50000 ///< \brief Max number of ligne show on the GUI
-#define ULTRACOPIER_DEBUG_MAX_ALL_SIZE 128 ///< \brief Max size (in MB) after the console/file output is dropped
-#define ULTRACOPIER_DEBUG_MAX_IMPORTANT_SIZE 150 ///< \brief Max size (in MB) after the console/file important output is dropped
-/// \brief the version
-#define ULTRACOPIER_VERSION "1.6.1.3"
-/// \brief the windows version
-#define ULTRACOPIER_WINDOWS_VERSION 1,6,1,3
+//#define ULTRACOPIER_DEBUG_MAX_GUI_LINE 50000 ///< \brief Max number of ligne show on the GUI
+//#define ULTRACOPIER_DEBUG_MAX_ALL_SIZE 128 ///< \brief Max size (in MB) after the console/file output is dropped
+//#define ULTRACOPIER_DEBUG_MAX_IMPORTANT_SIZE 150 ///< \brief Max size (in MB) after the console/file important output is dropped
// define if the version is portable or not
////#define ULTRACOPIER_VERSION_PORTABLE
////#define ULTRACOPIER_VERSION_PORTABLEAPPS
// define if the version is ultimate, need change only the name in the code
//#define ULTRACOPIER_PLUGIN_ALL_IN_ONE
-//#define ULTRACOPIER_MODE_SUPERCOPIER
/// \brief define time to update the speed detection update ont the interface (in ms)
#define ULTRACOPIER_TIME_INTERFACE_UPDATE 500
@@ -45,6 +40,6 @@
/// \brief to disable plugin support, import and remove
#define ULTRACOPIER_PLUGIN_IMPORT_SUPPORT
-#define ULTRACOPIER_UPDATER_URL "http://ultracopier-update.first-world.info:10852/updater.txt"
+#define ULTRACOPIER_UPDATER_URL "http://cdn.confiared.com/ultracopier-update.first-world.info/updater.txt"
#endif // VARIABLE_H
diff --git a/Version.h b/Version.h
new file mode 100755
index 0000000..c345541
--- /dev/null
+++ b/Version.h
@@ -0,0 +1,9 @@
+#ifndef VERSIONUC_H
+#define VERSIONUC_H
+
+/// \brief the version
+#define ULTRACOPIER_VERSION "2.2.4.4"
+/// \brief the windows version
+#define ULTRACOPIER_WINDOWS_VERSION 2,2,4,4
+
+#endif // VARIABLE_H
diff --git a/android-libultracopier.so-deployment-settings.json b/android-libultracopier.so-deployment-settings.json
new file mode 100644
index 0000000..1dedb66
--- /dev/null
+++ b/android-libultracopier.so-deployment-settings.json
@@ -0,0 +1,14 @@
+{
+ "description": "This file is generated by qmake to be read by androiddeployqt and should not be modified by hand.",
+ "qt": "/usr",
+ "sdk": "",
+ "sdkBuildToolsRevision": "",
+ "ndk": "/opt/android/android-ndk",
+ "toolchain-prefix": "arm-linux-androideabi",
+ "tool-prefix": "arm-linux-androideabi",
+ "toolchain-version": "4.9",
+ "ndk-host": "",
+ "target-architecture": "",
+ "qml-root-path": "/data",
+ "application-binary": "/data/libultracopier.so"
+}
diff --git a/android-sources/AndroidManifest.xml b/android-sources/AndroidManifest.xml
new file mode 100644
index 0000000..1ef9946
--- /dev/null
+++ b/android-sources/AndroidManifest.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0"?>
+<manifest package="org.qtproject.example.ultracopier" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.0.4.0" android:versionCode="20000400" android:installLocation="auto">
+ <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="28"/>
+
+ <!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
+ Remove the comment if you do not require these default permissions. -->
+
+
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+
+
+ <!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application.
+ Remove the comment if you do not require these default features. -->
+
+
+ <supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
+
+ <application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="ultracopier" android:icon="@drawable/icon">
+ <activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation|mcc|mnc|density" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="ultracopier" android:screenOrientation="unspecified" android:launchMode="singleTop">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER"/>
+ </intent-filter>
+
+ <!-- Application arguments -->
+ <!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ -->
+ <!-- Application arguments -->
+
+ <meta-data android:name="android.app.lib_name" android:value="ultracopier"/>
+ <meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
+ <meta-data android:name="android.app.repository" android:value="default"/>
+ <meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
+ <meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
+ <!-- Deploy Qt libs as part of package -->
+ <meta-data android:name="android.app.bundle_local_qt_libs" android:value="1"/>
+ <meta-data android:name="android.app.bundled_in_lib_resource_id" android:resource="@array/bundled_in_lib"/>
+ <meta-data android:name="android.app.bundled_in_assets_resource_id" android:resource="@array/bundled_in_assets"/>
+ <!-- Run with local libs -->
+ <meta-data android:name="android.app.use_local_qt_libs" android:value="1"/>
+ <meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/>
+ <meta-data android:name="android.app.load_local_libs" android:value="plugins/platforms/android/libqtforandroid.so"/>
+ <meta-data android:name="android.app.load_local_jars" android:value="jar/QtAndroid.jar"/>
+ <meta-data android:name="android.app.static_init_classes" android:value=""/>
+ <!-- Used to specify custom system library path to run with local system libs -->
+ <!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> -->
+ <!-- Messages maps -->
+ <meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/>
+ <meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/>
+ <meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/>
+ <meta-data android:value="@string/unsupported_android_version" android:name="android.app.unsupported_android_version"/>
+ <!-- Messages maps -->
+
+ <!-- Splash screen -->
+ <!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation,
+ then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and
+ use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you
+ are done populating your window with content. -->
+ <!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / -->
+ <!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / -->
+ <!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ -->
+ <!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ -->
+ <!-- Splash screen -->
+
+ <!-- Background running -->
+ <!-- Warning: changing this value to true may cause unexpected crashes if the
+ application still try to draw after
+ "applicationStateChanged(Qt::ApplicationSuspended)"
+ signal is sent! -->
+ <meta-data android:name="android.app.background_running" android:value="false"/>
+ <!-- Background running -->
+
+ <!-- auto screen scale factor -->
+ <meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/>
+ <!-- auto screen scale factor -->
+
+ <!-- extract android style -->
+ <!-- available android:values :
+ * default - In most cases this will be the same as "full", but it can also be something else if needed, e.g., for compatibility reasons
+ * full - useful QWidget & Quick Controls 1 apps
+ * minimal - useful for Quick Controls 2 apps, it is much faster than "full"
+ * none - useful for apps that don't use any of the above Qt modules
+ -->
+ <meta-data android:name="android.app.extract_android_style" android:value="default"/>
+ <!-- extract android style -->
+ </activity>
+
+ <!-- For adding service(s) please check: https://wiki.qt.io/AndroidServices -->
+
+ </application>
+
+</manifest>
diff --git a/android-sources/build.sh b/android-sources/build.sh
new file mode 100755
index 0000000..b160c18
--- /dev/null
+++ b/android-sources/build.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+cd /home/user/src/
+mkdir ~/build && cd ~/build
+qmake -r ~/src/other-pro/ultracopier-little.pro ANDROID_EXTRA_LIBS+=$ANDROID_DEV/lib/libcrypto.so ANDROID_EXTRA_LIBS+=$ANDROID_DEV/lib/libssl.so
+make -j5
+make install INSTALL_ROOT=/home/user/build/dist/
+androiddeployqt --input android-libultracopier.so-deployment-settings.json --output dist/ --android-platform 28 --deployment bundled --gradle --release
diff --git a/android-sources/res/drawable-hdpi/icon.png b/android-sources/res/drawable-hdpi/icon.png
new file mode 100644
index 0000000..8a276d7
--- /dev/null
+++ b/android-sources/res/drawable-hdpi/icon.png
Binary files differ
diff --git a/android-sources/res/drawable-ldpi/icon.png b/android-sources/res/drawable-ldpi/icon.png
new file mode 100644
index 0000000..844c690
--- /dev/null
+++ b/android-sources/res/drawable-ldpi/icon.png
Binary files differ
diff --git a/android-sources/res/drawable-mdpi/icon.png b/android-sources/res/drawable-mdpi/icon.png
new file mode 100644
index 0000000..2adbb48
--- /dev/null
+++ b/android-sources/res/drawable-mdpi/icon.png
Binary files differ
diff --git a/catchcopy-windows-explorer-plugin/CatchCopy.cpp b/catchcopy-windows-explorer-plugin/CatchCopy.cpp
new file mode 100755
index 0000000..58d36fb
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/CatchCopy.cpp
@@ -0,0 +1,115 @@
+// Implementation of DLL Exports.
+#include "resource.h"
+#include "DDShellExt.h"
+#include "ClassFactory.h"
+#include "Reg.h"
+
+#ifndef _M_X64
+const CLSID CLSID_DDShellExt = {0x68D44A27,0xFFB6,0x4B89,{0xA3,0xE5,0x7B,0x0E,0x50,0xA7,0xAB,0x33}};
+#else
+const CLSID CLSID_DDShellExt = {0x68ff37c4,0x51bc,0x4c2a,{0xa9,0x92,0x7e,0x39,0xbc,0xe,0x70,0x6f}};
+#endif
+
+HINSTANCE g_hInst = NULL;
+long g_cDllRef = 0;
+
+// DLL Entry Point
+extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
+{
+ (void)lpReserved;
+ switch(dwReason){
+ case DLL_PROCESS_ATTACH:
+ //MessageBox ( NULL,L"DLL_PROCESS_ATTACH", L"DLL_PROCESS_ATTACH", MB_OK);
+ // Hold the instance of this DLL module, we will use it to get the
+ // path of the DLL to register the component.
+ g_hInst = hInstance;
+ DisableThreadLibraryCalls(hInstance);
+ break;
+ case DLL_PROCESS_DETACH:
+ //MessageBox ( NULL,L"DLL_PROCESS_DETACH", L"DLL_PROCESS_DETACH", MB_OK);
+ break;
+ }
+
+ return TRUE; //_AtlModule.DllMain(hInstance, dwReason, lpReserved,ObjectMap,NULL);
+}
+
+
+// Used to determine whether the DLL can be unloaded by OLE
+STDAPI DllCanUnloadNow(void)
+{
+ return g_cDllRef > 0 ? S_FALSE : S_OK;
+}
+
+
+// Returns a class factory to create an object of the requested type
+STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
+{
+ HRESULT hr = CLASS_E_CLASSNOTAVAILABLE;
+ if (IsEqualCLSID(CLSID_DDShellExt, rclsid))
+ {
+ hr = E_OUTOFMEMORY;
+ ClassFactory *pClassFactory = new ClassFactory();
+ if (pClassFactory)
+ {
+ hr = pClassFactory->QueryInterface(riid, ppv);
+ pClassFactory->Release();
+ }
+ }
+ return hr;
+}
+
+
+// DllRegisterServer - Adds entries to the system registry
+STDAPI DllRegisterServer(void)
+{
+// registers object, typelib and all interfaces in typelib
+
+ HRESULT hr;
+
+ wchar_t szModule[MAX_PATH];
+ if (GetModuleFileName(g_hInst, szModule, ARRAYSIZE(szModule)) == 0)
+ {
+ hr = HRESULT_FROM_WIN32(GetLastError());
+ return hr;
+ }
+ // Register the component.
+ hr = RegisterInprocServer(szModule, CLSID_DDShellExt, L"CatchCopy Class", L"Apartment");
+ if (SUCCEEDED(hr))
+ {
+ // Register the context menu handler. The context menu handler is
+ // associated with the * file class.
+ hr = RegisterShellExtContextMenuHandler(L"textfile", CLSID_DDShellExt, L"CatchCopy");
+ hr = RegisterShellExtContextMenuHandler(L"Drive", CLSID_DDShellExt, L"CatchCopy");
+ hr = RegisterShellExtContextMenuHandler(L"Directory", CLSID_DDShellExt, L"CatchCopy");
+ hr = RegisterShellExtContextMenuHandler(L"Folder", CLSID_DDShellExt, L"CatchCopy");
+ }
+ return hr;
+}
+
+
+// DllUnregisterServer - Removes entries from the system registry
+STDAPI DllUnregisterServer(void)
+{
+ m_ac.disconnectFromServer();
+ HRESULT hr = S_OK;
+
+ wchar_t szModule[MAX_PATH];
+ if (GetModuleFileName(g_hInst, szModule, ARRAYSIZE(szModule)) == 0)
+ {
+ hr = HRESULT_FROM_WIN32(GetLastError());
+ return hr;
+ }
+
+ // Unregister the component.
+ hr = UnregisterInprocServer(CLSID_DDShellExt);
+ if (SUCCEEDED(hr))
+ {
+ // Unregister the context menu handler.
+ hr = UnregisterShellExtContextMenuHandler(L"textfile", CLSID_DDShellExt);
+ hr = UnregisterShellExtContextMenuHandler(L"Drive", CLSID_DDShellExt);
+ hr = UnregisterShellExtContextMenuHandler(L"Directory", CLSID_DDShellExt);
+ hr = UnregisterShellExtContextMenuHandler(L"Folder", CLSID_DDShellExt);
+ return hr;
+ }
+ return S_OK;
+}
diff --git a/catchcopy-windows-explorer-plugin/CatchCopy.def b/catchcopy-windows-explorer-plugin/CatchCopy.def
new file mode 100755
index 0000000..78582f4
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/CatchCopy.def
@@ -0,0 +1,7 @@
+LIBRARY "CatchCopy.DLL"
+
+EXPORTS
+ DllGetClassObject = DllGetClassObject@12
+ DllCanUnloadNow = DllCanUnloadNow@0
+ DllRegisterServer = DllRegisterServer@0
+ DllUnregisterServer = DllUnregisterServer@0
diff --git a/catchcopy-windows-explorer-plugin/CatchCopy.pro b/catchcopy-windows-explorer-plugin/CatchCopy.pro
new file mode 100755
index 0000000..99dcd62
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/CatchCopy.pro
@@ -0,0 +1,49 @@
+QT -= core gui
+
+CONFIG += 64bit
+CONFIG -= exceptions rtti
+
+#DEFINES += CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+
+CONFIG(32bit) {
+ TARGET = catchcopy32
+ QMAKE_CFLAGS = -march=i586 -m32
+ QMAKE_CXXFLAGS = -march=i586 -m32
+ QMAKE_LFLAGS += -m32
+}
+CONFIG(64bit) {
+ TARGET = catchcopy64
+ LIBS += -LC:\x86_64-4.9.3-release-win32-seh-rt_v4-rev1\mingw64\lib64
+ DEFINES += _M_X64
+ QMAKE_CFLAGS = -m64
+ QMAKE_CXXFLAGS = -m64
+ QMAKE_LFLAGS += -m64
+}
+
+QMAKE_CFLAGS -= -fexceptions -mthreads -O2
+QMAKE_CXXFLAGS -= -fexceptions -mthreads -O2
+QMAKE_CFLAGS += -std=c++98 -fno-keep-inline-dllexport -mtune=generic -fno-exceptions -Os -Wall -Wextra -fno-rtti -s -static -static-libgcc -static-libstdc++
+QMAKE_CXXFLAGS += -std=c++98 -fno-keep-inline-dllexport -mtune=generic -fno-exceptions -Os -Wall -Wno-write-strings -Wextra -fno-rtti -s -static -static-libgcc -static-libstdc++
+
+DEF_FILE += CatchCopy.def
+
+LIBS+= -lws2_32 -lole32 -luuid -static-libstdc++ -static-libgcc -static
+
+TEMPLATE = lib
+
+HEADERS += \
+ Variable.h \
+ Deque.h \
+ resource.h \
+ Reg.h \
+ ClientCatchcopy.h \
+ DDShellExt.h \
+ ClassFactory.h
+
+SOURCES += \
+ Deque.cpp \
+ ClientCatchcopy.cpp \
+ Reg.cpp \
+ DDShellExt.cpp \
+ ClassFactory.cpp \
+ CatchCopy.cpp
diff --git a/catchcopy-windows-explorer-plugin/ClassFactory.cpp b/catchcopy-windows-explorer-plugin/ClassFactory.cpp
new file mode 100755
index 0000000..9ad7a5c
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/ClassFactory.cpp
@@ -0,0 +1,84 @@
+
+#include "ClassFactory.h"
+#include "DDShellExt.h"
+#include <new>
+#include <Shlwapi.h>
+
+extern long g_cDllRef;
+
+ClassFactory::ClassFactory() : m_cRef(1)
+{
+ InterlockedIncrement(&g_cDllRef);
+}
+
+ClassFactory::~ClassFactory()
+{
+ InterlockedDecrement(&g_cDllRef);
+}
+
+// IUnknown
+HRESULT __stdcall ClassFactory::QueryInterface(const IID& iid, void **ppv)
+{
+ if(iid == IID_IUnknown || iid == IID_IClassFactory)
+ {
+ *ppv = static_cast<IClassFactory*>(this);
+ }
+ else
+ {
+ *ppv = NULL;
+ return E_NOINTERFACE;
+ }
+ reinterpret_cast<IUnknown*>(*ppv)->AddRef();
+ return S_OK;
+}
+ULONG __stdcall ClassFactory::AddRef()
+{
+ return InterlockedIncrement(&m_cRef);
+}
+
+ULONG __stdcall ClassFactory::Release()
+{
+ ULONG cRef = InterlockedDecrement(&m_cRef);
+ if (0 == cRef)
+ {
+ delete this;
+ }
+ return cRef;
+}
+
+//CreateInstance
+HRESULT __stdcall ClassFactory::CreateInstance(IUnknown *pIUnknownOuter, const IID& iid, void **ppv)
+{
+ HRESULT hr = CLASS_E_NOAGGREGATION;
+
+ // pIUnknownOuter is used for aggregation. We do not support it in the sample.
+ if (pIUnknownOuter == NULL)
+ {
+ hr = E_OUTOFMEMORY;
+
+ //// Create the COM component.
+ CDDShellExt *pExt = new (std::nothrow) CDDShellExt();
+ if (pExt)
+ {
+ // Query the specified interface.
+ hr = pExt->QueryInterface(iid, ppv);
+ pExt->Release();
+ }
+ }
+
+ return hr;
+}
+
+HRESULT __stdcall ClassFactory::LockServer(BOOL bLock)
+{
+ if(bLock == TRUE)
+ {
+ InterlockedIncrement(&g_cDllRef);
+ }
+ else
+ {
+ InterlockedDecrement(&g_cDllRef);
+ }
+ return S_OK;
+}
+
diff --git a/catchcopy-windows-explorer-plugin/ClassFactory.h b/catchcopy-windows-explorer-plugin/ClassFactory.h
new file mode 100755
index 0000000..203ff40
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/ClassFactory.h
@@ -0,0 +1,22 @@
+#pragma once
+
+#include <unknwn.h> // For IClassFactory
+#include <windows.h>
+
+
+class ClassFactory : public IClassFactory
+{
+public:
+ //interface iunknown
+ virtual HRESULT __stdcall QueryInterface(const IID& iid, void **ppv);
+ virtual ULONG __stdcall AddRef();
+ virtual ULONG __stdcall Release();
+ //interface iclassfactory
+ virtual HRESULT __stdcall CreateInstance(IUnknown *pIUnknownOuter, const IID& iid, void **ppv);
+ virtual HRESULT __stdcall LockServer(BOOL bLock);
+
+ ClassFactory();
+ ~ClassFactory();
+private:
+ long m_cRef;
+};
diff --git a/catchcopy-windows-explorer-plugin/ClientCatchcopy.cpp b/catchcopy-windows-explorer-plugin/ClientCatchcopy.cpp
new file mode 100755
index 0000000..2491795
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/ClientCatchcopy.cpp
@@ -0,0 +1,455 @@
+/** \file ClientCatchcopy.cpp
+\brief Define the catchcopy client
+\author alpha_one_x86
+\version 0002
+\date 2010 */
+
+#include <stdio.h>
+
+#include "ClientCatchcopy.h"
+#include <WinSock.h>
+//#pragma comment(lib, "Ws2_32.lib")
+
+#undef NONBLOCK_FLAG
+ClientCatchcopy::ClientCatchcopy()
+{
+ m_hpipe=NULL;
+ idNextOrder=0;
+ const char prefix[]="\\\\.\\pipe\\advanced-copier-";
+ char uname[1024];
+ DWORD len=1023;
+ char *data;
+ // false ??
+ if(GetUserNameA(uname, &len)!=FALSE)
+ {
+ // convert into hexa
+ data = toHex(uname);
+ m_pipename = (char *) malloc(sizeof(prefix)+strlen(data)+2);
+ #if defined(_MFC_VER)
+ strcpy_s(m_pipename, _countof(prefix) ,prefix);
+ strcat_s(m_pipename, sizeof(prefix)+strlen(data)+2,data);
+ #else
+ strcpy(m_pipename, prefix);
+ strcat(m_pipename, data);
+ #endif
+ free(data);
+ m_blk=NULL;
+ m_len=0;
+ m_tot=0;
+
+ canConnect=true;
+ }
+ else
+ {
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ void* lpBuffer;
+ FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL,
+ ::GetLastError(),
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+ (LPTSTR) &lpBuffer,
+ 0,
+ NULL );
+ MessageBox(NULL,(LPCTSTR)lpBuffer, L"GetUserName Failed", MB_OK);
+ LocalFree( lpBuffer );
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ canConnect=false;
+ }
+}
+
+ClientCatchcopy::~ClientCatchcopy()
+{
+ disconnectFromServer();
+}
+
+// Dump UTF16 (little endian)
+char * ClientCatchcopy::toHex(const char *str)
+{
+ char *p, *sz;
+ size_t len;
+ if (str==NULL)
+ return NULL;
+ len= strlen(str);
+ p = sz = (char *) malloc((len+1)*4);
+ // username goes hexa...
+ for (size_t i=0; i<len; i++)
+ {
+ #if defined(_MFC_VER)
+ sprintf_s(p, (len+1)*4, "%.2x00", str[i]);
+ #else
+ sprintf(p, "%.2x00", str[i]);
+ #endif
+ p+=4;
+ }
+ *p=0;
+ return sz;
+}
+
+bool ClientCatchcopy::connectToServer()
+{
+ if(!canConnect)
+ {
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ MessageBox(NULL,L"Can't connect due to previous error",L"Checking", MB_OK);
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ return false;
+ }
+ if (m_hpipe==NULL)
+ {
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ char uname[1024];
+ DWORD len=1023;
+ GetUserNameA(uname, &len);
+ char temp_char_debug[1024];
+ sprintf(temp_char_debug, "user name: %s, pipe name: %s",uname , m_pipename);
+ MessageBoxA(NULL,temp_char_debug,"Pipe name", MB_OK);
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ // create pipe
+ m_hpipe = CreateFileA(m_pipename, GENERIC_READ|GENERIC_WRITE|FILE_FLAG_OVERLAPPED , 0, NULL, OPEN_EXISTING, 0, NULL);
+ if (m_hpipe==INVALID_HANDLE_VALUE)
+ {
+ m_hpipe=NULL;
+ if (GetLastError()!= ERROR_PIPE_BUSY)
+ {
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ void* lpBuffer;
+ FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL,
+ ::GetLastError(),
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+ (LPTSTR) &lpBuffer,
+ 0,
+ NULL );
+ MessageBox(NULL,(LPCTSTR)lpBuffer, L"Can't connect to catchcopy application compatible: GetLastError()!= ERROR_PIPE_BUSY", MB_OK);
+ LocalFree( lpBuffer );
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ return false;
+ }
+ #ifdef NONBLOCK_FLAG
+ return false;
+ #else
+ if (!WaitNamedPipeA(m_pipename, 10000))
+ {
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ void* lpBuffer;
+ FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL,
+ ::GetLastError(),
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+ (LPTSTR) &lpBuffer,
+ 0,
+ NULL );
+ MessageBox(NULL,(LPCTSTR)lpBuffer, L"Named pipe too long to responds", MB_OK);
+ LocalFree( lpBuffer );
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ CloseHandle(m_hpipe);
+ m_hpipe=NULL;
+ return false;
+ }
+ #endif
+ }
+
+ #ifdef NONBLOCK_FLAG
+ // The pipe connected; change to pipe_nowait mode.
+ DWORD dwMode;
+ BOOL fSuccess = FALSE;
+ dwMode = PIPE_READMODE_BYTE|PIPE_NOWAIT;
+
+ fSuccess = SetNamedPipeHandleState(
+ m_hpipe, // pipe handle
+ &dwMode, // new pipe mode
+ NULL, // don't set maximum bytes
+ NULL); // don't set maximum time
+ if ( ! fSuccess)
+ {
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ char error_str[1024];
+ sprintf(error_str, "SetNamedPipeHandleState failed. GLE=%d\n", ::GetLastError() );
+ MessageBoxA( NULL, error_str,"SetNamedPipeHandleState error", MB_OK);
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ return false;
+ }
+ #endif //NONBLOCK_FLAG
+ }
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ MessageBox(NULL,L"The explorer is now connected to the catchcopy compatible application",L"Checking", MB_OK);
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+
+ bool f = sendProtocol();
+ if(f!=true)
+ return false;
+ #if defined(_M_X64)
+ setClientName(L"Windows Explorer 64Bits");
+ #else
+ setClientName(L"Windows Explorer 32Bits");
+ #endif
+ return true;
+}
+
+void ClientCatchcopy::disconnectFromServer()
+{
+ clear();
+ if(m_hpipe!=NULL)
+ {
+ /* needed to not crash the server when have data to read */
+ FlushFileBuffers(m_hpipe);
+ CloseHandle(m_hpipe);
+ m_hpipe=NULL;
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ MessageBox(NULL, L"The explorer is now disconnected of the catchcopy compatible application",L"Checking", MB_OK);
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ }
+}
+
+/// \brief to send order
+bool ClientCatchcopy::sendProtocol()
+{
+ CDeque data;
+ data.push_back(L"protocol");
+ data.push_back(L"0002");
+ return sendRawOrderList(data);
+}
+
+bool ClientCatchcopy::setClientName(wchar_t *name)
+{
+ CDeque data;
+ data.push_back(L"client");
+ data.push_back(name);
+ return sendRawOrderList(data);
+}
+
+bool ClientCatchcopy::addCopyWithDestination(CDeque sources,wchar_t *destination)
+{
+ sources.push_front(L"cp");
+ sources.push_back(destination);
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ MessageBox(NULL, "sources size: "+sources.size()+", first: "+sources.at(0),L"Checking", MB_OK);
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ return sendRawOrderList(sources);
+}
+
+bool ClientCatchcopy::addCopyWithoutDestination(CDeque sources)
+{
+ sources.push_front(L"cp-?");
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ MessageBox(NULL, "sources size: "+sources.size()+", first: "+sources.at(0),L"Checking", MB_OK);
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ return sendRawOrderList(sources);
+}
+
+bool ClientCatchcopy::addMoveWithDestination(CDeque sources, wchar_t *destination)
+{
+ sources.push_front(L"mv");
+ sources.push_back(destination);
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ MessageBox(NULL, "sources size: "+sources.size()+", first: "+sources.at(0),L"Checking", MB_OK);
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ return sendRawOrderList(sources);
+}
+
+bool ClientCatchcopy::addMoveWithoutDestination(CDeque sources)
+{
+ sources.push_front(L"mv-?");
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ MessageBox(NULL, "sources size: "+sources.size()+", first: "+sources.at(0),L"Checking", MB_OK);
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ return sendRawOrderList(sources);
+}
+
+/// \brief to send stream of string list
+bool ClientCatchcopy::sendRawOrderList(CDeque order, bool first_try)
+{
+ if(m_hpipe!=NULL)
+ {
+ int data_size=sizeof(int)*3;
+ for(int i=0;i<order.size();i++)
+ {
+ if (order.at(i) == NULL)
+ continue;
+
+ data_size+=(int)sizeof(int);
+ data_size+=(int)sizeof(wchar_t)*(int)wcslen(order.at(i));
+ }
+ addInt32(data_size);
+ addInt32(idNextOrder++);
+ addInt32((int)order.size());
+ for(int i=0;i<order.size();i++)
+ {
+ if (order.at(i) == NULL)
+ continue;
+
+ //set string contenant
+ addStr(order.at(i));
+ }
+ if(dataToPipe()<0)
+ {
+ if(first_try)
+ {
+ disconnectFromServer();
+ connectToServer();
+ return sendRawOrderList(order,false);
+ }
+ else
+ clear();
+ }
+ return true;
+ }
+ else
+ {
+ clear();
+ return false;
+ }
+}
+
+// Send data block to named pipe
+int ClientCatchcopy::dataToPipe()
+{
+ byte_t *ptr;
+ int ret=0, max;
+ if (m_hpipe!=NULL)
+ {
+ ptr = m_blk;
+ while (!ret && m_len)
+ {
+ max=(m_len>BUFFER_PIPE) ? BUFFER_PIPE:m_len;
+ #ifdef NONBLOCK_FLAG
+ writePipe_nonBlock(m_hpipe, ptr, max);
+ break;
+ #else
+ if(writePipe(m_hpipe, ptr, max)!=0)
+ {
+ ret=-2;
+ break;
+ }
+ m_len-=max;
+ ptr+=max;
+ #endif
+ }
+ }
+ return ret;
+}
+
+int ClientCatchcopy::writePipe(HANDLE hPipe, byte_t *ptr, int len)
+{
+ DWORD cbWritten;
+ if (!WriteFile(hPipe, ptr, len, &cbWritten, NULL))
+ return -4;
+ return 0;
+}
+
+#ifdef NONBLOCK_FLAG
+int ClientCatchcopy::writePipe_nonBlock(HANDLE hPipe, byte_t *ptr, int len)
+{
+ DWORD cbWritten;
+ WriteFile(hPipe, ptr, len, &cbWritten, NULL);
+ return 0;
+}
+#endif
+
+// Add int32 (big-endian) into binary block
+int ClientCatchcopy::addInt32(int value)
+{
+ blkGrowing(sizeof(int));
+ // add value
+ setInt32(m_len, value);
+ m_len+=sizeof(int);
+ return m_len-sizeof(int);
+}
+
+void ClientCatchcopy::setInt32(int offset, int value)
+{
+ C_INT(m_blk+offset)=htonl(value);
+}
+
+// Add unicode string into binary block from ASCIIZ
+int ClientCatchcopy::addStr(WCHAR *data)
+{
+ int ret=-1, len;
+ WCHAR *x;
+ if (data!=NULL && *data)
+ {
+ // le => be
+ x = _wcsdup(data);
+ len = toBigEndian(x);
+ // set size of string
+ ret = addInt32(len);
+ // and add it to block
+ blkGrowing(len);
+ memmove(m_blk+m_len, x, len);
+ m_len+=len;
+ free(x);
+ }
+ return ret;
+}
+
+// resize binary block (if needed)
+byte_t *ClientCatchcopy::blkGrowing(int added)
+{
+ if (m_len+added>m_tot)
+ {
+ // check if added isn't bigger than buffer itself...
+ m_tot+= (added>BLOCK_SIZ) ? added:BLOCK_SIZ;
+ m_blk = (byte_t *) realloc(m_blk, m_tot);
+ }
+ return m_blk+m_len;
+}
+
+int ClientCatchcopy::toBigEndian(WCHAR *p)
+{
+ WCHAR tmp;
+ int ret=0;
+ while(*p)
+ {
+ tmp = htons(*p);
+ *p++=tmp;
+ ret+=2;
+ }
+ return ret;
+}
+
+void ClientCatchcopy::clear()
+{
+ m_tot=0;
+ m_len=0;
+ idNextOrder=0;
+ if (m_blk!=NULL)
+ {
+ free(m_blk);
+ m_blk=NULL;
+ }
+}
+
+bool ClientCatchcopy::isConnected()
+{
+ if(m_hpipe==NULL)
+ return false;
+
+ bool fSuccess = PeekNamedPipe(
+ m_hpipe,
+ NULL,
+ 0,
+ 0,
+ 0,
+ 0
+ );
+
+ if(!fSuccess && GetLastError() != ERROR_MORE_DATA)
+ {
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ void* lpBuffer;
+ FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL,
+ ::GetLastError(),
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+ (LPTSTR) &lpBuffer,
+ 0,
+ NULL );
+ MessageBox(NULL,(LPCTSTR)lpBuffer, L"Error detected with the connexion", MB_OK);
+ LocalFree( lpBuffer );
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ disconnectFromServer();
+ return false;
+ }
+ else
+ return true;
+}
diff --git a/catchcopy-windows-explorer-plugin/ClientCatchcopy.h b/catchcopy-windows-explorer-plugin/ClientCatchcopy.h
new file mode 100755
index 0000000..954bff7
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/ClientCatchcopy.h
@@ -0,0 +1,68 @@
+/** \file ClientCatchcopy.h
+\brief Define the catchcopy client
+\author alpha_one_x86
+\version 0002
+\date 2010 */
+
+#ifndef CLIENTCATCHCOPY_H
+#define CLIENTCATCHCOPY_H
+
+#define NONBLOCK_FLAG
+#define BUFSIZE 512
+#define S_LEN 8
+
+#define C_INT(p) *((int *) (p))
+#define BLOCK_SIZ 64000
+#define BUFFER_PIPE 32000
+
+#include <windows.h>
+#include <string>
+#include <deque>
+#include <stdlib.h>
+
+#include "Variable.h"
+#include "Deque.h"
+
+typedef unsigned char byte_t;
+
+class ClientCatchcopy
+{
+ public:
+ ClientCatchcopy();
+ ~ClientCatchcopy();
+ bool connectToServer();
+ void disconnectFromServer();
+ /// \brief to send order
+ bool sendProtocol();
+ bool setClientName(wchar_t *name);
+ bool addCopyWithDestination(CDeque sources,wchar_t *destination);
+ bool addCopyWithoutDestination(CDeque sources);
+ bool addMoveWithDestination(CDeque sources,wchar_t *destination);
+ bool addMoveWithoutDestination(CDeque sources);
+ /// \brief to send stream of string list
+ bool sendRawOrderList(CDeque order,bool first_try=true);
+ bool isConnected();
+ private:
+ HANDLE m_hpipe;
+ unsigned int idNextOrder;
+ char *m_pipename;
+ byte_t *m_blk;
+ int m_tot;
+ int m_len;
+
+ char * toHex(const char *str);
+ int dataToPipe();
+ int addInt32(int value);
+ int addStr(WCHAR *data);
+ byte_t *blkGrowing(int added);
+ void setInt32(int offset, int value);
+ int toBigEndian(WCHAR *p);
+ void clear();
+ int writePipe(HANDLE hPipe, byte_t *ptr, int len);
+ #ifdef NONBLOCK_FLAG
+ int writePipe_nonBlock(HANDLE hPipe, byte_t *ptr, int len);
+ #endif
+ bool canConnect;
+};
+
+#endif // CLIENTCATCHCOPY_H
diff --git a/catchcopy-windows-explorer-plugin/DDShellExt.cpp b/catchcopy-windows-explorer-plugin/DDShellExt.cpp
new file mode 100755
index 0000000..25142d5
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/DDShellExt.cpp
@@ -0,0 +1,188 @@
+// DDShellExt.cpp : Implementation of CDDShellExt
+
+#include "tchar.h"
+#include "DDShellExt.h"
+#include "ClientCatchcopy.h"
+
+#include <Shlwapi.h>
+
+extern HINSTANCE g_hInst;
+extern long g_cDllRef;
+
+CDDShellExt::CDDShellExt(): m_cRef(1)
+{
+ InterlockedIncrement(&g_cDllRef);
+}
+
+CDDShellExt::~CDDShellExt()
+{
+ InterlockedDecrement(&g_cDllRef);
+}
+
+// Query to the interface the component supported.
+IFACEMETHODIMP CDDShellExt::QueryInterface(REFIID riid, void **ppv)
+{
+ if(riid == IID_IUnknown || riid == IID_IContextMenu)
+ {
+ *ppv = static_cast<IContextMenu*>(this);
+ }
+ else if (riid == IID_IShellExtInit)
+ {
+ *ppv = static_cast<IShellExtInit*>(this);
+ }
+ else
+ {
+ *ppv = NULL;
+ return E_NOINTERFACE;
+ }
+ reinterpret_cast<IUnknown*>(*ppv)->AddRef();
+ return S_OK;
+}
+
+// Increase the reference count for an interface on an object.
+IFACEMETHODIMP_(ULONG) CDDShellExt::AddRef()
+{
+ return InterlockedIncrement(&m_cRef);
+}
+
+// Decrease the reference count for an interface on an object.
+IFACEMETHODIMP_(ULONG) CDDShellExt::Release()
+{
+ ULONG cRef = InterlockedDecrement(&m_cRef);
+ if (0 == cRef)
+ delete this;
+ return cRef;
+}
+
+STDMETHODIMP CDDShellExt::Initialize(LPCITEMIDLIST pidlFolder,LPDATAOBJECT pDO,HKEY hProgID)
+{
+ (void)hProgID;
+ if(!connected)
+ {
+ bool b = m_ac.connectToServer();
+
+ if (b==true)
+ {
+ connected=true;
+ }
+ else
+ return E_FAIL;
+ }
+
+ FORMATETC fmt={CF_HDROP,NULL,DVASPECT_CONTENT,-1,TYMED_HGLOBAL};
+ STGMEDIUM stg={TYMED_HGLOBAL};
+ HDROP hDrop;
+
+ fDestDir[0]=0;
+ if (!SHGetPathFromIDList(pidlFolder,fDestDir))
+ {
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ MessageBox(NULL,L"Initialize",L"E_FAIL 1",MB_OK);
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ return E_FAIL;
+ }
+
+ // Detect if it's explorer that started the operation by enumerating available
+ // clipboard formats and searching for one that only explorer uses
+ IEnumFORMATETC *en;
+ FORMATETC fmt2;
+ WCHAR fmtName[65535]=L"\0";
+ fFromExplorer=false;
+ pDO->EnumFormatEtc(DATADIR_GET,&en);
+ while(en->Next(1,&fmt2,NULL)==S_OK){
+ GetClipboardFormatName(fmt2.cfFormat,fmtName,sizeof(fmtName));
+ if (!wcscmp(fmtName,CFSTR_SHELLIDLIST)) fFromExplorer=true;
+ }
+ en->Release();
+
+ // Look for CF_HDROP data in the data object. If there
+ // is no such data, return an error back to Explorer.
+ if (FAILED(pDO->GetData(&fmt,&stg)))
+ {
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ MessageBox(NULL,L"Initialize",L"E_INVALIDARG 2",MB_OK);
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ return E_INVALIDARG;
+ }
+
+ // Get a pointer to the actual data.
+ hDrop=(HDROP)GlobalLock(stg.hGlobal);
+
+ // Make sure it worked.
+ if (hDrop==NULL)
+ {
+ #ifdef CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ MessageBox(NULL,L"Initialize",L"E_INVALIDARG 1",MB_OK);
+ #endif // CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+ return E_INVALIDARG;
+ }
+
+ UINT numFiles,i;
+ WCHAR fn[MAX_PATH]=L"";
+
+ numFiles=DragQueryFile(hDrop,0xFFFFFFFF,NULL,0);
+
+ if (numFiles)
+ {
+ for(i=0;i<numFiles;++i)
+ {
+ if(DragQueryFile(hDrop,i,fn,MAX_PATH))
+ sources.push_back(fn);
+ }
+ }
+
+ GlobalUnlock(stg.hGlobal);
+ ReleaseStgMedium(&stg);
+
+ return S_OK;
+}
+
+STDMETHODIMP CDDShellExt::QueryContextMenu(HMENU hmenu,UINT uMenuIndex,UINT uidFirstCmd,UINT uidLastCmd,UINT uFlags)
+{
+ (void)uidLastCmd;
+ if(!m_ac.isConnected())
+ {
+ if(!m_ac.connectToServer())
+ return E_FAIL;
+ }
+ if (uFlags&CMF_DEFAULTONLY)
+ return MAKE_HRESULT(SEVERITY_SUCCESS,FACILITY_NULL,0);
+
+ int x=uidFirstCmd;
+
+ InsertMenu(hmenu,uMenuIndex++,MF_STRING|MF_BYPOSITION,x++,L"Copy with advanced software");
+ InsertMenu(hmenu,uMenuIndex++,MF_STRING|MF_BYPOSITION,x++,L"Move with advanced software");
+
+ int defItem=GetMenuDefaultItem(hmenu,false,0);
+ if (defItem==1) // 1: Copy
+ {
+ if (fFromExplorer)
+ SetMenuDefaultItem(hmenu,uidFirstCmd,false);
+ }
+ else if (defItem==2) //2: Move
+ {
+ SetMenuDefaultItem(hmenu,uidFirstCmd+1,false);
+ }
+ return MAKE_HRESULT(SEVERITY_SUCCESS,FACILITY_NULL,2);
+}
+
+
+STDMETHODIMP CDDShellExt::InvokeCommand ( LPCMINVOKECOMMANDINFO pInfo )
+{
+ if(HIWORD(pInfo->lpVerb))
+ return E_INVALIDARG;
+ switch(LOWORD(pInfo->lpVerb))
+ {
+ case 0:// copy
+ if(!m_ac.addCopyWithDestination(sources,fDestDir))
+ return E_FAIL;
+ break;
+ case 1:// move
+ if(!m_ac.addMoveWithDestination(sources,fDestDir))
+ return E_FAIL;
+ break;
+ default :
+ return S_OK;
+ }
+ return S_OK;
+}
diff --git a/catchcopy-windows-explorer-plugin/DDShellExt.h b/catchcopy-windows-explorer-plugin/DDShellExt.h
new file mode 100755
index 0000000..9e9f68f
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/DDShellExt.h
@@ -0,0 +1,46 @@
+// DDShellExt.h : Declaration of the CDDShellExt
+
+#pragma once
+#include "resource.h" // main symbols
+#include "shlobj.h"
+#include "ClientCatchcopy.h"
+#include "Variable.h"
+#include "Deque.h"
+
+static bool connected=false;
+static ClientCatchcopy m_ac;
+
+// CDDShellExt
+
+extern const CLSID CLSID_DDShellExt;
+
+class CDDShellExt :
+ public IShellExtInit,
+ public IContextMenu
+{
+private:
+ static int fBaselistHandle;
+ bool fFromExplorer;
+ WCHAR fDestDir[MAX_PATH];
+ //static ClientCatchcopy m_ac;
+ CDeque sources;
+ //static bool connected;
+
+ // Reference count of component.
+ long m_cRef;
+public:
+ // IUnknown
+ IFACEMETHODIMP QueryInterface(REFIID riid, void **ppv);
+ IFACEMETHODIMP_(ULONG) AddRef();
+ IFACEMETHODIMP_(ULONG) Release();
+
+ // IShellExtInit
+ STDMETHODIMP Initialize(LPCITEMIDLIST, LPDATAOBJECT, HKEY);
+
+ CDDShellExt(void);
+ ~CDDShellExt(void);
+ // IContextMenu
+ STDMETHODIMP GetCommandString(UINT_PTR idCmd,UINT uFlags,UINT* pwReserved,LPSTR pszName,UINT cchMax){(void)idCmd;(void)uFlags;(void)pwReserved;(void)pszName;(void)cchMax;(void)connected;return E_NOTIMPL;};
+ STDMETHODIMP InvokeCommand(LPCMINVOKECOMMANDINFO);
+ STDMETHODIMP QueryContextMenu(HMENU,UINT,UINT,UINT,UINT);
+};
diff --git a/catchcopy-windows-explorer-plugin/Deque.cpp b/catchcopy-windows-explorer-plugin/Deque.cpp
new file mode 100755
index 0000000..93a9fcb
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/Deque.cpp
@@ -0,0 +1,100 @@
+#include "Deque.h"
+#include <windows.h>
+
+CDeque::CDeque(void)
+{
+ top1=0;
+ top2=0;
+ head=NULL;
+ tail=NULL;
+}
+
+CDeque::~CDeque(void)
+{
+}
+
+void CDeque::push_front(wchar_t *str)
+{
+ CNode *temp;
+ if(top1+top2 >= MAX_DEQUE)
+ {
+ return ;
+ }
+
+ if(top1+top2 == 0)
+ {
+ head = new CNode;
+ wcscpy(head->str, str);
+ head->next=NULL;
+ head->prev=NULL;
+ tail=head;
+ top1++;
+ }
+ else
+ {
+ top1++;
+ temp=new CNode;
+ wcscpy(temp->str, str);
+ temp->next=head;
+ temp->prev=NULL;
+ head->prev=temp;
+ head=temp;
+ }
+}
+
+void CDeque::push_back(wchar_t *str)
+{
+ CNode *temp;
+ if(top1+top2 >= MAX_DEQUE)
+ {
+ return ;
+ }
+ if(top1+top2 == 0)
+ {
+ head = new CNode;
+ wcscpy(head->str, str);
+ head->next=NULL;
+ head->prev=NULL;
+ tail=head;
+ top1++;
+ }
+ else
+ {
+ top2++;
+ temp=new CNode;
+ wcscpy(temp->str, str);
+ temp->next=NULL;
+ temp->prev=tail;
+ tail->next=temp;
+ tail=temp;
+ }
+}
+
+int CDeque::size()
+{
+ return top1 + top2;
+}
+
+wchar_t *CDeque::at(int pos)
+{
+ int i=0;
+ CNode *temp;
+
+ if(top1+top2 <= 0)
+ {
+ return NULL;
+ }
+
+ temp=head;
+ while(temp!=NULL)
+ {
+ if(i==pos)
+ return temp->str;
+
+ temp=temp->next;
+
+ i++;
+ }
+
+ return NULL;
+}
diff --git a/catchcopy-windows-explorer-plugin/Deque.h b/catchcopy-windows-explorer-plugin/Deque.h
new file mode 100755
index 0000000..e0e1f28
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/Deque.h
@@ -0,0 +1,29 @@
+#pragma once
+
+#define MAX_STR_LEN 512
+#define MAX_DEQUE 512
+
+class CNode
+{
+public:
+ wchar_t str[MAX_STR_LEN];
+ class CNode *next;
+ class CNode *prev;
+};
+
+class CDeque : public CNode
+{
+public:
+ CDeque(void);
+ ~CDeque(void);
+
+private:
+ CNode *head,*tail;
+ int top1,top2;
+
+public:
+ void push_front(wchar_t *str);
+ void push_back(wchar_t *str);
+ int size();
+ wchar_t *at(int pos);
+};
diff --git a/catchcopy-windows-explorer-plugin/Reg.cpp b/catchcopy-windows-explorer-plugin/Reg.cpp
new file mode 100755
index 0000000..37f7cc1
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/Reg.cpp
@@ -0,0 +1,403 @@
+#include "Reg.h"
+#include <strsafe.h>
+
+//
+// FUNCTION: SetHKCRRegistryKeyAndValue
+//
+// PURPOSE: The function creates a HKCR registry key and sets the specified
+// registry value.
+//
+// PARAMETERS:
+// * pszSubKey - specifies the registry key under HKCR. If the key does not
+// exist, the function will create the registry key.
+// * pszValueName - specifies the registry value to be set. If pszValueName
+// is NULL, the function will set the default value.
+// * pszData - specifies the string data of the registry value.
+//
+// RETURN VALUE:
+// If the function succeeds, it returns S_OK. Otherwise, it returns an
+// HRESULT error code.
+//
+HRESULT SetHKCRRegistryKeyAndValue(PCWSTR pszSubKey, PCWSTR pszValueName,
+ PCWSTR pszData)
+{
+ HRESULT hr;
+ HKEY hKey = NULL;
+
+ // Creates the specified registry key. If the key already exists, the
+ // function opens it.
+ hr = HRESULT_FROM_WIN32(RegCreateKeyEx(
+ #ifdef CATCHCOPY_ROOT_MODE
+ HKEY_CLASSES_ROOT
+ #else
+ HKEY_CURRENT_USER
+ #endif
+ , pszSubKey, 0,
+ NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS | KEY_WOW64_64KEY, NULL, &hKey, NULL));
+
+ if (SUCCEEDED(hr))
+ {
+ if (pszData != NULL)
+ {
+ // Set the specified value of the key.
+ DWORD cbData = lstrlen(pszData) * sizeof(*pszData);
+ hr = HRESULT_FROM_WIN32(RegSetValueEx(hKey, pszValueName, 0,
+ REG_SZ, reinterpret_cast<const BYTE *>(pszData), cbData));
+ }
+
+ RegCloseKey(hKey);
+ }
+
+ return hr;
+}
+
+LONG RecursiveDeleteKey(HKEY hKeyParent, PCWSTR szKeyChild)
+{
+ // Open the child.
+ HKEY hKeyChild ;
+ LONG lRes = RegOpenKeyEx(hKeyParent, szKeyChild, 0,
+ KEY_ALL_ACCESS | KEY_WOW64_64KEY, &hKeyChild) ;
+ if (lRes != ERROR_SUCCESS)
+ {
+ return lRes ;
+ }
+ // Enumerate all of the decendents of this child.
+ FILETIME time ;
+ wchar_t szBuffer[MAX_PATH];
+ DWORD dwSize = MAX_PATH ;
+ while (RegEnumKeyEx(hKeyChild, 0, (LPWSTR)szBuffer, &dwSize, NULL,
+ NULL, NULL, &time) == ERROR_SUCCESS)
+ {
+ // Delete the decendents of this child.
+ lRes = RecursiveDeleteKey(hKeyChild, (PCWSTR)szBuffer) ;
+ if (lRes != ERROR_SUCCESS)
+ {
+ // Cleanup before exiting.
+ RegCloseKey(hKeyChild) ;
+ return lRes;
+ }
+ dwSize = MAX_PATH ;
+ }
+
+ // Close the child.
+ RegCloseKey(hKeyChild) ;
+
+ // Delete this child.
+ return RegDeleteKey(hKeyParent, szKeyChild) ;
+}
+
+//
+// FUNCTION: GetHKCRRegistryKeyAndValue
+//
+// PURPOSE: The function opens a HKCR registry key and gets the data for the
+// specified registry value name.
+//
+// PARAMETERS:
+// * pszSubKey - specifies the registry key under HKCR. If the key does not
+// exist, the function returns an error.
+// * pszValueName - specifies the registry value to be retrieved. If
+// pszValueName is NULL, the function will get the default value.
+// * pszData - a pointer to a buffer that receives the value's string data.
+// * cbData - specifies the size of the buffer in bytes.
+//
+// RETURN VALUE:
+// If the function succeeds, it returns S_OK. Otherwise, it returns an
+// HRESULT error code. For example, if the specified registry key does not
+// exist or the data for the specified value name was not set, the function
+// returns COR_E_FILENOTFOUND (0x80070002).
+//
+HRESULT GetHKCRRegistryKeyAndValue(PCWSTR pszSubKey, PCWSTR pszValueName,
+ PWSTR pszData, DWORD cbData)
+{
+ HRESULT hr;
+ HKEY hKey = NULL;
+
+ // Try to open the specified registry key.
+ hr = HRESULT_FROM_WIN32(RegOpenKeyEx(
+ #ifdef CATCHCOPY_ROOT_MODE
+ HKEY_CLASSES_ROOT
+ #else
+ HKEY_CURRENT_USER
+ #endif
+ , pszSubKey, 0,
+ KEY_READ, &hKey));
+
+ if (SUCCEEDED(hr))
+ {
+ // Get the data for the specified value name.
+ hr = HRESULT_FROM_WIN32(RegQueryValueEx(hKey, pszValueName, NULL,
+ NULL, reinterpret_cast<LPBYTE>(pszData), &cbData));
+
+ RegCloseKey(hKey);
+ }
+
+ return hr;
+}
+
+//
+// FUNCTION: RegisterInprocServer
+//
+// PURPOSE: Register the in-process component in the registry.
+//
+// PARAMETERS:
+// * pszModule - Path of the module that contains the component
+// * clsid - Class ID of the component
+// * pszFriendlyName - Friendly name
+// * pszThreadModel - Threading model
+//
+// NOTE: The function creates the HKCR\CLSID\{<CLSID>} key in the registry.
+//
+// HKCR
+// {
+// NoRemove CLSID
+// {
+// ForceRemove {<CLSID>} = s '<Friendly Name>'
+// {
+// InprocServer32 = s '%MODULE%'
+// {
+// val ThreadingModel = s '<Thread Model>'
+// }
+// }
+// }
+// }
+//
+HRESULT RegisterInprocServer(PCWSTR pszModule, const CLSID& clsid, PCWSTR pszFriendlyName, PCWSTR pszThreadModel)
+{
+ if (pszModule == NULL || pszThreadModel == NULL)
+ {
+ return E_INVALIDARG;
+ }
+
+ HRESULT hr;
+
+ wchar_t szCLSID[MAX_PATH];
+ StringFromGUID2(clsid, szCLSID, ARRAYSIZE(szCLSID));
+
+ wchar_t szSubkey[MAX_PATH];
+
+ // Create the HKCR\CLSID\{<CLSID>} key.
+ hr = StringCchPrintf(szSubkey, ARRAYSIZE(szSubkey),
+ #ifdef CATCHCOPY_ROOT_MODE
+ L"CLSID\\%s"
+ #else
+ L"Software\\Classes\\CLSID\\%s"
+ #endif
+ , szCLSID);
+ if (SUCCEEDED(hr))
+ {
+ hr = SetHKCRRegistryKeyAndValue(szSubkey, NULL, pszFriendlyName);
+
+ // Create the HKCR\CLSID\{<CLSID>}\InprocServer32 key.
+ if (SUCCEEDED(hr))
+ {
+ hr = StringCchPrintf(szSubkey, ARRAYSIZE(szSubkey),
+ #ifdef CATCHCOPY_ROOT_MODE
+ L"CLSID\\%s\\InprocServer32"
+ #else
+ L"Software\\Classes\\CLSID\\%s\\InprocServer32"
+ #endif
+ , szCLSID);
+ if (SUCCEEDED(hr))
+ {
+ // Set the default value of the InprocServer32 key to the
+ // path of the COM module.
+ hr = SetHKCRRegistryKeyAndValue(szSubkey, NULL, pszModule);
+ if (SUCCEEDED(hr))
+ {
+ // Set the threading model of the component.
+ hr = SetHKCRRegistryKeyAndValue(szSubkey, L"ThreadingModel", pszThreadModel);
+ }
+ }
+ }
+ }
+
+ return hr;
+}
+
+
+//
+// FUNCTION: UnregisterInprocServer
+//
+// PURPOSE: Unegister the in-process component in the registry.
+//
+// PARAMETERS:
+// * clsid - Class ID of the component
+//
+// NOTE: The function deletes the HKCR\CLSID\{<CLSID>} key in the registry.
+//
+HRESULT UnregisterInprocServer(const CLSID& clsid)
+{
+ HRESULT hr = S_OK;
+
+ wchar_t szCLSID[MAX_PATH];
+ StringFromGUID2(clsid, szCLSID, ARRAYSIZE(szCLSID));
+
+ wchar_t szSubkey[MAX_PATH];
+
+ // Delete the HKCR\CLSID\{<CLSID>} key.
+ hr = StringCchPrintf(szSubkey, ARRAYSIZE(szSubkey),
+ #ifdef CATCHCOPY_ROOT_MODE
+ L"CLSID\\%s"
+ #else
+ L"Software\\Classes\\CLSID\\%s"
+ #endif
+ , szCLSID);
+
+ if (SUCCEEDED(hr))
+ {
+ hr = HRESULT_FROM_WIN32(RecursiveDeleteKey(
+ #ifdef CATCHCOPY_ROOT_MODE
+ HKEY_CLASSES_ROOT
+ #else
+ HKEY_CURRENT_USER
+ #endif
+ , szSubkey));
+ }
+
+ return hr;
+}
+//
+// FUNCTION: RegisterShellExtContextMenuHandler
+//
+// PURPOSE: Register the context menu handler.
+//
+// PARAMETERS:
+// * pszFileType - The file type that the context menu handler is
+// associated with. For example, '*' means all file types; '.txt' means
+// all .txt files. The parameter must not be NULL.
+// * clsid - Class ID of the component
+// * pszFriendlyName - Friendly name
+//
+// NOTE: The function creates the following key in the registry.
+//
+// HKCR
+// {
+// NoRemove <File Type>
+// {
+// NoRemove shellex
+// {
+// NoRemove ContextMenuHandlers
+// {
+// {<CLSID>} = s '<Friendly Name>'
+// }
+// }
+// }
+// }
+//
+HRESULT RegisterShellExtContextMenuHandler(
+ PCWSTR pszFileType, const CLSID& clsid, PCWSTR pszFriendlyName)
+{
+ if (pszFileType == NULL)
+ {
+ return E_INVALIDARG;
+ }
+
+ HRESULT hr;
+
+ wchar_t szCLSID[MAX_PATH];
+ StringFromGUID2(clsid, szCLSID, ARRAYSIZE(szCLSID));
+
+ wchar_t szSubkey[MAX_PATH];
+
+ // If pszFileType starts with '.', try to read the default value of the
+ // HKCR\<File Type> key which contains the ProgID to which the file type
+ // is linked.
+ if (*pszFileType == L'.')
+ {
+ wchar_t szDefaultVal[260];
+ hr = GetHKCRRegistryKeyAndValue(pszFileType, NULL, szDefaultVal,
+ sizeof(szDefaultVal));
+
+ // If the key exists and its default value is not empty, use the
+ // ProgID as the file type.
+ if (SUCCEEDED(hr) && szDefaultVal[0] != L'\0')
+ {
+ pszFileType = szDefaultVal;
+ }
+ }
+
+ // Create the key HKCR\<File Type>\shellex\DragDropHandlers\{<CLSID>}
+ hr = StringCchPrintf(szSubkey, ARRAYSIZE(szSubkey),
+ #ifdef CATCHCOPY_ROOT_MODE
+ L"%s\\shellex\\DragDropHandlers\\%s"
+ #else
+ L"Software\\Classes\\%s\\shellex\\DragDropHandlers\\%s"
+ #endif
+ , pszFileType, szCLSID);
+ if (SUCCEEDED(hr))
+ {
+ // Set the default value of the key.
+ hr = SetHKCRRegistryKeyAndValue(szSubkey, NULL, pszFriendlyName);
+ }
+
+ return hr;
+}
+
+
+//
+// FUNCTION: UnregisterShellExtContextMenuHandler
+//
+// PURPOSE: Unregister the context menu handler.
+//
+// PARAMETERS:
+// * pszFileType - The file type that the context menu handler is
+// associated with. For example, '*' means all file types; '.txt' means
+// all .txt files. The parameter must not be NULL.
+// * clsid - Class ID of the component
+//
+// NOTE: The function removes the {<CLSID>} key under
+// HKCR\<File Type>\shellex\ContextMenuHandlers in the registry.
+//
+HRESULT UnregisterShellExtContextMenuHandler(
+ PCWSTR pszFileType, const CLSID& clsid)
+{
+ if (pszFileType == NULL)
+ {
+ return E_INVALIDARG;
+ }
+
+ HRESULT hr;
+
+ wchar_t szCLSID[MAX_PATH];
+ StringFromGUID2(clsid, szCLSID, ARRAYSIZE(szCLSID));
+
+ wchar_t szSubkey[MAX_PATH];
+
+ // If pszFileType starts with '.', try to read the default value of the
+ // HKCR\<File Type> key which contains the ProgID to which the file type
+ // is linked.
+ if (*pszFileType == L'.')
+ {
+ wchar_t szDefaultVal[260];
+ hr = GetHKCRRegistryKeyAndValue(pszFileType, NULL, szDefaultVal,
+ sizeof(szDefaultVal));
+
+ // If the key exists and its default value is not empty, use the
+ // ProgID as the file type.
+ if (SUCCEEDED(hr) && szDefaultVal[0] != L'\0')
+ {
+ pszFileType = szDefaultVal;
+ }
+ }
+
+ // Remove the HKCR\<File Type>\shellex\DragDropHandlers\{<CLSID>} key.
+ hr = StringCchPrintf(szSubkey, ARRAYSIZE(szSubkey),
+ #ifdef CATCHCOPY_ROOT_MODE
+ L"%s\\shellex\\DragDropHandlers\\%s"
+ #else
+ L"Software\\Classes\\%s\\shellex\\DragDropHandlers\\%s"
+ #endif
+ , pszFileType, szCLSID);
+ if (SUCCEEDED(hr))
+ {
+ hr = HRESULT_FROM_WIN32(RecursiveDeleteKey(
+ #ifdef CATCHCOPY_ROOT_MODE
+ HKEY_CLASSES_ROOT
+ #else
+ HKEY_CURRENT_USER
+ #endif
+ , szSubkey));
+ }
+
+ return hr;
+}
diff --git a/catchcopy-windows-explorer-plugin/Reg.h b/catchcopy-windows-explorer-plugin/Reg.h
new file mode 100755
index 0000000..6bc9a26
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/Reg.h
@@ -0,0 +1,103 @@
+#ifndef _REG_H_
+#define _REG_H_
+#pragma once
+
+//#define CATCHCOPY_ROOT_MODE
+
+#include <windows.h>
+#include <winreg.h>
+//
+// FUNCTION: RegisterInprocServer
+//
+// PURPOSE: Register the in-process component in the registry.
+//
+// PARAMETERS:
+// * pszModule - Path of the module that contains the component
+// * clsid - Class ID of the component
+// * pszFriendlyName - Friendly name
+// * pszThreadModel - Threading model
+//
+// NOTE: The function creates the HKCR\CLSID\{<CLSID>} key in the registry.
+//
+// HKCR
+// {
+// NoRemove CLSID
+// {
+// ForceRemove {<CLSID>} = s '<Friendly Name>'
+// {
+// InprocServer32 = s '%MODULE%'
+// {
+// val ThreadingModel = s '<Thread Model>'
+// }
+// }
+// }
+// }
+//
+HRESULT RegisterInprocServer(PCWSTR pszModule, const CLSID& clsid,
+ PCWSTR pszFriendlyName, PCWSTR pszThreadModel);
+
+
+//
+// FUNCTION: UnregisterInprocServer
+//
+// PURPOSE: Unegister the in-process component in the registry.
+//
+// PARAMETERS:
+// * clsid - Class ID of the component
+//
+// NOTE: The function deletes the HKCR\CLSID\{<CLSID>} key in the registry.
+//
+HRESULT UnregisterInprocServer(const CLSID& clsid);
+
+
+//
+// FUNCTION: RegisterShellExtContextMenuHandler
+//
+// PURPOSE: Register the context menu handler.
+//
+// PARAMETERS:
+// * pszFileType - The file type that the context menu handler is
+// associated with. For example, '*' means all file types; '.txt' means
+// all .txt files. The parameter must not be NULL.
+// * clsid - Class ID of the component
+// * pszFriendlyName - Friendly name
+//
+// NOTE: The function creates the following key in the registry.
+//
+// HKCR
+// {
+// NoRemove <File Type>
+// {
+// NoRemove shellex
+// {
+// NoRemove ContextMenuHandlers
+// {
+// {<CLSID>} = s '<Friendly Name>'
+// }
+// }
+// }
+// }
+//
+HRESULT RegisterShellExtContextMenuHandler(
+ PCWSTR pszFileType, const CLSID& clsid, PCWSTR pszFriendlyName);
+
+
+//
+// FUNCTION: UnregisterShellExtContextMenuHandler
+//
+// PURPOSE: Unregister the context menu handler.
+//
+// PARAMETERS:
+// * pszFileType - The file type that the context menu handler is
+// associated with. For example, '*' means all file types; '.txt' means
+// all .txt files. The parameter must not be NULL.
+// * clsid - Class ID of the component
+//
+// NOTE: The function removes the {<CLSID>} key under
+// HKCR\<File Type>\shellex\ContextMenuHandlers in the registry.
+//
+HRESULT UnregisterShellExtContextMenuHandler(
+ PCWSTR pszFileType, const CLSID& clsid);
+
+LONG RecursiveDeleteKey(HKEY hKeyParent, PCWSTR szKeyChild);
+#endif //_REG_H_
diff --git a/catchcopy-windows-explorer-plugin/Variable.h b/catchcopy-windows-explorer-plugin/Variable.h
new file mode 100755
index 0000000..292e2a0
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/Variable.h
@@ -0,0 +1,7 @@
+#ifndef VARIABLE_H
+#define VARIABLE_H
+
+/// \brief Un-comment this next line to put ultracopier in debug mode
+//#define CATCHCOPY_EXPLORER_PLUGIN_DEBUG
+
+#endif // VARIABLE_H
diff --git a/catchcopy-windows-explorer-plugin/resource.h b/catchcopy-windows-explorer-plugin/resource.h
new file mode 100755
index 0000000..4823355
--- /dev/null
+++ b/catchcopy-windows-explorer-plugin/resource.h
@@ -0,0 +1,18 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by CatchCopy.rc
+//
+#define IDS_PROJNAME 100
+#define IDR_CATCHCOPY 101
+#define IDR_DDSHELLEXT 102
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 201
+#define _APS_NEXT_COMMAND_VALUE 32768
+#define _APS_NEXT_CONTROL_VALUE 201
+#define _APS_NEXT_SYMED_VALUE 103
+#endif
+#endif
diff --git a/cpp11addition.cpp b/cpp11addition.cpp
index 41f3cc1..0375ea3 100644..100755
--- a/cpp11addition.cpp
+++ b/cpp11addition.cpp
@@ -214,7 +214,7 @@ std::string binarytoHexa(const std::vector<char> &data, bool *ok)
std::string binarytoHexa(const void * const data, const uint32_t &size, bool *ok)
{
- return binarytoHexa(reinterpret_cast<const char * const>(data),size,ok);
+ return binarytoHexa(reinterpret_cast<const char *>(data),size,ok);
}
std::string binarytoHexa(const char * const data, const uint32_t &size, bool *ok)
@@ -476,6 +476,69 @@ std::string FSabsolutePath(const std::string &string)
return tempFile;
}
+std::wstring FSabsoluteFilePath(const std::wstring &string)
+{
+ std::wstring newstring=string;
+ #ifdef _WIN32
+ stringreplaceAll(newstring,L"\\",L"/");
+ #endif
+ stringreplaceAll(newstring,L"//",L"/");
+ std::vector<std::wstring> parts=stringsplit(newstring,'/');
+
+ #ifndef _WIN32
+ unsigned int index=1;
+ #else
+ unsigned int index=2;
+ #endif
+ while(index<parts.size())
+ {
+ if(parts.at(index)==L"..")
+ {
+ parts.erase(parts.begin()+index);
+ #ifndef _WIN32
+ if(index>0 && (index>1 || !parts.at(index-1).empty()))
+ #else
+ if(index>1)
+ #endif
+ {
+ parts.erase(parts.begin()+index-1);
+ index--;
+ }
+ }
+ else
+ index++;
+ }
+
+ #ifndef _WIN32
+ if(parts.empty() || (parts.size()==1 && parts.at(0).empty()))
+ return L"/";
+ #endif
+
+ std::wstring newString;
+ std::vector<std::wstring> copy=parts;
+ unsigned int count=0;
+ while(!copy.empty())
+ {
+ if(count>0)
+ newString+=L'/';
+ newString+=copy.front();
+ copy.erase(copy.begin());
+ ++count;
+ }
+
+ return newString;
+}
+
+std::wstring FSabsolutePath(const std::wstring &string)
+{
+ const std::wstring &tempFile=FSabsoluteFilePath(string);
+ const std::size_t &found=tempFile.find_last_of(L"/\\");
+ if(found!=std::wstring::npos)
+ return tempFile.substr(0,found)+L'/';
+ else
+ return tempFile;
+}
+
uint64_t msFrom1970()
{
return std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
@@ -501,16 +564,22 @@ std::vector<std::string> stringtostringlist(const std::string &string)
std::vector<std::string> returnedVar;
size_t start_pos = 0;
size_t firstChar = 0;
- while((start_pos = string.find(',', start_pos)) != std::string::npos) {
- if(start_pos==0 || string.at(start_pos-1)!=',')
+ do
+ {
+ size_t s=start_pos = string.find(',', start_pos);
+ if(s == std::string::npos)
+ start_pos=string.size();
+ if(start_pos>=string.size() || string.at(start_pos+1)!=',')
{
- std::string tempString=string.substr(firstChar,start_pos-1);
+ std::string tempString=string.substr(firstChar,start_pos-firstChar);
stringreplaceAll(tempString,",,",",");
returnedVar.push_back(tempString);
start_pos++;
firstChar=start_pos;
}
- }
+ else
+ start_pos+=2;
+ } while(firstChar<start_pos || start_pos<string.size());
return returnedVar;
}
@@ -529,3 +598,89 @@ std::string stringlisttostring(const std::vector<std::string> &stringlist)
}
return returnedString;
}
+
+bool stringreplaceOne(std::wstring& str, const std::wstring& from, const std::wstring& to)
+{
+ const size_t start_pos = str.find(from);
+ if(start_pos == std::wstring::npos)
+ return false;
+ str.replace(start_pos, from.length(), to);
+ return true;
+}
+
+uint8_t stringreplaceAll(std::wstring& str, const std::wstring& from, const std::wstring& to)
+{
+ if(from.empty())
+ return 0;
+ size_t start_pos = 0;
+ uint8_t count=0;
+ while((start_pos = str.find(from, start_pos)) != std::wstring::npos) {
+ str.replace(start_pos, from.length(), to);
+ start_pos += to.length(); // In case 'to' contains 'from', like replacing 'x' with 'yx'
+ count++;
+ }
+ return count;
+}
+
+bool stringEndsWith(std::wstring const &fullString, std::wstring const &ending)
+{
+ if (fullString.length() >= ending.length()) {
+ return (0 == fullString.compare (fullString.length() - ending.length(), ending.length(), ending));
+ } else {
+ return false;
+ }
+}
+
+bool stringEndsWith(std::wstring const &fullString, char const &ending)
+{
+ if (fullString.length()>0) {
+ return fullString[fullString.size()-1]==ending;
+ } else {
+ return false;
+ }
+}
+
+bool stringStartWith(std::wstring const &fullString, std::wstring const &starting)
+{
+ if (fullString.length() >= starting.length()) {
+ return (fullString.substr(0,starting.length())==starting);
+ } else {
+ return false;
+ }
+}
+
+bool stringStartWith(std::wstring const &fullString, char const &starting)
+{
+ if (fullString.length()>0) {
+ return fullString[0]==starting;
+ } else {
+ return false;
+ }
+}
+
+std::vector<std::wstring> stringsplit(const std::wstring &s, wchar_t delim)
+{
+ std::vector<std::wstring> elems;
+
+ std::wstring::size_type i = 0;
+ std::wstring::size_type j = s.find(delim);
+
+ if(j == std::wstring::npos)
+ {
+ if(!s.empty())
+ elems.push_back(s);
+ return elems;
+ }
+ else
+ {
+ while (j != std::wstring::npos) {
+ elems.push_back(s.substr(i, j-i));
+ i = ++j;
+ j = s.find(delim, j);
+
+ if (j == std::wstring::npos)
+ elems.push_back(s.substr(i, s.length()));
+ }
+ return elems;
+ }
+}
diff --git a/cpp11addition.h b/cpp11addition.h
index 022f175..061285e 100644..100755
--- a/cpp11addition.h
+++ b/cpp11addition.h
@@ -39,6 +39,14 @@ std::string stringimplode(const std::vector<std::string>& elems, char delim);
std::string stringimplode(const std::queue<std::string>& elems, char delim);
std::string stringimplode(const std::vector<std::string>& elems, const std::string &delim);
+bool stringreplaceOne(std::wstring& str, const std::wstring& from, const std::wstring& to);
+uint8_t stringreplaceAll(std::wstring& str, const std::wstring& from, const std::wstring& to);
+bool stringEndsWith(std::wstring const &fullString, std::wstring const &ending);
+bool stringEndsWith(std::wstring const &fullString, char const &ending);
+bool stringStartWith(std::wstring const &fullString, std::wstring const &starting);
+bool stringStartWith(std::wstring const &fullString, char const &starting);
+std::vector<std::wstring> stringsplit(const std::wstring &s, wchar_t delim);
+
uint8_t stringtouint8(const std::string &string,bool *ok=NULL);
uint16_t stringtouint16(const std::string &string,bool *ok=NULL);
uint32_t stringtouint32(const std::string &string,bool *ok=NULL);
@@ -65,6 +73,8 @@ void binaryAppend(std::vector<char> &data, const char * const add, const uint32_
std::vector<char> base64toBinary(const std::string &string);
std::string FSabsoluteFilePath(const std::string &string);
std::string FSabsolutePath(const std::string &string);
+std::wstring FSabsoluteFilePath(const std::wstring &string);
+std::wstring FSabsolutePath(const std::wstring &string);
uint64_t msFrom1970();
uint64_t sFrom1970();
diff --git a/cpp11additionstringtointcpp.cpp b/cpp11additionstringtointcpp.cpp
index 50a9d17..50a9d17 100644..100755
--- a/cpp11additionstringtointcpp.cpp
+++ b/cpp11additionstringtointcpp.cpp
diff --git a/file-manager/libfm-qt-uc.patch b/file-manager/libfm-qt-uc.patch
new file mode 100644
index 0000000..1f2dfb9
--- /dev/null
+++ b/file-manager/libfm-qt-uc.patch
@@ -0,0 +1,94 @@
+diff -ur libfm-qt-0.14.1/CMakeLists.txt libfm-qt-0.14.1-patched/CMakeLists.txt
+--- libfm-qt-0.14.1/CMakeLists.txt 2019-02-24 10:56:00.000000000 -0400
++++ libfm-qt-0.14.1-patched/CMakeLists.txt 2019-12-19 13:58:02.031193213 -0400
+@@ -34,6 +34,7 @@
+ find_package(Qt5Widgets "${QT_MINIMUM_VERSION}" REQUIRED)
+ find_package(Qt5LinguistTools "${QT_MINIMUM_VERSION}" REQUIRED)
+ find_package(Qt5X11Extras "${QT_MINIMUM_VERSION}" REQUIRED)
++find_package(Qt5Network "${QT_MINIMUM_VERSION}" REQUIRED)
+
+ find_package(lxqt-build-tools "${LXQTBT_MINIMUM_VERSION}" REQUIRED)
+ find_package(GLIB "${GLIB_MINIMUM_VERSION}" REQUIRED COMPONENTS gio gio-unix gobject gthread)
+diff -ur libfm-qt-0.14.1/src/utilities.cpp libfm-qt-0.14.1-patched/src/utilities.cpp
+--- libfm-qt-0.14.1/src/utilities.cpp 2019-02-24 10:56:00.000000000 -0400
++++ libfm-qt-0.14.1-patched/src/utilities.cpp 2019-12-19 16:25:07.811840646 -0400
+@@ -28,6 +28,7 @@
+ #include <QMessageBox>
+ #include "fileoperation.h"
+ #include <QEventLoop>
++#include <QtNetwork/QLocalSocket>
+
+ #include <pwd.h>
+ #include <grp.h>
+@@ -95,6 +96,27 @@
+ return std::make_pair(paths, isCut);
+ }
+
++void sendRawOrderList(const QStringList & order, QLocalSocket &socket, int idNextOrder)
++{
++ QByteArray block;
++ QDataStream out(&block, QIODevice::WriteOnly);
++ out.setVersion(QDataStream::Qt_4_4);
++ out << int(0);
++ out << idNextOrder;
++ out << order;
++ out.device()->seek(0);
++ out << block.size();
++ do //cut string list and send it as block of 32KB
++ {
++ QByteArray blockToSend;
++ int byteWriten;
++ blockToSend=block.left(32*1024);//32KB
++ block.remove(0,blockToSend.size());
++ byteWriten = socket.write(blockToSend);
++ }
++ while(block.size());
++}
++
+ void pasteFilesFromClipboard(const Fm::FilePath& destPath, QWidget* parent) {
+ QClipboard* clipboard = QApplication::clipboard();
+ const QMimeData* data = clipboard->mimeData();
+@@ -104,12 +126,38 @@
+ std::tie(paths, isCut) = parseClipboardData(*data);
+
+ if(!paths.empty()) {
+- if(isCut) {
+- FileOperation::moveFiles(paths, destPath, parent);
+- clipboard->clear(QClipboard::Clipboard);
++ QLocalSocket socket;
++ socket.connectToServer(QString::fromStdString("advanced-copier-"+std::to_string(getuid())));
++ socket.waitForConnected();
++ if(socket.state()==QLocalSocket::ConnectedState)
++ {
++ sendRawOrderList(QStringList() << "protocol" << "0002", socket, 1);
++ socket.waitForReadyRead();
++ socket.readAll();
++ QStringList l;
++ if(isCut) {
++ l << "mv";
++ clipboard->clear(QClipboard::Clipboard);
++ }
++ else {
++ l << "cp";
++ }
++ for(const FilePath &n : paths)
++ l << n.toString().get();
++ l << destPath.toString().get();
++ sendRawOrderList(l, socket, 2);
++ socket.waitForBytesWritten();
++ socket.close();
+ }
+- else {
+- FileOperation::copyFiles(paths, destPath, parent);
++ else
++ {
++ if(isCut) {
++ FileOperation::moveFiles(paths, destPath, parent);
++ clipboard->clear(QClipboard::Clipboard);
++ }
++ else {
++ FileOperation::copyFiles(paths, destPath, parent);
++ }
+ }
+ }
+ }
diff --git a/file-manager/pcmanfm-qt-uc.patch b/file-manager/pcmanfm-qt-uc.patch
new file mode 100644
index 0000000..16c80d2
--- /dev/null
+++ b/file-manager/pcmanfm-qt-uc.patch
@@ -0,0 +1,191 @@
+diff -ur pcmanfm-qt-0.14.1/CMakeLists.txt pcmanfm-qt-patched/CMakeLists.txt
+--- pcmanfm-qt-0.14.1/CMakeLists.txt 2019-02-23 20:16:13.000000000 -0400
++++ pcmanfm-qt-patched/CMakeLists.txt 2019-12-19 17:16:14.796019382 -0400
+@@ -24,6 +24,7 @@
+ find_package(Qt5LinguistTools ${QT_MINIMUM_VERSION} REQUIRED)
+ find_package(Qt5Widgets ${QT_MINIMUM_VERSION} REQUIRED)
+ find_package(Qt5X11Extras ${QT_MINIMUM_VERSION} REQUIRED)
++find_package(Qt5Network "${QT_MINIMUM_VERSION}" REQUIRED)
+ find_package(fm-qt ${LIBFMQT_MINIMUM_VERSION} REQUIRED)
+ find_package(lxqt-build-tools ${LXQTBT_MINIMUM_VERSION} REQUIRED)
+
+diff -ur pcmanfm-qt-0.14.1/pcmanfm/CMakeLists.txt pcmanfm-qt-patched/pcmanfm/CMakeLists.txt
+--- pcmanfm-qt-0.14.1/pcmanfm/CMakeLists.txt 2019-02-23 20:16:13.000000000 -0400
++++ pcmanfm-qt-patched/pcmanfm/CMakeLists.txt 2019-12-19 17:16:55.556039000 -0400
+@@ -79,6 +79,7 @@
+ Qt5::X11Extras
+ Qt5::Widgets
+ Qt5::DBus
++ Qt5::Network
+ fm-qt
+ )
+
+diff -ur pcmanfm-qt-0.14.1/pcmanfm/desktopwindow.cpp pcmanfm-qt-patched/pcmanfm/desktopwindow.cpp
+--- pcmanfm-qt-0.14.1/pcmanfm/desktopwindow.cpp 2019-02-23 20:16:13.000000000 -0400
++++ pcmanfm-qt-patched/pcmanfm/desktopwindow.cpp 2019-12-19 16:52:39.985314000 -0400
+@@ -40,6 +40,7 @@
+ #include <QStandardPaths>
+ #include <QClipboard>
+ #include <QWindow>
++#include <QtNetwork/QLocalSocket>
+
+ #include "./application.h"
+ #include "mainwindow.h"
+@@ -1324,11 +1325,73 @@
+ }
+ }
+
++void sendRawOrderList(const QStringList & order, QLocalSocket &socket, int idNextOrder)
++{
++ QByteArray block;
++ QDataStream out(&block, QIODevice::WriteOnly);
++ out.setVersion(QDataStream::Qt_4_4);
++ out << int(0);
++ out << idNextOrder;
++ out << order;
++ out.device()->seek(0);
++ out << block.size();
++ do //cut string list and send it as block of 32KB
++ {
++ QByteArray blockToSend;
++ int byteWriten;
++ blockToSend=block.left(32*1024);//32KB
++ block.remove(0,blockToSend.size());
++ byteWriten = socket.write(blockToSend);
++ }
++ while(block.size());
++}
++
+ void DesktopWindow::onPasteActivated() {
+ if(desktopHideItems_) {
+ return;
+ }
+- Fm::pasteFilesFromClipboard(path());
++ QClipboard* clipboard = QApplication::clipboard();
++ const QMimeData* data = clipboard->mimeData();
++ Fm::FilePathList paths;
++ bool isCut = false;
++
++ std::tie(paths, isCut) = Fm::parseClipboardData(*data);
++
++ if(!paths.empty()) {
++ QLocalSocket socket;
++ socket.connectToServer(QString::fromStdString("advanced-copier-"+std::to_string(getuid())));
++ socket.waitForConnected();
++ if(socket.state()==QLocalSocket::ConnectedState)
++ {
++ sendRawOrderList(QStringList() << "protocol" << "0002", socket, 1);
++ socket.waitForReadyRead();
++ socket.readAll();
++ QStringList l;
++ if(isCut) {
++ l << "mv";
++ clipboard->clear(QClipboard::Clipboard);
++ }
++ else {
++ l << "cp";
++ }
++ for(const Fm::FilePath &n : paths)
++ l << n.toString().get();
++ l << path().toString().get();
++ sendRawOrderList(l, socket, 2);
++ socket.waitForBytesWritten();
++ socket.close();
++ }
++ else
++ {
++ if(isCut) {
++ Fm::FileOperation::moveFiles(paths, path(), nullptr);
++ clipboard->clear(QClipboard::Clipboard);
++ }
++ else {
++ Fm::FileOperation::copyFiles(paths, path(), nullptr);
++ }
++ }
++ }
+ }
+
+ void DesktopWindow::onDeleteActivated() {
+diff -ur pcmanfm-qt-0.14.1/pcmanfm/mainwindow.cpp pcmanfm-qt-patched/pcmanfm/mainwindow.cpp
+--- pcmanfm-qt-0.14.1/pcmanfm/mainwindow.cpp 2019-02-23 20:16:13.000000000 -0400
++++ pcmanfm-qt-patched/pcmanfm/mainwindow.cpp 2019-12-19 17:21:07.078366000 -0400
+@@ -34,6 +34,7 @@
+ #include <QStandardPaths>
+ #include <QClipboard>
+ #include <QDebug>
++#include <QtNetwork/QLocalSocket>
+
+ #include "tabpage.h"
+ #include "launcher.h"
+@@ -1529,8 +1530,70 @@
+ cutFilesToClipboard(paths);
+ }
+
++void sendRawOrderListA(const QStringList & order, QLocalSocket &socket, int idNextOrder)
++{
++ QByteArray block;
++ QDataStream out(&block, QIODevice::WriteOnly);
++ out.setVersion(QDataStream::Qt_4_4);
++ out << int(0);
++ out << idNextOrder;
++ out << order;
++ out.device()->seek(0);
++ out << block.size();
++ do //cut string list and send it as block of 32KB
++ {
++ QByteArray blockToSend;
++ int byteWriten;
++ blockToSend=block.left(32*1024);//32KB
++ block.remove(0,blockToSend.size());
++ byteWriten = socket.write(blockToSend);
++ }
++ while(block.size());
++}
++
+ void MainWindow::on_actionPaste_triggered() {
+- pasteFilesFromClipboard(currentPage()->path(), this);
++ QClipboard* clipboard = QApplication::clipboard();
++ const QMimeData* data = clipboard->mimeData();
++ Fm::FilePathList paths;
++ bool isCut = false;
++
++ std::tie(paths, isCut) = parseClipboardData(*data);
++
++ if(!paths.empty()) {
++ QLocalSocket socket;
++ socket.connectToServer(QString::fromStdString("advanced-copier-"+std::to_string(getuid())));
++ socket.waitForConnected();
++ if(socket.state()==QLocalSocket::ConnectedState)
++ {
++ sendRawOrderListA(QStringList() << "protocol" << "0002", socket, 1);
++ socket.waitForReadyRead();
++ socket.readAll();
++ QStringList l;
++ if(isCut) {
++ l << "mv";
++ clipboard->clear(QClipboard::Clipboard);
++ }
++ else {
++ l << "cp";
++ }
++ for(const Fm::FilePath &n : paths)
++ l << n.toString().get();
++ l << currentPage()->path().toString().get();
++ sendRawOrderListA(l, socket, 2);
++ socket.waitForBytesWritten();
++ socket.close();
++ }
++ else
++ {
++ if(isCut) {
++ Fm::FileOperation::moveFiles(paths, currentPage()->path(), this);
++ clipboard->clear(QClipboard::Clipboard);
++ }
++ else {
++ Fm::FileOperation::copyFiles(paths, currentPage()->path(), this);
++ }
++ }
++ }
+ }
+
+ void MainWindow::on_actionDelete_triggered() {
diff --git a/file-manager/pcmanfm-qt.txt b/file-manager/pcmanfm-qt.txt
new file mode 100644
index 0000000..753ac4f
--- /dev/null
+++ b/file-manager/pcmanfm-qt.txt
@@ -0,0 +1,3 @@
+mkdir -v build;cd build;cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$LXQT_PREFIX -DPULL_TRANSLATIONS=no ..
+
+make
diff --git a/interface/FacilityInterface.h b/interface/FacilityInterface.h
index b64733b..1fd5366 100644
--- a/interface/FacilityInterface.h
+++ b/interface/FacilityInterface.h
@@ -9,6 +9,7 @@
#include <string>
#include <vector>
#include <QObject>
+#include <QBuffer>
#include "../StructEnumDefinition.h"
@@ -41,6 +42,8 @@ class FacilityInterface : public QObject
virtual std::string softwareName() const = 0;
/// \brief return if is ultimate
virtual bool isUltimate() const = 0;
+ /// \brief return audio if created from opus file, nullptr if failed
+ virtual void/*casted to #ifndef QAudioOutput*/* prepareOpusAudio(const std::string &file,QBuffer &buffer) const = 0;
};
#endif // FACILITY_INTERFACE_H
diff --git a/interface/PluginInterface_CopyEngine.h b/interface/PluginInterface_CopyEngine.h
index e6a243f..86b17b8 100644
--- a/interface/PluginInterface_CopyEngine.h
+++ b/interface/PluginInterface_CopyEngine.h
@@ -193,6 +193,8 @@ class PluginInterface_CopyEngineFactory : public QObject
virtual std::vector<std::string> supportedProtocolsForTheDestination() const = 0;
/// \brief to get the options of the copy engine
virtual QWidget * options() = 0;
+ /// \brief to get if have pause
+ virtual bool havePause() = 0;
public slots:
/// \brief to reset the options
virtual void resetOptions() = 0;
@@ -204,7 +206,7 @@ class PluginInterface_CopyEngineFactory : public QObject
};
#ifndef ULTRACOPIER_PLUGIN_ALL_IN_ONE
-Q_DECLARE_INTERFACE(PluginInterface_CopyEngineFactory,"first-world.info.ultracopier.PluginInterface.CopyEngineFactory/1.2.4.0");
+Q_DECLARE_INTERFACE(PluginInterface_CopyEngineFactory,"first-world.info.ultracopier.PluginInterface.CopyEngineFactory/2.0.0.0");
#endif
#endif // PLUGININTERFACE_COPYENGINE_H
diff --git a/interface/PluginInterface_Listener.h b/interface/PluginInterface_Listener.h
index bd278e4..e1ee026 100644
--- a/interface/PluginInterface_Listener.h
+++ b/interface/PluginInterface_Listener.h
@@ -52,7 +52,7 @@ class PluginInterface_Listener : public QObject
};
#ifndef ULTRACOPIER_PLUGIN_ALL_IN_ONE
-Q_DECLARE_INTERFACE(PluginInterface_Listener,"first-world.info.ultracopier.PluginInterface.Listener/1.2.4.0");
+Q_DECLARE_INTERFACE(PluginInterface_Listener,"first-world.info.ultracopier.PluginInterface.Listener/2.0.0.0");
#endif
#endif // PLUGININTERFACE_LISTENER_H
diff --git a/interface/PluginInterface_PluginLoader.h b/interface/PluginInterface_PluginLoader.h
index 6b5742c..aa38b9a 100644
--- a/interface/PluginInterface_PluginLoader.h
+++ b/interface/PluginInterface_PluginLoader.h
@@ -35,7 +35,7 @@ class PluginInterface_PluginLoader : public QObject
};
#ifndef ULTRACOPIER_PLUGIN_ALL_IN_ONE
-Q_DECLARE_INTERFACE(PluginInterface_PluginLoader,"first-world.info.ultracopier.PluginInterface.PluginLoader/1.2.4.0");
+Q_DECLARE_INTERFACE(PluginInterface_PluginLoader,"first-world.info.ultracopier.PluginInterface.PluginLoader/2.0.0.0");
#endif
#endif // PLUGININTERFACE_PLUGINLOADER_H
diff --git a/interface/PluginInterface_SessionLoader.h b/interface/PluginInterface_SessionLoader.h
index 2361505..10ed856 100644
--- a/interface/PluginInterface_SessionLoader.h
+++ b/interface/PluginInterface_SessionLoader.h
@@ -35,7 +35,7 @@ class PluginInterface_SessionLoader : public QObject
};
#ifndef ULTRACOPIER_PLUGIN_ALL_IN_ONE
-Q_DECLARE_INTERFACE(PluginInterface_SessionLoader,"first-world.info.ultracopier.PluginInterface.SessionLoader/1.2.4.0");
+Q_DECLARE_INTERFACE(PluginInterface_SessionLoader,"first-world.info.ultracopier.PluginInterface.SessionLoader/2.0.0.0");
#endif
#endif // PLUGININTERFACE_SESSIONLOADER_H
diff --git a/interface/PluginInterface_Themes.h b/interface/PluginInterface_Themes.h
index 73045ed..2bce397 100644
--- a/interface/PluginInterface_Themes.h
+++ b/interface/PluginInterface_Themes.h
@@ -47,6 +47,8 @@ class PluginInterface_Themes : public QWidget
virtual void setGeneralProgression(const uint64_t &current,const uint64_t &total) = 0;
/// \brief show the file progression
virtual void setFileProgression(const std::vector<Ultracopier::ProgressionItem> &progressionList) = 0;
+ /// to get by file speed, size and ms
+ virtual void doneTime(const std::vector<std::pair<uint64_t,uint32_t> > &timeList) = 0;
public:
/// \brief get the widget for the copy engine
virtual QWidget * getOptionsEngineWidget() = 0;
@@ -63,6 +65,8 @@ class PluginInterface_Themes : public QWidget
virtual void haveExternalOrder() = 0;
/// \brief set if is in pause
virtual void isInPause(const bool &isInPause) = 0;
+ /// \brief set if is in pause
+ virtual void havePause(const bool &havePause) = 0;
// signal to implement
signals:
//set the transfer list
@@ -111,7 +115,7 @@ class PluginInterface_ThemesFactory : public QObject
};
#ifndef ULTRACOPIER_PLUGIN_ALL_IN_ONE
-Q_DECLARE_INTERFACE(PluginInterface_ThemesFactory,"first-world.info.ultracopier.PluginInterface.ThemesFactory/1.2.4.0");
+Q_DECLARE_INTERFACE(PluginInterface_ThemesFactory,"first-world.info.ultracopier.PluginInterface.ThemesFactory/2.0.0.0");
#endif
#endif // PLUGININTERFACE_THEMES_H
diff --git a/lib/qt-tar-xz/xz_dec_lzma2.c b/lib/qt-tar-xz/xz_dec_lzma2.c
index ad36e29..ac3b9ec 100644
--- a/lib/qt-tar-xz/xz_dec_lzma2.c
+++ b/lib/qt-tar-xz/xz_dec_lzma2.c
@@ -42,237 +42,237 @@
* buffer directly.
*/
struct dictionary {
- /* Beginning of the history buffer */
- uint8_t *buf;
-
- /* Old position in buf (before decoding more data) */
- size_t start;
-
- /* Position in buf */
- size_t pos;
-
- /*
- * How full dictionary is. This is used to detect corrupt input that
- * would read beyond the beginning of the uncompressed stream.
- */
- size_t full;
-
- /* Write limit; we don't write to buf[limit] or later bytes. */
- size_t limit;
-
- /*
- * End of the dictionary buffer. In multi-call mode, this is
- * the same as the dictionary size. In single-call mode, this
- * indicates the size of the output buffer.
- */
- size_t end;
-
- /*
- * Size of the dictionary as specified in Block Header. This is used
- * together with "full" to detect corrupt input that would make us
- * read beyond the beginning of the uncompressed stream.
- */
- uint32_t size;
-
- /*
- * Maximum allowed dictionary size in multi-call mode.
- * This is ignored in single-call mode.
- */
- uint32_t size_max;
-
- /*
- * Amount of memory currently allocated for the dictionary.
- * This is used only with XZ_DYNALLOC. (With XZ_PREALLOC,
- * size_max is always the same as the allocated size.)
- */
- uint32_t allocated;
-
- /* Operation mode */
- enum xz_mode mode;
+ /* Beginning of the history buffer */
+ uint8_t *buf;
+
+ /* Old position in buf (before decoding more data) */
+ size_t start;
+
+ /* Position in buf */
+ size_t pos;
+
+ /*
+ * How full dictionary is. This is used to detect corrupt input that
+ * would read beyond the beginning of the uncompressed stream.
+ */
+ size_t full;
+
+ /* Write limit; we don't write to buf[limit] or later bytes. */
+ size_t limit;
+
+ /*
+ * End of the dictionary buffer. In multi-call mode, this is
+ * the same as the dictionary size. In single-call mode, this
+ * indicates the size of the output buffer.
+ */
+ size_t end;
+
+ /*
+ * Size of the dictionary as specified in Block Header. This is used
+ * together with "full" to detect corrupt input that would make us
+ * read beyond the beginning of the uncompressed stream.
+ */
+ uint32_t size;
+
+ /*
+ * Maximum allowed dictionary size in multi-call mode.
+ * This is ignored in single-call mode.
+ */
+ uint32_t size_max;
+
+ /*
+ * Amount of memory currently allocated for the dictionary.
+ * This is used only with XZ_DYNALLOC. (With XZ_PREALLOC,
+ * size_max is always the same as the allocated size.)
+ */
+ uint32_t allocated;
+
+ /* Operation mode */
+ enum xz_mode mode;
};
/* Range decoder */
struct rc_dec {
- uint32_t range;
- uint32_t code;
-
- /*
- * Number of initializing bytes remaining to be read
- * by rc_read_init().
- */
- uint32_t init_bytes_left;
-
- /*
- * Buffer from which we read our input. It can be either
- * temp.buf or the caller-provided input buffer.
- */
- const uint8_t *in;
- size_t in_pos;
- size_t in_limit;
+ uint32_t range;
+ uint32_t code;
+
+ /*
+ * Number of initializing bytes remaining to be read
+ * by rc_read_init().
+ */
+ uint32_t init_bytes_left;
+
+ /*
+ * Buffer from which we read our input. It can be either
+ * temp.buf or the caller-provided input buffer.
+ */
+ const uint8_t *in;
+ size_t in_pos;
+ size_t in_limit;
};
/* Probabilities for a length decoder. */
struct lzma_len_dec {
- /* Probability of match length being at least 10 */
- uint16_t choice;
+ /* Probability of match length being at least 10 */
+ uint16_t choice;
- /* Probability of match length being at least 18 */
- uint16_t choice2;
+ /* Probability of match length being at least 18 */
+ uint16_t choice2;
- /* Probabilities for match lengths 2-9 */
- uint16_t low[POS_STATES_MAX][LEN_LOW_SYMBOLS];
+ /* Probabilities for match lengths 2-9 */
+ uint16_t low[POS_STATES_MAX][LEN_LOW_SYMBOLS];
- /* Probabilities for match lengths 10-17 */
- uint16_t mid[POS_STATES_MAX][LEN_MID_SYMBOLS];
+ /* Probabilities for match lengths 10-17 */
+ uint16_t mid[POS_STATES_MAX][LEN_MID_SYMBOLS];
- /* Probabilities for match lengths 18-273 */
- uint16_t high[LEN_HIGH_SYMBOLS];
+ /* Probabilities for match lengths 18-273 */
+ uint16_t high[LEN_HIGH_SYMBOLS];
};
struct lzma_dec {
- /* Distances of latest four matches */
- uint32_t rep0;
- uint32_t rep1;
- uint32_t rep2;
- uint32_t rep3;
-
- /* Types of the most recently seen LZMA symbols */
- enum lzma_state state;
-
- /*
- * Length of a match. This is updated so that dict_repeat can
- * be called again to finish repeating the whole match.
- */
- uint32_t len;
-
- /*
- * LZMA properties or related bit masks (number of literal
- * context bits, a mask dervied from the number of literal
- * position bits, and a mask dervied from the number
- * position bits)
- */
- uint32_t lc;
- uint32_t literal_pos_mask; /* (1 << lp) - 1 */
- uint32_t pos_mask; /* (1 << pb) - 1 */
-
- /* If 1, it's a match. Otherwise it's a single 8-bit literal. */
- uint16_t is_match[STATES][POS_STATES_MAX];
-
- /* If 1, it's a repeated match. The distance is one of rep0 .. rep3. */
- uint16_t is_rep[STATES];
-
- /*
- * If 0, distance of a repeated match is rep0.
- * Otherwise check is_rep1.
- */
- uint16_t is_rep0[STATES];
-
- /*
- * If 0, distance of a repeated match is rep1.
- * Otherwise check is_rep2.
- */
- uint16_t is_rep1[STATES];
-
- /* If 0, distance of a repeated match is rep2. Otherwise it is rep3. */
- uint16_t is_rep2[STATES];
-
- /*
- * If 1, the repeated match has length of one byte. Otherwise
- * the length is decoded from rep_len_decoder.
- */
- uint16_t is_rep0_long[STATES][POS_STATES_MAX];
-
- /*
- * Probability tree for the highest two bits of the match
- * distance. There is a separate probability tree for match
- * lengths of 2 (i.e. MATCH_LEN_MIN), 3, 4, and [5, 273].
- */
- uint16_t dist_slot[DIST_STATES][DIST_SLOTS];
-
- /*
- * Probility trees for additional bits for match distance
- * when the distance is in the range [4, 127].
- */
- uint16_t dist_special[FULL_DISTANCES - DIST_MODEL_END];
-
- /*
- * Probability tree for the lowest four bits of a match
- * distance that is equal to or greater than 128.
- */
- uint16_t dist_align[ALIGN_SIZE];
-
- /* Length of a normal match */
- struct lzma_len_dec match_len_dec;
-
- /* Length of a repeated match */
- struct lzma_len_dec rep_len_dec;
-
- /* Probabilities of literals */
- uint16_t literal[LITERAL_CODERS_MAX][LITERAL_CODER_SIZE];
+ /* Distances of latest four matches */
+ uint32_t rep0;
+ uint32_t rep1;
+ uint32_t rep2;
+ uint32_t rep3;
+
+ /* Types of the most recently seen LZMA symbols */
+ enum lzma_state state;
+
+ /*
+ * Length of a match. This is updated so that dict_repeat can
+ * be called again to finish repeating the whole match.
+ */
+ uint32_t len;
+
+ /*
+ * LZMA properties or related bit masks (number of literal
+ * context bits, a mask dervied from the number of literal
+ * position bits, and a mask dervied from the number
+ * position bits)
+ */
+ uint32_t lc;
+ uint32_t literal_pos_mask; /* (1 << lp) - 1 */
+ uint32_t pos_mask; /* (1 << pb) - 1 */
+
+ /* If 1, it's a match. Otherwise it's a single 8-bit literal. */
+ uint16_t is_match[STATES][POS_STATES_MAX];
+
+ /* If 1, it's a repeated match. The distance is one of rep0 .. rep3. */
+ uint16_t is_rep[STATES];
+
+ /*
+ * If 0, distance of a repeated match is rep0.
+ * Otherwise check is_rep1.
+ */
+ uint16_t is_rep0[STATES];
+
+ /*
+ * If 0, distance of a repeated match is rep1.
+ * Otherwise check is_rep2.
+ */
+ uint16_t is_rep1[STATES];
+
+ /* If 0, distance of a repeated match is rep2. Otherwise it is rep3. */
+ uint16_t is_rep2[STATES];
+
+ /*
+ * If 1, the repeated match has length of one byte. Otherwise
+ * the length is decoded from rep_len_decoder.
+ */
+ uint16_t is_rep0_long[STATES][POS_STATES_MAX];
+
+ /*
+ * Probability tree for the highest two bits of the match
+ * distance. There is a separate probability tree for match
+ * lengths of 2 (i.e. MATCH_LEN_MIN), 3, 4, and [5, 273].
+ */
+ uint16_t dist_slot[DIST_STATES][DIST_SLOTS];
+
+ /*
+ * Probility trees for additional bits for match distance
+ * when the distance is in the range [4, 127].
+ */
+ uint16_t dist_special[FULL_DISTANCES - DIST_MODEL_END];
+
+ /*
+ * Probability tree for the lowest four bits of a match
+ * distance that is equal to or greater than 128.
+ */
+ uint16_t dist_align[ALIGN_SIZE];
+
+ /* Length of a normal match */
+ struct lzma_len_dec match_len_dec;
+
+ /* Length of a repeated match */
+ struct lzma_len_dec rep_len_dec;
+
+ /* Probabilities of literals */
+ uint16_t literal[LITERAL_CODERS_MAX][LITERAL_CODER_SIZE];
};
struct lzma2_dec {
- /* Position in xz_dec_lzma2_run(). */
- enum lzma2_seq {
- SEQ_CONTROL,
- SEQ_UNCOMPRESSED_1,
- SEQ_UNCOMPRESSED_2,
- SEQ_COMPRESSED_0,
- SEQ_COMPRESSED_1,
- SEQ_PROPERTIES,
- SEQ_LZMA_PREPARE,
- SEQ_LZMA_RUN,
- SEQ_COPY
- } sequence;
-
- /* Next position after decoding the compressed size of the chunk. */
- enum lzma2_seq next_sequence;
-
- /* Uncompressed size of LZMA chunk (2 MiB at maximum) */
- uint32_t uncompressed;
-
- /*
- * Compressed size of LZMA chunk or compressed/uncompressed
- * size of uncompressed chunk (64 KiB at maximum)
- */
- uint32_t compressed;
-
- /*
- * True if dictionary reset is needed. This is false before
- * the first chunk (LZMA or uncompressed).
- */
- bool need_dict_reset;
-
- /*
- * True if new LZMA properties are needed. This is false
- * before the first LZMA chunk.
- */
- bool need_props;
+ /* Position in xz_dec_lzma2_run(). */
+ enum lzma2_seq {
+ SEQ_CONTROL,
+ SEQ_UNCOMPRESSED_1,
+ SEQ_UNCOMPRESSED_2,
+ SEQ_COMPRESSED_0,
+ SEQ_COMPRESSED_1,
+ SEQ_PROPERTIES,
+ SEQ_LZMA_PREPARE,
+ SEQ_LZMA_RUN,
+ SEQ_COPY
+ } sequence;
+
+ /* Next position after decoding the compressed size of the chunk. */
+ enum lzma2_seq next_sequence;
+
+ /* Uncompressed size of LZMA chunk (2 MiB at maximum) */
+ uint32_t uncompressed;
+
+ /*
+ * Compressed size of LZMA chunk or compressed/uncompressed
+ * size of uncompressed chunk (64 KiB at maximum)
+ */
+ uint32_t compressed;
+
+ /*
+ * True if dictionary reset is needed. This is false before
+ * the first chunk (LZMA or uncompressed).
+ */
+ bool need_dict_reset;
+
+ /*
+ * True if new LZMA properties are needed. This is false
+ * before the first LZMA chunk.
+ */
+ bool need_props;
};
struct xz_dec_lzma2 {
- /*
- * The order below is important on x86 to reduce code size and
- * it shouldn't hurt on other platforms. Everything up to and
- * including lzma.pos_mask are in the first 128 bytes on x86-32,
- * which allows using smaller instructions to access those
- * variables. On x86-64, fewer variables fit into the first 128
- * bytes, but this is still the best order without sacrificing
- * the readability by splitting the structures.
- */
- struct rc_dec rc;
- struct dictionary dict;
- struct lzma2_dec lzma2;
- struct lzma_dec lzma;
-
- /*
- * Temporary buffer which holds small number of input bytes between
- * decoder calls. See lzma2_lzma() for details.
- */
- struct {
- uint32_t size;
- uint8_t buf[3 * LZMA_IN_REQUIRED];
- } temp;
+ /*
+ * The order below is important on x86 to reduce code size and
+ * it shouldn't hurt on other platforms. Everything up to and
+ * including lzma.pos_mask are in the first 128 bytes on x86-32,
+ * which allows using smaller instructions to access those
+ * variables. On x86-64, fewer variables fit into the first 128
+ * bytes, but this is still the best order without sacrificing
+ * the readability by splitting the structures.
+ */
+ struct rc_dec rc;
+ struct dictionary dict;
+ struct lzma2_dec lzma2;
+ struct lzma_dec lzma;
+
+ /*
+ * Temporary buffer which holds small number of input bytes between
+ * decoder calls. See lzma2_lzma() for details.
+ */
+ struct {
+ uint32_t size;
+ uint8_t buf[3 * LZMA_IN_REQUIRED];
+ } temp;
};
/**************
@@ -285,30 +285,30 @@ struct xz_dec_lzma2 {
*/
static void XZ_FUNC dict_reset(struct dictionary *dict, struct xz_buf *b)
{
- if (DEC_IS_SINGLE(dict->mode)) {
- dict->buf = b->out + b->out_pos;
- dict->end = b->out_size - b->out_pos;
- }
-
- dict->start = 0;
- dict->pos = 0;
- dict->limit = 0;
- dict->full = 0;
+ if (DEC_IS_SINGLE(dict->mode)) {
+ dict->buf = b->out + b->out_pos;
+ dict->end = b->out_size - b->out_pos;
+ }
+
+ dict->start = 0;
+ dict->pos = 0;
+ dict->limit = 0;
+ dict->full = 0;
}
/* Set dictionary write limit */
static void XZ_FUNC dict_limit(struct dictionary *dict, size_t out_max)
{
- if (dict->end - dict->pos <= out_max)
- dict->limit = dict->end;
- else
- dict->limit = dict->pos + out_max;
+ if (dict->end - dict->pos <= out_max)
+ dict->limit = dict->end;
+ else
+ dict->limit = dict->pos + out_max;
}
/* Return true if at least one byte can be written into the dictionary. */
static inline bool XZ_FUNC dict_has_space(const struct dictionary *dict)
{
- return dict->pos < dict->limit;
+ return dict->pos < dict->limit;
}
/*
@@ -318,14 +318,14 @@ static inline bool XZ_FUNC dict_has_space(const struct dictionary *dict)
* avoid writing a '\0' to the end of the destination buffer.
*/
static inline uint32_t XZ_FUNC dict_get(
- const struct dictionary *dict, uint32_t dist)
+ const struct dictionary *dict, uint32_t dist)
{
- size_t offset = dict->pos - dist - 1;
+ size_t offset = dict->pos - dist - 1;
- if (dist >= dict->pos)
- offset += dict->end;
+ if (dist >= dict->pos)
+ offset += dict->end;
- return dict->full > 0 ? dict->buf[offset] : 0;
+ return dict->full > 0 ? dict->buf[offset] : 0;
}
/*
@@ -333,10 +333,10 @@ static inline uint32_t XZ_FUNC dict_get(
*/
static inline void XZ_FUNC dict_put(struct dictionary *dict, uint8_t byte)
{
- dict->buf[dict->pos++] = byte;
+ dict->buf[dict->pos++] = byte;
- if (dict->full < dict->pos)
- dict->full = dict->pos;
+ if (dict->full < dict->pos)
+ dict->full = dict->pos;
}
/*
@@ -345,70 +345,70 @@ static inline void XZ_FUNC dict_put(struct dictionary *dict, uint8_t byte)
* updated to indicate how many bytes were left to be repeated.
*/
static bool XZ_FUNC dict_repeat(
- struct dictionary *dict, uint32_t *len, uint32_t dist)
+ struct dictionary *dict, uint32_t *len, uint32_t dist)
{
- size_t back;
- uint32_t left;
+ size_t back;
+ uint32_t left;
- if (dist >= dict->full || dist >= dict->size)
- return false;
+ if (dist >= dict->full || dist >= dict->size)
+ return false;
- left = min_t(size_t, dict->limit - dict->pos, *len);
- *len -= left;
+ left = min_t(size_t, dict->limit - dict->pos, *len);
+ *len -= left;
- back = dict->pos - dist - 1;
- if (dist >= dict->pos)
- back += dict->end;
+ back = dict->pos - dist - 1;
+ if (dist >= dict->pos)
+ back += dict->end;
- do {
- dict->buf[dict->pos++] = dict->buf[back++];
- if (back == dict->end)
- back = 0;
- } while (--left > 0);
+ do {
+ dict->buf[dict->pos++] = dict->buf[back++];
+ if (back == dict->end)
+ back = 0;
+ } while (--left > 0);
- if (dict->full < dict->pos)
- dict->full = dict->pos;
+ if (dict->full < dict->pos)
+ dict->full = dict->pos;
- return true;
+ return true;
}
/* Copy uncompressed data as is from input to dictionary and output buffers. */
static void XZ_FUNC dict_uncompressed(
- struct dictionary *dict, struct xz_buf *b, uint32_t *left)
+ struct dictionary *dict, struct xz_buf *b, uint32_t *left)
{
- size_t copy_size;
+ size_t copy_size;
- while (*left > 0 && b->in_pos < b->in_size
- && b->out_pos < b->out_size) {
- copy_size = min(b->in_size - b->in_pos,
- b->out_size - b->out_pos);
- if (copy_size > dict->end - dict->pos)
- copy_size = dict->end - dict->pos;
- if (copy_size > *left)
- copy_size = *left;
+ while (*left > 0 && b->in_pos < b->in_size
+ && b->out_pos < b->out_size) {
+ copy_size = min(b->in_size - b->in_pos,
+ b->out_size - b->out_pos);
+ if (copy_size > dict->end - dict->pos)
+ copy_size = dict->end - dict->pos;
+ if (copy_size > *left)
+ copy_size = *left;
- *left -= copy_size;
+ *left -= copy_size;
- memcpy(dict->buf + dict->pos, b->in + b->in_pos, copy_size);
- dict->pos += copy_size;
+ memcpy(dict->buf + dict->pos, b->in + b->in_pos, copy_size);
+ dict->pos += copy_size;
- if (dict->full < dict->pos)
- dict->full = dict->pos;
+ if (dict->full < dict->pos)
+ dict->full = dict->pos;
- if (DEC_IS_MULTI(dict->mode)) {
- if (dict->pos == dict->end)
- dict->pos = 0;
+ if (DEC_IS_MULTI(dict->mode)) {
+ if (dict->pos == dict->end)
+ dict->pos = 0;
- memcpy(b->out + b->out_pos, b->in + b->in_pos,
- copy_size);
- }
+ memcpy(b->out + b->out_pos, b->in + b->in_pos,
+ copy_size);
+ }
- dict->start = dict->pos;
+ dict->start = dict->pos;
- b->out_pos += copy_size;
- b->in_pos += copy_size;
+ b->out_pos += copy_size;
+ b->in_pos += copy_size;
- }
+ }
}
/*
@@ -418,19 +418,19 @@ static void XZ_FUNC dict_uncompressed(
*/
static uint32_t XZ_FUNC dict_flush(struct dictionary *dict, struct xz_buf *b)
{
- size_t copy_size = dict->pos - dict->start;
+ size_t copy_size = dict->pos - dict->start;
- if (DEC_IS_MULTI(dict->mode)) {
- if (dict->pos == dict->end)
- dict->pos = 0;
+ if (DEC_IS_MULTI(dict->mode)) {
+ if (dict->pos == dict->end)
+ dict->pos = 0;
- memcpy(b->out + b->out_pos, dict->buf + dict->start,
- copy_size);
- }
+ memcpy(b->out + b->out_pos, dict->buf + dict->start,
+ copy_size);
+ }
- dict->start = dict->pos;
- b->out_pos += copy_size;
- return copy_size;
+ dict->start = dict->pos;
+ b->out_pos += copy_size;
+ return copy_size;
}
/*****************
@@ -440,9 +440,9 @@ static uint32_t XZ_FUNC dict_flush(struct dictionary *dict, struct xz_buf *b)
/* Reset the range decoder. */
static void XZ_FUNC rc_reset(struct rc_dec *rc)
{
- rc->range = (uint32_t)-1;
- rc->code = 0;
- rc->init_bytes_left = RC_INIT_BYTES;
+ rc->range = (uint32_t)-1;
+ rc->code = 0;
+ rc->init_bytes_left = RC_INIT_BYTES;
}
/*
@@ -451,21 +451,21 @@ static void XZ_FUNC rc_reset(struct rc_dec *rc)
*/
static bool XZ_FUNC rc_read_init(struct rc_dec *rc, struct xz_buf *b)
{
- while (rc->init_bytes_left > 0) {
- if (b->in_pos == b->in_size)
- return false;
+ while (rc->init_bytes_left > 0) {
+ if (b->in_pos == b->in_size)
+ return false;
- rc->code = (rc->code << 8) + b->in[b->in_pos++];
- --rc->init_bytes_left;
- }
+ rc->code = (rc->code << 8) + b->in[b->in_pos++];
+ --rc->init_bytes_left;
+ }
- return true;
+ return true;
}
/* Return true if there may not be enough input for the next decoding loop. */
static inline bool XZ_FUNC rc_limit_exceeded(const struct rc_dec *rc)
{
- return rc->in_pos > rc->in_limit;
+ return rc->in_pos > rc->in_limit;
}
/*
@@ -474,16 +474,16 @@ static inline bool XZ_FUNC rc_limit_exceeded(const struct rc_dec *rc)
*/
static inline bool XZ_FUNC rc_is_finished(const struct rc_dec *rc)
{
- return rc->code == 0;
+ return rc->code == 0;
}
/* Read the next input byte if needed. */
static __always_inline void XZ_FUNC rc_normalize(struct rc_dec *rc)
{
- if (rc->range < RC_TOP_VALUE) {
- rc->range <<= RC_SHIFT_BITS;
- rc->code = (rc->code << RC_SHIFT_BITS) + rc->in[rc->in_pos++];
- }
+ if (rc->range < RC_TOP_VALUE) {
+ rc->range <<= RC_SHIFT_BITS;
+ rc->code = (rc->code << RC_SHIFT_BITS) + rc->in[rc->in_pos++];
+ }
}
/*
@@ -499,72 +499,72 @@ static __always_inline void XZ_FUNC rc_normalize(struct rc_dec *rc)
*/
static __always_inline int XZ_FUNC rc_bit(struct rc_dec *rc, uint16_t *prob)
{
- uint32_t bound;
- int bit;
-
- rc_normalize(rc);
- bound = (rc->range >> RC_BIT_MODEL_TOTAL_BITS) * *prob;
- if (rc->code < bound) {
- rc->range = bound;
- *prob += (RC_BIT_MODEL_TOTAL - *prob) >> RC_MOVE_BITS;
- bit = 0;
- } else {
- rc->range -= bound;
- rc->code -= bound;
- *prob -= *prob >> RC_MOVE_BITS;
- bit = 1;
- }
-
- return bit;
+ uint32_t bound;
+ int bit;
+
+ rc_normalize(rc);
+ bound = (rc->range >> RC_BIT_MODEL_TOTAL_BITS) * *prob;
+ if (rc->code < bound) {
+ rc->range = bound;
+ *prob += (RC_BIT_MODEL_TOTAL - *prob) >> RC_MOVE_BITS;
+ bit = 0;
+ } else {
+ rc->range -= bound;
+ rc->code -= bound;
+ *prob -= *prob >> RC_MOVE_BITS;
+ bit = 1;
+ }
+
+ return bit;
}
/* Decode a bittree starting from the most significant bit. */
static __always_inline uint32_t XZ_FUNC rc_bittree(
- struct rc_dec *rc, uint16_t *probs, uint32_t limit)
+ struct rc_dec *rc, uint16_t *probs, uint32_t limit)
{
- uint32_t symbol = 1;
+ uint32_t symbol = 1;
- do {
- if (rc_bit(rc, &probs[symbol]))
- symbol = (symbol << 1) + 1;
- else
- symbol <<= 1;
- } while (symbol < limit);
+ do {
+ if (rc_bit(rc, &probs[symbol]))
+ symbol = (symbol << 1) + 1;
+ else
+ symbol <<= 1;
+ } while (symbol < limit);
- return symbol;
+ return symbol;
}
/* Decode a bittree starting from the least significant bit. */
static __always_inline void XZ_FUNC rc_bittree_reverse(struct rc_dec *rc,
- uint16_t *probs, uint32_t *dest, uint32_t limit)
+ uint16_t *probs, uint32_t *dest, uint32_t limit)
{
- uint32_t symbol = 1;
- uint32_t i = 0;
-
- do {
- if (rc_bit(rc, &probs[symbol])) {
- symbol = (symbol << 1) + 1;
- *dest += 1 << i;
- } else {
- symbol <<= 1;
- }
- } while (++i < limit);
+ uint32_t symbol = 1;
+ uint32_t i = 0;
+
+ do {
+ if (rc_bit(rc, &probs[symbol])) {
+ symbol = (symbol << 1) + 1;
+ *dest += 1 << i;
+ } else {
+ symbol <<= 1;
+ }
+ } while (++i < limit);
}
/* Decode direct bits (fixed fifty-fifty probability) */
static inline void XZ_FUNC rc_direct(
- struct rc_dec *rc, uint32_t *dest, uint32_t limit)
+ struct rc_dec *rc, uint32_t *dest, uint32_t limit)
{
- uint32_t mask;
-
- do {
- rc_normalize(rc);
- rc->range >>= 1;
- rc->code -= rc->range;
- mask = (uint32_t)0 - (rc->code >> 31);
- rc->code += rc->range & mask;
- *dest = (*dest << 1) + (mask + 1);
- } while (--limit > 0);
+ uint32_t mask;
+
+ do {
+ rc_normalize(rc);
+ rc->range >>= 1;
+ rc->code -= rc->range;
+ mask = (uint32_t)0 - (rc->code >> 31);
+ rc->code += rc->range & mask;
+ *dest = (*dest << 1) + (mask + 1);
+ } while (--limit > 0);
}
/********
@@ -574,114 +574,114 @@ static inline void XZ_FUNC rc_direct(
/* Get pointer to literal coder probability array. */
static uint16_t * XZ_FUNC lzma_literal_probs(struct xz_dec_lzma2 *s)
{
- uint32_t prev_byte = dict_get(&s->dict, 0);
- uint32_t low = prev_byte >> (8 - s->lzma.lc);
- uint32_t high = (s->dict.pos & s->lzma.literal_pos_mask) << s->lzma.lc;
- return s->lzma.literal[low + high];
+ uint32_t prev_byte = dict_get(&s->dict, 0);
+ uint32_t low = prev_byte >> (8 - s->lzma.lc);
+ uint32_t high = (s->dict.pos & s->lzma.literal_pos_mask) << s->lzma.lc;
+ return s->lzma.literal[low + high];
}
/* Decode a literal (one 8-bit byte) */
static void XZ_FUNC lzma_literal(struct xz_dec_lzma2 *s)
{
- uint16_t *probs;
- uint32_t symbol;
- uint32_t match_byte;
- uint32_t match_bit;
- uint32_t offset;
- uint32_t i;
-
- probs = lzma_literal_probs(s);
-
- if (lzma_state_is_literal(s->lzma.state)) {
- symbol = rc_bittree(&s->rc, probs, 0x100);
- } else {
- symbol = 1;
- match_byte = dict_get(&s->dict, s->lzma.rep0) << 1;
- offset = 0x100;
-
- do {
- match_bit = match_byte & offset;
- match_byte <<= 1;
- i = offset + match_bit + symbol;
-
- if (rc_bit(&s->rc, &probs[i])) {
- symbol = (symbol << 1) + 1;
- offset &= match_bit;
- } else {
- symbol <<= 1;
- offset &= ~match_bit;
- }
- } while (symbol < 0x100);
- }
-
- dict_put(&s->dict, (uint8_t)symbol);
- lzma_state_literal(&s->lzma.state);
+ uint16_t *probs;
+ uint32_t symbol;
+ uint32_t match_byte;
+ uint32_t match_bit;
+ uint32_t offset;
+ uint32_t i;
+
+ probs = lzma_literal_probs(s);
+
+ if (lzma_state_is_literal(s->lzma.state)) {
+ symbol = rc_bittree(&s->rc, probs, 0x100);
+ } else {
+ symbol = 1;
+ match_byte = dict_get(&s->dict, s->lzma.rep0) << 1;
+ offset = 0x100;
+
+ do {
+ match_bit = match_byte & offset;
+ match_byte <<= 1;
+ i = offset + match_bit + symbol;
+
+ if (rc_bit(&s->rc, &probs[i])) {
+ symbol = (symbol << 1) + 1;
+ offset &= match_bit;
+ } else {
+ symbol <<= 1;
+ offset &= ~match_bit;
+ }
+ } while (symbol < 0x100);
+ }
+
+ dict_put(&s->dict, (uint8_t)symbol);
+ lzma_state_literal(&s->lzma.state);
}
/* Decode the length of the match into s->lzma.len. */
static void XZ_FUNC lzma_len(struct xz_dec_lzma2 *s, struct lzma_len_dec *l,
- uint32_t pos_state)
+ uint32_t pos_state)
{
- uint16_t *probs;
- uint32_t limit;
-
- if (!rc_bit(&s->rc, &l->choice)) {
- probs = l->low[pos_state];
- limit = LEN_LOW_SYMBOLS;
- s->lzma.len = MATCH_LEN_MIN;
- } else {
- if (!rc_bit(&s->rc, &l->choice2)) {
- probs = l->mid[pos_state];
- limit = LEN_MID_SYMBOLS;
- s->lzma.len = MATCH_LEN_MIN + LEN_LOW_SYMBOLS;
- } else {
- probs = l->high;
- limit = LEN_HIGH_SYMBOLS;
- s->lzma.len = MATCH_LEN_MIN + LEN_LOW_SYMBOLS
- + LEN_MID_SYMBOLS;
- }
- }
-
- s->lzma.len += rc_bittree(&s->rc, probs, limit) - limit;
+ uint16_t *probs;
+ uint32_t limit;
+
+ if (!rc_bit(&s->rc, &l->choice)) {
+ probs = l->low[pos_state];
+ limit = LEN_LOW_SYMBOLS;
+ s->lzma.len = MATCH_LEN_MIN;
+ } else {
+ if (!rc_bit(&s->rc, &l->choice2)) {
+ probs = l->mid[pos_state];
+ limit = LEN_MID_SYMBOLS;
+ s->lzma.len = MATCH_LEN_MIN + LEN_LOW_SYMBOLS;
+ } else {
+ probs = l->high;
+ limit = LEN_HIGH_SYMBOLS;
+ s->lzma.len = MATCH_LEN_MIN + LEN_LOW_SYMBOLS
+ + LEN_MID_SYMBOLS;
+ }
+ }
+
+ s->lzma.len += rc_bittree(&s->rc, probs, limit) - limit;
}
/* Decode a match. The distance will be stored in s->lzma.rep0. */
static void XZ_FUNC lzma_match(struct xz_dec_lzma2 *s, uint32_t pos_state)
{
- uint16_t *probs;
- uint32_t dist_slot;
- uint32_t limit;
-
- lzma_state_match(&s->lzma.state);
-
- s->lzma.rep3 = s->lzma.rep2;
- s->lzma.rep2 = s->lzma.rep1;
- s->lzma.rep1 = s->lzma.rep0;
-
- lzma_len(s, &s->lzma.match_len_dec, pos_state);
-
- probs = s->lzma.dist_slot[lzma_get_dist_state(s->lzma.len)];
- dist_slot = rc_bittree(&s->rc, probs, DIST_SLOTS) - DIST_SLOTS;
-
- if (dist_slot < DIST_MODEL_START) {
- s->lzma.rep0 = dist_slot;
- } else {
- limit = (dist_slot >> 1) - 1;
- s->lzma.rep0 = 2 + (dist_slot & 1);
-
- if (dist_slot < DIST_MODEL_END) {
- s->lzma.rep0 <<= limit;
- probs = s->lzma.dist_special + s->lzma.rep0
- - dist_slot - 1;
- rc_bittree_reverse(&s->rc, probs,
- &s->lzma.rep0, limit);
- } else {
- rc_direct(&s->rc, &s->lzma.rep0, limit - ALIGN_BITS);
- s->lzma.rep0 <<= ALIGN_BITS;
- rc_bittree_reverse(&s->rc, s->lzma.dist_align,
- &s->lzma.rep0, ALIGN_BITS);
- }
- }
+ uint16_t *probs;
+ uint32_t dist_slot;
+ uint32_t limit;
+
+ lzma_state_match(&s->lzma.state);
+
+ s->lzma.rep3 = s->lzma.rep2;
+ s->lzma.rep2 = s->lzma.rep1;
+ s->lzma.rep1 = s->lzma.rep0;
+
+ lzma_len(s, &s->lzma.match_len_dec, pos_state);
+
+ probs = s->lzma.dist_slot[lzma_get_dist_state(s->lzma.len)];
+ dist_slot = rc_bittree(&s->rc, probs, DIST_SLOTS) - DIST_SLOTS;
+
+ if (dist_slot < DIST_MODEL_START) {
+ s->lzma.rep0 = dist_slot;
+ } else {
+ limit = (dist_slot >> 1) - 1;
+ s->lzma.rep0 = 2 + (dist_slot & 1);
+
+ if (dist_slot < DIST_MODEL_END) {
+ s->lzma.rep0 <<= limit;
+ probs = s->lzma.dist_special + s->lzma.rep0
+ - dist_slot - 1;
+ rc_bittree_reverse(&s->rc, probs,
+ &s->lzma.rep0, limit);
+ } else {
+ rc_direct(&s->rc, &s->lzma.rep0, limit - ALIGN_BITS);
+ s->lzma.rep0 <<= ALIGN_BITS;
+ rc_bittree_reverse(&s->rc, s->lzma.dist_align,
+ &s->lzma.rep0, ALIGN_BITS);
+ }
+ }
}
/*
@@ -690,77 +690,77 @@ static void XZ_FUNC lzma_match(struct xz_dec_lzma2 *s, uint32_t pos_state)
*/
static void XZ_FUNC lzma_rep_match(struct xz_dec_lzma2 *s, uint32_t pos_state)
{
- uint32_t tmp;
-
- if (!rc_bit(&s->rc, &s->lzma.is_rep0[s->lzma.state])) {
- if (!rc_bit(&s->rc, &s->lzma.is_rep0_long[
- s->lzma.state][pos_state])) {
- lzma_state_short_rep(&s->lzma.state);
- s->lzma.len = 1;
- return;
- }
- } else {
- if (!rc_bit(&s->rc, &s->lzma.is_rep1[s->lzma.state])) {
- tmp = s->lzma.rep1;
- } else {
- if (!rc_bit(&s->rc, &s->lzma.is_rep2[s->lzma.state])) {
- tmp = s->lzma.rep2;
- } else {
- tmp = s->lzma.rep3;
- s->lzma.rep3 = s->lzma.rep2;
- }
-
- s->lzma.rep2 = s->lzma.rep1;
- }
-
- s->lzma.rep1 = s->lzma.rep0;
- s->lzma.rep0 = tmp;
- }
-
- lzma_state_long_rep(&s->lzma.state);
- lzma_len(s, &s->lzma.rep_len_dec, pos_state);
+ uint32_t tmp;
+
+ if (!rc_bit(&s->rc, &s->lzma.is_rep0[s->lzma.state])) {
+ if (!rc_bit(&s->rc, &s->lzma.is_rep0_long[
+ s->lzma.state][pos_state])) {
+ lzma_state_short_rep(&s->lzma.state);
+ s->lzma.len = 1;
+ return;
+ }
+ } else {
+ if (!rc_bit(&s->rc, &s->lzma.is_rep1[s->lzma.state])) {
+ tmp = s->lzma.rep1;
+ } else {
+ if (!rc_bit(&s->rc, &s->lzma.is_rep2[s->lzma.state])) {
+ tmp = s->lzma.rep2;
+ } else {
+ tmp = s->lzma.rep3;
+ s->lzma.rep3 = s->lzma.rep2;
+ }
+
+ s->lzma.rep2 = s->lzma.rep1;
+ }
+
+ s->lzma.rep1 = s->lzma.rep0;
+ s->lzma.rep0 = tmp;
+ }
+
+ lzma_state_long_rep(&s->lzma.state);
+ lzma_len(s, &s->lzma.rep_len_dec, pos_state);
}
/* LZMA decoder core */
static bool XZ_FUNC lzma_main(struct xz_dec_lzma2 *s)
{
- uint32_t pos_state;
-
- /*
- * If the dictionary was reached during the previous call, try to
- * finish the possibly pending repeat in the dictionary.
- */
- if (dict_has_space(&s->dict) && s->lzma.len > 0)
- dict_repeat(&s->dict, &s->lzma.len, s->lzma.rep0);
-
- /*
- * Decode more LZMA symbols. One iteration may consume up to
- * LZMA_IN_REQUIRED - 1 bytes.
- */
- while (dict_has_space(&s->dict) && !rc_limit_exceeded(&s->rc)) {
- pos_state = s->dict.pos & s->lzma.pos_mask;
-
- if (!rc_bit(&s->rc, &s->lzma.is_match[
- s->lzma.state][pos_state])) {
- lzma_literal(s);
- } else {
- if (rc_bit(&s->rc, &s->lzma.is_rep[s->lzma.state]))
- lzma_rep_match(s, pos_state);
- else
- lzma_match(s, pos_state);
-
- if (!dict_repeat(&s->dict, &s->lzma.len, s->lzma.rep0))
- return false;
- }
- }
-
- /*
- * Having the range decoder always normalized when we are outside
- * this function makes it easier to correctly handle end of the chunk.
- */
- rc_normalize(&s->rc);
-
- return true;
+ uint32_t pos_state;
+
+ /*
+ * If the dictionary was reached during the previous call, try to
+ * finish the possibly pending repeat in the dictionary.
+ */
+ if (dict_has_space(&s->dict) && s->lzma.len > 0)
+ dict_repeat(&s->dict, &s->lzma.len, s->lzma.rep0);
+
+ /*
+ * Decode more LZMA symbols. One iteration may consume up to
+ * LZMA_IN_REQUIRED - 1 bytes.
+ */
+ while (dict_has_space(&s->dict) && !rc_limit_exceeded(&s->rc)) {
+ pos_state = s->dict.pos & s->lzma.pos_mask;
+
+ if (!rc_bit(&s->rc, &s->lzma.is_match[
+ s->lzma.state][pos_state])) {
+ lzma_literal(s);
+ } else {
+ if (rc_bit(&s->rc, &s->lzma.is_rep[s->lzma.state]))
+ lzma_rep_match(s, pos_state);
+ else
+ lzma_match(s, pos_state);
+
+ if (!dict_repeat(&s->dict, &s->lzma.len, s->lzma.rep0))
+ return false;
+ }
+ }
+
+ /*
+ * Having the range decoder always normalized when we are outside
+ * this function makes it easier to correctly handle end of the chunk.
+ */
+ rc_normalize(&s->rc);
+
+ return true;
}
/*
@@ -769,29 +769,29 @@ static bool XZ_FUNC lzma_main(struct xz_dec_lzma2 *s)
*/
static void XZ_FUNC lzma_reset(struct xz_dec_lzma2 *s)
{
- uint16_t *probs;
- size_t i;
-
- s->lzma.state = STATE_LIT_LIT;
- s->lzma.rep0 = 0;
- s->lzma.rep1 = 0;
- s->lzma.rep2 = 0;
- s->lzma.rep3 = 0;
-
- /*
- * All probabilities are initialized to the same value. This hack
- * makes the code smaller by avoiding a separate loop for each
- * probability array.
- *
- * This could be optimized so that only that part of literal
- * probabilities that are actually required. In the common case
- * we would write 12 KiB less.
- */
- probs = s->lzma.is_match[0];
- for (i = 0; i < PROBS_TOTAL; ++i)
- probs[i] = RC_BIT_MODEL_TOTAL / 2;
-
- rc_reset(&s->rc);
+ uint16_t *probs;
+ size_t i;
+
+ s->lzma.state = STATE_LIT_LIT;
+ s->lzma.rep0 = 0;
+ s->lzma.rep1 = 0;
+ s->lzma.rep2 = 0;
+ s->lzma.rep3 = 0;
+
+ /*
+ * All probabilities are initialized to the same value. This hack
+ * makes the code smaller by avoiding a separate loop for each
+ * probability array.
+ *
+ * This could be optimized so that only that part of literal
+ * probabilities that are actually required. In the common case
+ * we would write 12 KiB less.
+ */
+ probs = s->lzma.is_match[0];
+ for (i = 0; i < PROBS_TOTAL; ++i)
+ probs[i] = RC_BIT_MODEL_TOTAL / 2;
+
+ rc_reset(&s->rc);
}
/*
@@ -801,33 +801,33 @@ static void XZ_FUNC lzma_reset(struct xz_dec_lzma2 *s)
*/
static bool XZ_FUNC lzma_props(struct xz_dec_lzma2 *s, uint8_t props)
{
- if (props > (4 * 5 + 4) * 9 + 8)
- return false;
+ if (props > (4 * 5 + 4) * 9 + 8)
+ return false;
- s->lzma.pos_mask = 0;
- while (props >= 9 * 5) {
- props -= 9 * 5;
- ++s->lzma.pos_mask;
- }
+ s->lzma.pos_mask = 0;
+ while (props >= 9 * 5) {
+ props -= 9 * 5;
+ ++s->lzma.pos_mask;
+ }
- s->lzma.pos_mask = (1 << s->lzma.pos_mask) - 1;
+ s->lzma.pos_mask = (1 << s->lzma.pos_mask) - 1;
- s->lzma.literal_pos_mask = 0;
- while (props >= 9) {
- props -= 9;
- ++s->lzma.literal_pos_mask;
- }
+ s->lzma.literal_pos_mask = 0;
+ while (props >= 9) {
+ props -= 9;
+ ++s->lzma.literal_pos_mask;
+ }
- s->lzma.lc = props;
+ s->lzma.lc = props;
- if (s->lzma.lc + s->lzma.literal_pos_mask > 4)
- return false;
+ if (s->lzma.lc + s->lzma.literal_pos_mask > 4)
+ return false;
- s->lzma.literal_pos_mask = (1 << s->lzma.literal_pos_mask) - 1;
+ s->lzma.literal_pos_mask = (1 << s->lzma.literal_pos_mask) - 1;
- lzma_reset(s);
+ lzma_reset(s);
- return true;
+ return true;
}
/*********
@@ -848,83 +848,83 @@ static bool XZ_FUNC lzma_props(struct xz_dec_lzma2 *s, uint8_t props)
*/
static bool XZ_FUNC lzma2_lzma(struct xz_dec_lzma2 *s, struct xz_buf *b)
{
- size_t in_avail;
- uint32_t tmp;
-
- in_avail = b->in_size - b->in_pos;
- if (s->temp.size > 0 || s->lzma2.compressed == 0) {
- tmp = 2 * LZMA_IN_REQUIRED - s->temp.size;
- if (tmp > s->lzma2.compressed - s->temp.size)
- tmp = s->lzma2.compressed - s->temp.size;
- if (tmp > in_avail)
- tmp = in_avail;
-
- memcpy(s->temp.buf + s->temp.size, b->in + b->in_pos, tmp);
-
- if (s->temp.size + tmp == s->lzma2.compressed) {
- memzero(s->temp.buf + s->temp.size + tmp,
- sizeof(s->temp.buf)
- - s->temp.size - tmp);
- s->rc.in_limit = s->temp.size + tmp;
- } else if (s->temp.size + tmp < LZMA_IN_REQUIRED) {
- s->temp.size += tmp;
- b->in_pos += tmp;
- return true;
- } else {
- s->rc.in_limit = s->temp.size + tmp - LZMA_IN_REQUIRED;
- }
-
- s->rc.in = s->temp.buf;
- s->rc.in_pos = 0;
-
- if (!lzma_main(s) || s->rc.in_pos > s->temp.size + tmp)
- return false;
-
- s->lzma2.compressed -= s->rc.in_pos;
-
- if (s->rc.in_pos < s->temp.size) {
- s->temp.size -= s->rc.in_pos;
- memmove(s->temp.buf, s->temp.buf + s->rc.in_pos,
- s->temp.size);
- return true;
- }
-
- b->in_pos += s->rc.in_pos - s->temp.size;
- s->temp.size = 0;
- }
-
- in_avail = b->in_size - b->in_pos;
- if (in_avail >= LZMA_IN_REQUIRED) {
- s->rc.in = b->in;
- s->rc.in_pos = b->in_pos;
-
- if (in_avail >= s->lzma2.compressed + LZMA_IN_REQUIRED)
- s->rc.in_limit = b->in_pos + s->lzma2.compressed;
- else
- s->rc.in_limit = b->in_size - LZMA_IN_REQUIRED;
-
- if (!lzma_main(s))
- return false;
-
- in_avail = s->rc.in_pos - b->in_pos;
- if (in_avail > s->lzma2.compressed)
- return false;
-
- s->lzma2.compressed -= in_avail;
- b->in_pos = s->rc.in_pos;
- }
-
- in_avail = b->in_size - b->in_pos;
- if (in_avail < LZMA_IN_REQUIRED) {
- if (in_avail > s->lzma2.compressed)
- in_avail = s->lzma2.compressed;
-
- memcpy(s->temp.buf, b->in + b->in_pos, in_avail);
- s->temp.size = in_avail;
- b->in_pos += in_avail;
- }
-
- return true;
+ size_t in_avail;
+ uint32_t tmp;
+
+ in_avail = b->in_size - b->in_pos;
+ if (s->temp.size > 0 || s->lzma2.compressed == 0) {
+ tmp = 2 * LZMA_IN_REQUIRED - s->temp.size;
+ if (tmp > s->lzma2.compressed - s->temp.size)
+ tmp = s->lzma2.compressed - s->temp.size;
+ if (tmp > in_avail)
+ tmp = in_avail;
+
+ memcpy(s->temp.buf + s->temp.size, b->in + b->in_pos, tmp);
+
+ if (s->temp.size + tmp == s->lzma2.compressed) {
+ memzero(s->temp.buf + s->temp.size + tmp,
+ sizeof(s->temp.buf)
+ - s->temp.size - tmp);
+ s->rc.in_limit = s->temp.size + tmp;
+ } else if (s->temp.size + tmp < LZMA_IN_REQUIRED) {
+ s->temp.size += tmp;
+ b->in_pos += tmp;
+ return true;
+ } else {
+ s->rc.in_limit = s->temp.size + tmp - LZMA_IN_REQUIRED;
+ }
+
+ s->rc.in = s->temp.buf;
+ s->rc.in_pos = 0;
+
+ if (!lzma_main(s) || s->rc.in_pos > s->temp.size + tmp)
+ return false;
+
+ s->lzma2.compressed -= s->rc.in_pos;
+
+ if (s->rc.in_pos < s->temp.size) {
+ s->temp.size -= s->rc.in_pos;
+ memmove(s->temp.buf, s->temp.buf + s->rc.in_pos,
+ s->temp.size);
+ return true;
+ }
+
+ b->in_pos += s->rc.in_pos - s->temp.size;
+ s->temp.size = 0;
+ }
+
+ in_avail = b->in_size - b->in_pos;
+ if (in_avail >= LZMA_IN_REQUIRED) {
+ s->rc.in = b->in;
+ s->rc.in_pos = b->in_pos;
+
+ if (in_avail >= s->lzma2.compressed + LZMA_IN_REQUIRED)
+ s->rc.in_limit = b->in_pos + s->lzma2.compressed;
+ else
+ s->rc.in_limit = b->in_size - LZMA_IN_REQUIRED;
+
+ if (!lzma_main(s))
+ return false;
+
+ in_avail = s->rc.in_pos - b->in_pos;
+ if (in_avail > s->lzma2.compressed)
+ return false;
+
+ s->lzma2.compressed -= in_avail;
+ b->in_pos = s->rc.in_pos;
+ }
+
+ in_avail = b->in_size - b->in_pos;
+ if (in_avail < LZMA_IN_REQUIRED) {
+ if (in_avail > s->lzma2.compressed)
+ in_avail = s->lzma2.compressed;
+
+ memcpy(s->temp.buf, b->in + b->in_pos, in_avail);
+ s->temp.size = in_avail;
+ b->in_pos += in_avail;
+ }
+
+ return true;
}
/*
@@ -932,244 +932,248 @@ static bool XZ_FUNC lzma2_lzma(struct xz_dec_lzma2 *s, struct xz_buf *b)
* decoding or copying of uncompressed chunks to other functions.
*/
XZ_EXTERN enum xz_ret XZ_FUNC xz_dec_lzma2_run(
- struct xz_dec_lzma2 *s, struct xz_buf *b)
+ struct xz_dec_lzma2 *s, struct xz_buf *b)
{
- uint32_t tmp;
-
- while (b->in_pos < b->in_size || s->lzma2.sequence == SEQ_LZMA_RUN) {
- switch (s->lzma2.sequence) {
- case SEQ_CONTROL:
- /*
- * LZMA2 control byte
- *
- * Exact values:
- * 0x00 End marker
- * 0x01 Dictionary reset followed by
- * an uncompressed chunk
- * 0x02 Uncompressed chunk (no dictionary reset)
- *
- * Highest three bits (s->control & 0xE0):
- * 0xE0 Dictionary reset, new properties and state
- * reset, followed by LZMA compressed chunk
- * 0xC0 New properties and state reset, followed
- * by LZMA compressed chunk (no dictionary
- * reset)
- * 0xA0 State reset using old properties,
- * followed by LZMA compressed chunk (no
- * dictionary reset)
- * 0x80 LZMA chunk (no dictionary or state reset)
- *
- * For LZMA compressed chunks, the lowest five bits
- * (s->control & 1F) are the highest bits of the
- * uncompressed size (bits 16-20).
- *
- * A new LZMA2 stream must begin with a dictionary
- * reset. The first LZMA chunk must set new
- * properties and reset the LZMA state.
- *
- * Values that don't match anything described above
- * are invalid and we return XZ_DATA_ERROR.
- */
- tmp = b->in[b->in_pos++];
-
- if (tmp >= 0xE0 || tmp == 0x01) {
- s->lzma2.need_props = true;
- s->lzma2.need_dict_reset = false;
- dict_reset(&s->dict, b);
- } else if (s->lzma2.need_dict_reset) {
- return XZ_DATA_ERROR;
- }
-
- if (tmp >= 0x80) {
- s->lzma2.uncompressed = (tmp & 0x1F) << 16;
- s->lzma2.sequence = SEQ_UNCOMPRESSED_1;
-
- if (tmp >= 0xC0) {
- /*
- * When there are new properties,
- * state reset is done at
- * SEQ_PROPERTIES.
- */
- s->lzma2.need_props = false;
- s->lzma2.next_sequence
- = SEQ_PROPERTIES;
-
- } else if (s->lzma2.need_props) {
- return XZ_DATA_ERROR;
-
- } else {
- s->lzma2.next_sequence
- = SEQ_LZMA_PREPARE;
- if (tmp >= 0xA0)
- lzma_reset(s);
- }
- } else {
- if (tmp == 0x00)
- return XZ_STREAM_END;
-
- if (tmp > 0x02)
- return XZ_DATA_ERROR;
-
- s->lzma2.sequence = SEQ_COMPRESSED_0;
- s->lzma2.next_sequence = SEQ_COPY;
- }
-
- break;
-
- case SEQ_UNCOMPRESSED_1:
- s->lzma2.uncompressed
- += (uint32_t)b->in[b->in_pos++] << 8;
- s->lzma2.sequence = SEQ_UNCOMPRESSED_2;
- break;
-
- case SEQ_UNCOMPRESSED_2:
- s->lzma2.uncompressed
- += (uint32_t)b->in[b->in_pos++] + 1;
- s->lzma2.sequence = SEQ_COMPRESSED_0;
- break;
-
- case SEQ_COMPRESSED_0:
- s->lzma2.compressed
- = (uint32_t)b->in[b->in_pos++] << 8;
- s->lzma2.sequence = SEQ_COMPRESSED_1;
- break;
-
- case SEQ_COMPRESSED_1:
- s->lzma2.compressed
- += (uint32_t)b->in[b->in_pos++] + 1;
- s->lzma2.sequence = s->lzma2.next_sequence;
- break;
-
- case SEQ_PROPERTIES:
- if (!lzma_props(s, b->in[b->in_pos++]))
- return XZ_DATA_ERROR;
-
- s->lzma2.sequence = SEQ_LZMA_PREPARE;
-
- case SEQ_LZMA_PREPARE:
- if (s->lzma2.compressed < RC_INIT_BYTES)
- return XZ_DATA_ERROR;
-
- if (!rc_read_init(&s->rc, b))
- return XZ_OK;
-
- s->lzma2.compressed -= RC_INIT_BYTES;
- s->lzma2.sequence = SEQ_LZMA_RUN;
-
- case SEQ_LZMA_RUN:
- /*
- * Set dictionary limit to indicate how much we want
- * to be encoded at maximum. Decode new data into the
- * dictionary. Flush the new data from dictionary to
- * b->out. Check if we finished decoding this chunk.
- * In case the dictionary got full but we didn't fill
- * the output buffer yet, we may run this loop
- * multiple times without changing s->lzma2.sequence.
- */
- dict_limit(&s->dict, min_t(size_t,
- b->out_size - b->out_pos,
- s->lzma2.uncompressed));
- if (!lzma2_lzma(s, b))
- return XZ_DATA_ERROR;
-
- s->lzma2.uncompressed -= dict_flush(&s->dict, b);
-
- if (s->lzma2.uncompressed == 0) {
- if (s->lzma2.compressed > 0 || s->lzma.len > 0
- || !rc_is_finished(&s->rc))
- return XZ_DATA_ERROR;
-
- rc_reset(&s->rc);
- s->lzma2.sequence = SEQ_CONTROL;
-
- } else if (b->out_pos == b->out_size
- || (b->in_pos == b->in_size
- && s->temp.size
- < s->lzma2.compressed)) {
- return XZ_OK;
- }
-
- break;
-
- case SEQ_COPY:
- dict_uncompressed(&s->dict, b, &s->lzma2.compressed);
- if (s->lzma2.compressed > 0)
- return XZ_OK;
-
- s->lzma2.sequence = SEQ_CONTROL;
- break;
- }
- }
-
- return XZ_OK;
+ uint32_t tmp;
+
+ while (b->in_pos < b->in_size || s->lzma2.sequence == SEQ_LZMA_RUN) {
+ switch (s->lzma2.sequence) {
+ case SEQ_CONTROL:
+ /*
+ * LZMA2 control byte
+ *
+ * Exact values:
+ * 0x00 End marker
+ * 0x01 Dictionary reset followed by
+ * an uncompressed chunk
+ * 0x02 Uncompressed chunk (no dictionary reset)
+ *
+ * Highest three bits (s->control & 0xE0):
+ * 0xE0 Dictionary reset, new properties and state
+ * reset, followed by LZMA compressed chunk
+ * 0xC0 New properties and state reset, followed
+ * by LZMA compressed chunk (no dictionary
+ * reset)
+ * 0xA0 State reset using old properties,
+ * followed by LZMA compressed chunk (no
+ * dictionary reset)
+ * 0x80 LZMA chunk (no dictionary or state reset)
+ *
+ * For LZMA compressed chunks, the lowest five bits
+ * (s->control & 1F) are the highest bits of the
+ * uncompressed size (bits 16-20).
+ *
+ * A new LZMA2 stream must begin with a dictionary
+ * reset. The first LZMA chunk must set new
+ * properties and reset the LZMA state.
+ *
+ * Values that don't match anything described above
+ * are invalid and we return XZ_DATA_ERROR.
+ */
+ tmp = b->in[b->in_pos++];
+
+ if (tmp >= 0xE0 || tmp == 0x01) {
+ s->lzma2.need_props = true;
+ s->lzma2.need_dict_reset = false;
+ dict_reset(&s->dict, b);
+ } else if (s->lzma2.need_dict_reset) {
+ return XZ_DATA_ERROR;
+ }
+
+ if (tmp >= 0x80) {
+ s->lzma2.uncompressed = (tmp & 0x1F) << 16;
+ s->lzma2.sequence = SEQ_UNCOMPRESSED_1;
+
+ if (tmp >= 0xC0) {
+ /*
+ * When there are new properties,
+ * state reset is done at
+ * SEQ_PROPERTIES.
+ */
+ s->lzma2.need_props = false;
+ s->lzma2.next_sequence
+ = SEQ_PROPERTIES;
+
+ } else if (s->lzma2.need_props) {
+ return XZ_DATA_ERROR;
+
+ } else {
+ s->lzma2.next_sequence
+ = SEQ_LZMA_PREPARE;
+ if (tmp >= 0xA0)
+ lzma_reset(s);
+ }
+ } else {
+ if (tmp == 0x00)
+ return XZ_STREAM_END;
+
+ if (tmp > 0x02)
+ return XZ_DATA_ERROR;
+
+ s->lzma2.sequence = SEQ_COMPRESSED_0;
+ s->lzma2.next_sequence = SEQ_COPY;
+ }
+
+ break;
+
+ case SEQ_UNCOMPRESSED_1:
+ s->lzma2.uncompressed
+ += (uint32_t)b->in[b->in_pos++] << 8;
+ s->lzma2.sequence = SEQ_UNCOMPRESSED_2;
+ break;
+
+ case SEQ_UNCOMPRESSED_2:
+ s->lzma2.uncompressed
+ += (uint32_t)b->in[b->in_pos++] + 1;
+ s->lzma2.sequence = SEQ_COMPRESSED_0;
+ break;
+
+ case SEQ_COMPRESSED_0:
+ s->lzma2.compressed
+ = (uint32_t)b->in[b->in_pos++] << 8;
+ s->lzma2.sequence = SEQ_COMPRESSED_1;
+ break;
+
+ case SEQ_COMPRESSED_1:
+ s->lzma2.compressed
+ += (uint32_t)b->in[b->in_pos++] + 1;
+ s->lzma2.sequence = s->lzma2.next_sequence;
+ break;
+
+ case SEQ_PROPERTIES:
+ if (!lzma_props(s, b->in[b->in_pos++]))
+ return XZ_DATA_ERROR;
+
+ s->lzma2.sequence = SEQ_LZMA_PREPARE;
+ #ifndef __clang__
+ __attribute__ ((fallthrough));
+ #endif
+ case SEQ_LZMA_PREPARE:
+ if (s->lzma2.compressed < RC_INIT_BYTES)
+ return XZ_DATA_ERROR;
+
+ if (!rc_read_init(&s->rc, b))
+ return XZ_OK;
+
+ s->lzma2.compressed -= RC_INIT_BYTES;
+ s->lzma2.sequence = SEQ_LZMA_RUN;
+ #ifndef __clang__
+ __attribute__ ((fallthrough));
+ #endif
+ case SEQ_LZMA_RUN:
+ /*
+ * Set dictionary limit to indicate how much we want
+ * to be encoded at maximum. Decode new data into the
+ * dictionary. Flush the new data from dictionary to
+ * b->out. Check if we finished decoding this chunk.
+ * In case the dictionary got full but we didn't fill
+ * the output buffer yet, we may run this loop
+ * multiple times without changing s->lzma2.sequence.
+ */
+ dict_limit(&s->dict, min_t(size_t,
+ b->out_size - b->out_pos,
+ s->lzma2.uncompressed));
+ if (!lzma2_lzma(s, b))
+ return XZ_DATA_ERROR;
+
+ s->lzma2.uncompressed -= dict_flush(&s->dict, b);
+
+ if (s->lzma2.uncompressed == 0) {
+ if (s->lzma2.compressed > 0 || s->lzma.len > 0
+ || !rc_is_finished(&s->rc))
+ return XZ_DATA_ERROR;
+
+ rc_reset(&s->rc);
+ s->lzma2.sequence = SEQ_CONTROL;
+
+ } else if (b->out_pos == b->out_size
+ || (b->in_pos == b->in_size
+ && s->temp.size
+ < s->lzma2.compressed)) {
+ return XZ_OK;
+ }
+
+ break;
+
+ case SEQ_COPY:
+ dict_uncompressed(&s->dict, b, &s->lzma2.compressed);
+ if (s->lzma2.compressed > 0)
+ return XZ_OK;
+
+ s->lzma2.sequence = SEQ_CONTROL;
+ break;
+ }
+ }
+
+ return XZ_OK;
}
XZ_EXTERN struct xz_dec_lzma2 * XZ_FUNC xz_dec_lzma2_create(
- enum xz_mode mode, uint32_t dict_max)
+ enum xz_mode mode, uint32_t dict_max)
{
- struct xz_dec_lzma2 *s = kmalloc(sizeof(*s), GFP_KERNEL);
- if (s == NULL)
- return NULL;
-
- s->dict.mode = mode;
- s->dict.size_max = dict_max;
-
- if (DEC_IS_PREALLOC(mode)) {
- s->dict.buf = vmalloc(dict_max);
- if (s->dict.buf == NULL) {
- kfree(s);
- return NULL;
- }
- } else if (DEC_IS_DYNALLOC(mode)) {
- s->dict.buf = NULL;
- s->dict.allocated = 0;
- }
-
- return s;
+ struct xz_dec_lzma2 *s = kmalloc(sizeof(*s), GFP_KERNEL);
+ if (s == NULL)
+ return NULL;
+
+ s->dict.mode = mode;
+ s->dict.size_max = dict_max;
+
+ if (DEC_IS_PREALLOC(mode)) {
+ s->dict.buf = vmalloc(dict_max);
+ if (s->dict.buf == NULL) {
+ kfree(s);
+ return NULL;
+ }
+ } else if (DEC_IS_DYNALLOC(mode)) {
+ s->dict.buf = NULL;
+ s->dict.allocated = 0;
+ }
+
+ return s;
}
XZ_EXTERN enum xz_ret XZ_FUNC xz_dec_lzma2_reset(
- struct xz_dec_lzma2 *s, uint8_t props)
+ struct xz_dec_lzma2 *s, uint8_t props)
{
- /* This limits dictionary size to 3 GiB to keep parsing simpler. */
- if (props > 39)
- return XZ_OPTIONS_ERROR;
+ /* This limits dictionary size to 3 GiB to keep parsing simpler. */
+ if (props > 39)
+ return XZ_OPTIONS_ERROR;
- s->dict.size = 2 + (props & 1);
- s->dict.size <<= (props >> 1) + 11;
+ s->dict.size = 2 + (props & 1);
+ s->dict.size <<= (props >> 1) + 11;
- if (DEC_IS_MULTI(s->dict.mode)) {
- if (s->dict.size > s->dict.size_max)
- return XZ_MEMLIMIT_ERROR;
+ if (DEC_IS_MULTI(s->dict.mode)) {
+ if (s->dict.size > s->dict.size_max)
+ return XZ_MEMLIMIT_ERROR;
- s->dict.end = s->dict.size;
+ s->dict.end = s->dict.size;
- if (DEC_IS_DYNALLOC(s->dict.mode)) {
- if (s->dict.allocated < s->dict.size) {
- vfree(s->dict.buf);
- s->dict.buf = vmalloc(s->dict.size);
- if (s->dict.buf == NULL) {
- s->dict.allocated = 0;
- return XZ_MEM_ERROR;
- }
- }
- }
- }
+ if (DEC_IS_DYNALLOC(s->dict.mode)) {
+ if (s->dict.allocated < s->dict.size) {
+ vfree(s->dict.buf);
+ s->dict.buf = vmalloc(s->dict.size);
+ if (s->dict.buf == NULL) {
+ s->dict.allocated = 0;
+ return XZ_MEM_ERROR;
+ }
+ }
+ }
+ }
- s->lzma.len = 0;
+ s->lzma.len = 0;
- s->lzma2.sequence = SEQ_CONTROL;
- s->lzma2.need_dict_reset = true;
+ s->lzma2.sequence = SEQ_CONTROL;
+ s->lzma2.need_dict_reset = true;
- s->temp.size = 0;
+ s->temp.size = 0;
- return XZ_OK;
+ return XZ_OK;
}
XZ_EXTERN void XZ_FUNC xz_dec_lzma2_end(struct xz_dec_lzma2 *s)
{
- if (DEC_IS_MULTI(s->dict.mode))
- vfree(s->dict.buf);
+ if (DEC_IS_MULTI(s->dict.mode))
+ vfree(s->dict.buf);
- kfree(s);
+ kfree(s);
}
diff --git a/lib/qt-tar-xz/xz_dec_stream.c b/lib/qt-tar-xz/xz_dec_stream.c
index bdcbf1b..d240348 100644
--- a/lib/qt-tar-xz/xz_dec_stream.c
+++ b/lib/qt-tar-xz/xz_dec_stream.c
@@ -12,139 +12,139 @@
/* Hash used to validate the Index field */
struct xz_dec_hash {
- vli_type unpadded;
- vli_type uncompressed;
- uint32_t crc32;
+ vli_type unpadded;
+ vli_type uncompressed;
+ uint32_t crc32;
};
struct xz_dec {
- /* Position in dec_main() */
- enum {
- SEQ_STREAM_HEADER,
- SEQ_BLOCK_START,
- SEQ_BLOCK_HEADER,
- SEQ_BLOCK_UNCOMPRESS,
- SEQ_BLOCK_PADDING,
- SEQ_BLOCK_CHECK,
- SEQ_INDEX,
- SEQ_INDEX_PADDING,
- SEQ_INDEX_CRC32,
- SEQ_STREAM_FOOTER
- } sequence;
-
- /* Position in variable-length integers and Check fields */
- uint32_t pos;
-
- /* Variable-length integer decoded by dec_vli() */
- vli_type vli;
-
- /* Saved in_pos and out_pos */
- size_t in_start;
- size_t out_start;
-
- /* CRC32 value in Block or Index */
- uint32_t crc32;
-
- /* Type of the integrity check calculated from uncompressed data */
- enum xz_check check_type;
-
- /* Operation mode */
- enum xz_mode mode;
-
- /*
- * True if the next call to xz_dec_run() is allowed to return
- * XZ_BUF_ERROR.
- */
- bool allow_buf_error;
-
- /* Information stored in Block Header */
- struct {
- /*
- * Value stored in the Compressed Size field, or
- * VLI_UNKNOWN if Compressed Size is not present.
- */
- vli_type compressed;
-
- /*
- * Value stored in the Uncompressed Size field, or
- * VLI_UNKNOWN if Uncompressed Size is not present.
- */
- vli_type uncompressed;
-
- /* Size of the Block Header field */
- uint32_t size;
- } block_header;
-
- /* Information collected when decoding Blocks */
- struct {
- /* Observed compressed size of the current Block */
- vli_type compressed;
-
- /* Observed uncompressed size of the current Block */
- vli_type uncompressed;
-
- /* Number of Blocks decoded so far */
- vli_type count;
-
- /*
- * Hash calculated from the Block sizes. This is used to
- * validate the Index field.
- */
- struct xz_dec_hash hash;
- } block;
-
- /* Variables needed when verifying the Index field */
- struct {
- /* Position in dec_index() */
- enum {
- SEQ_INDEX_COUNT,
- SEQ_INDEX_UNPADDED,
- SEQ_INDEX_UNCOMPRESSED
- } sequence;
-
- /* Size of the Index in bytes */
- vli_type size;
-
- /* Number of Records (matches block.count in valid files) */
- vli_type count;
-
- /*
- * Hash calculated from the Records (matches block.hash in
- * valid files).
- */
- struct xz_dec_hash hash;
- } index;
-
- /*
- * Temporary buffer needed to hold Stream Header, Block Header,
- * and Stream Footer. The Block Header is the biggest (1 KiB)
- * so we reserve space according to that. buf[] has to be aligned
- * to a multiple of four bytes; the size_t variables before it
- * should guarantee this.
- */
- struct {
- size_t pos;
- size_t size;
- uint8_t buf[1024];
- } temp;
-
- struct xz_dec_lzma2 *lzma2;
+ /* Position in dec_main() */
+ enum {
+ SEQ_STREAM_HEADER,
+ SEQ_BLOCK_START,
+ SEQ_BLOCK_HEADER,
+ SEQ_BLOCK_UNCOMPRESS,
+ SEQ_BLOCK_PADDING,
+ SEQ_BLOCK_CHECK,
+ SEQ_INDEX,
+ SEQ_INDEX_PADDING,
+ SEQ_INDEX_CRC32,
+ SEQ_STREAM_FOOTER
+ } sequence;
+
+ /* Position in variable-length integers and Check fields */
+ uint32_t pos;
+
+ /* Variable-length integer decoded by dec_vli() */
+ vli_type vli;
+
+ /* Saved in_pos and out_pos */
+ size_t in_start;
+ size_t out_start;
+
+ /* CRC32 value in Block or Index */
+ uint32_t crc32;
+
+ /* Type of the integrity check calculated from uncompressed data */
+ enum xz_check check_type;
+
+ /* Operation mode */
+ enum xz_mode mode;
+
+ /*
+ * True if the next call to xz_dec_run() is allowed to return
+ * XZ_BUF_ERROR.
+ */
+ bool allow_buf_error;
+
+ /* Information stored in Block Header */
+ struct {
+ /*
+ * Value stored in the Compressed Size field, or
+ * VLI_UNKNOWN if Compressed Size is not present.
+ */
+ vli_type compressed;
+
+ /*
+ * Value stored in the Uncompressed Size field, or
+ * VLI_UNKNOWN if Uncompressed Size is not present.
+ */
+ vli_type uncompressed;
+
+ /* Size of the Block Header field */
+ uint32_t size;
+ } block_header;
+
+ /* Information collected when decoding Blocks */
+ struct {
+ /* Observed compressed size of the current Block */
+ vli_type compressed;
+
+ /* Observed uncompressed size of the current Block */
+ vli_type uncompressed;
+
+ /* Number of Blocks decoded so far */
+ vli_type count;
+
+ /*
+ * Hash calculated from the Block sizes. This is used to
+ * validate the Index field.
+ */
+ struct xz_dec_hash hash;
+ } block;
+
+ /* Variables needed when verifying the Index field */
+ struct {
+ /* Position in dec_index() */
+ enum {
+ SEQ_INDEX_COUNT,
+ SEQ_INDEX_UNPADDED,
+ SEQ_INDEX_UNCOMPRESSED
+ } sequence;
+
+ /* Size of the Index in bytes */
+ vli_type size;
+
+ /* Number of Records (matches block.count in valid files) */
+ vli_type count;
+
+ /*
+ * Hash calculated from the Records (matches block.hash in
+ * valid files).
+ */
+ struct xz_dec_hash hash;
+ } index;
+
+ /*
+ * Temporary buffer needed to hold Stream Header, Block Header,
+ * and Stream Footer. The Block Header is the biggest (1 KiB)
+ * so we reserve space according to that. buf[] has to be aligned
+ * to a multiple of four bytes; the size_t variables before it
+ * should guarantee this.
+ */
+ struct {
+ size_t pos;
+ size_t size;
+ uint8_t buf[1024];
+ } temp;
+
+ struct xz_dec_lzma2 *lzma2;
#ifdef XZ_DEC_BCJ
- struct xz_dec_bcj *bcj;
- bool bcj_active;
+ struct xz_dec_bcj *bcj;
+ bool bcj_active;
#endif
};
#ifdef XZ_DEC_ANY_CHECK
/* Sizes of the Check field with different Check IDs */
static const uint8_t check_sizes[16] = {
- 0,
- 4, 4, 4,
- 8, 8, 8,
- 16, 16, 16,
- 32, 32, 32,
- 64, 64, 64
+ 0,
+ 4, 4, 4,
+ 8, 8, 8,
+ 16, 16, 16,
+ 32, 32, 32,
+ 64, 64, 64
};
#endif
@@ -156,51 +156,51 @@ static const uint8_t check_sizes[16] = {
*/
static bool XZ_FUNC fill_temp(struct xz_dec *s, struct xz_buf *b)
{
- size_t copy_size = min_t(size_t,
- b->in_size - b->in_pos, s->temp.size - s->temp.pos);
+ size_t copy_size = min_t(size_t,
+ b->in_size - b->in_pos, s->temp.size - s->temp.pos);
- memcpy(s->temp.buf + s->temp.pos, b->in + b->in_pos, copy_size);
- b->in_pos += copy_size;
- s->temp.pos += copy_size;
+ memcpy(s->temp.buf + s->temp.pos, b->in + b->in_pos, copy_size);
+ b->in_pos += copy_size;
+ s->temp.pos += copy_size;
- if (s->temp.pos == s->temp.size) {
- s->temp.pos = 0;
- return true;
- }
+ if (s->temp.pos == s->temp.size) {
+ s->temp.pos = 0;
+ return true;
+ }
- return false;
+ return false;
}
/* Decode a variable-length integer (little-endian base-128 encoding) */
static enum xz_ret XZ_FUNC dec_vli(struct xz_dec *s,
- const uint8_t *in, size_t *in_pos, size_t in_size)
+ const uint8_t *in, size_t *in_pos, size_t in_size)
{
- uint8_t byte;
+ uint8_t byte;
- if (s->pos == 0)
- s->vli = 0;
+ if (s->pos == 0)
+ s->vli = 0;
- while (*in_pos < in_size) {
- byte = in[*in_pos];
- ++*in_pos;
+ while (*in_pos < in_size) {
+ byte = in[*in_pos];
+ ++*in_pos;
- s->vli |= (vli_type)(byte & 0x7F) << s->pos;
+ s->vli |= (vli_type)(byte & 0x7F) << s->pos;
- if ((byte & 0x80) == 0) {
- /* Don't allow non-minimal encodings. */
- if (byte == 0 && s->pos != 0)
- return XZ_DATA_ERROR;
+ if ((byte & 0x80) == 0) {
+ /* Don't allow non-minimal encodings. */
+ if (byte == 0 && s->pos != 0)
+ return XZ_DATA_ERROR;
- s->pos = 0;
- return XZ_STREAM_END;
- }
+ s->pos = 0;
+ return XZ_STREAM_END;
+ }
- s->pos += 7;
- if (s->pos == 7 * VLI_BYTES_MAX)
- return XZ_DATA_ERROR;
- }
+ s->pos += 7;
+ if (s->pos == 7 * VLI_BYTES_MAX)
+ return XZ_DATA_ERROR;
+ }
- return XZ_OK;
+ return XZ_OK;
}
/*
@@ -217,72 +217,72 @@ static enum xz_ret XZ_FUNC dec_vli(struct xz_dec *s,
*/
static enum xz_ret XZ_FUNC dec_block(struct xz_dec *s, struct xz_buf *b)
{
- enum xz_ret ret;
+ enum xz_ret ret;
- s->in_start = b->in_pos;
- s->out_start = b->out_pos;
+ s->in_start = b->in_pos;
+ s->out_start = b->out_pos;
#ifdef XZ_DEC_BCJ
- if (s->bcj_active)
- ret = xz_dec_bcj_run(s->bcj, s->lzma2, b);
- else
+ if (s->bcj_active)
+ ret = xz_dec_bcj_run(s->bcj, s->lzma2, b);
+ else
#endif
- ret = xz_dec_lzma2_run(s->lzma2, b);
-
- s->block.compressed += b->in_pos - s->in_start;
- s->block.uncompressed += b->out_pos - s->out_start;
-
- /*
- * There is no need to separately check for VLI_UNKNOWN, since
- * the observed sizes are always smaller than VLI_UNKNOWN.
- */
- if (s->block.compressed > s->block_header.compressed
- || s->block.uncompressed
- > s->block_header.uncompressed)
- return XZ_DATA_ERROR;
-
- if (s->check_type == XZ_CHECK_CRC32)
- s->crc32 = xz_crc32(b->out + s->out_start,
- b->out_pos - s->out_start, s->crc32);
-
- if (ret == XZ_STREAM_END) {
- if (s->block_header.compressed != VLI_UNKNOWN
- && s->block_header.compressed
- != s->block.compressed)
- return XZ_DATA_ERROR;
-
- if (s->block_header.uncompressed != VLI_UNKNOWN
- && s->block_header.uncompressed
- != s->block.uncompressed)
- return XZ_DATA_ERROR;
-
- s->block.hash.unpadded += s->block_header.size
- + s->block.compressed;
+ ret = xz_dec_lzma2_run(s->lzma2, b);
+
+ s->block.compressed += b->in_pos - s->in_start;
+ s->block.uncompressed += b->out_pos - s->out_start;
+
+ /*
+ * There is no need to separately check for VLI_UNKNOWN, since
+ * the observed sizes are always smaller than VLI_UNKNOWN.
+ */
+ if (s->block.compressed > s->block_header.compressed
+ || s->block.uncompressed
+ > s->block_header.uncompressed)
+ return XZ_DATA_ERROR;
+
+ if (s->check_type == XZ_CHECK_CRC32)
+ s->crc32 = xz_crc32(b->out + s->out_start,
+ b->out_pos - s->out_start, s->crc32);
+
+ if (ret == XZ_STREAM_END) {
+ if (s->block_header.compressed != VLI_UNKNOWN
+ && s->block_header.compressed
+ != s->block.compressed)
+ return XZ_DATA_ERROR;
+
+ if (s->block_header.uncompressed != VLI_UNKNOWN
+ && s->block_header.uncompressed
+ != s->block.uncompressed)
+ return XZ_DATA_ERROR;
+
+ s->block.hash.unpadded += s->block_header.size
+ + s->block.compressed;
#ifdef XZ_DEC_ANY_CHECK
- s->block.hash.unpadded += check_sizes[s->check_type];
+ s->block.hash.unpadded += check_sizes[s->check_type];
#else
- if (s->check_type == XZ_CHECK_CRC32)
- s->block.hash.unpadded += 4;
+ if (s->check_type == XZ_CHECK_CRC32)
+ s->block.hash.unpadded += 4;
#endif
- s->block.hash.uncompressed += s->block.uncompressed;
- s->block.hash.crc32 = xz_crc32(
- (const uint8_t *)&s->block.hash,
- sizeof(s->block.hash), s->block.hash.crc32);
+ s->block.hash.uncompressed += s->block.uncompressed;
+ s->block.hash.crc32 = xz_crc32(
+ (const uint8_t *)&s->block.hash,
+ sizeof(s->block.hash), s->block.hash.crc32);
- ++s->block.count;
- }
+ ++s->block.count;
+ }
- return ret;
+ return ret;
}
/* Update the Index size and the CRC32 value. */
static void XZ_FUNC index_update(struct xz_dec *s, const struct xz_buf *b)
{
- size_t in_used = b->in_pos - s->in_start;
- s->index.size += in_used;
- s->crc32 = xz_crc32(b->in + s->in_start, in_used, s->crc32);
+ size_t in_used = b->in_pos - s->in_start;
+ s->index.size += in_used;
+ s->crc32 = xz_crc32(b->in + s->in_start, in_used, s->crc32);
}
/*
@@ -295,48 +295,48 @@ static void XZ_FUNC index_update(struct xz_dec *s, const struct xz_buf *b)
*/
static enum xz_ret XZ_FUNC dec_index(struct xz_dec *s, struct xz_buf *b)
{
- enum xz_ret ret;
-
- do {
- ret = dec_vli(s, b->in, &b->in_pos, b->in_size);
- if (ret != XZ_STREAM_END) {
- index_update(s, b);
- return ret;
- }
-
- switch (s->index.sequence) {
- case SEQ_INDEX_COUNT:
- s->index.count = s->vli;
-
- /*
- * Validate that the Number of Records field
- * indicates the same number of Records as
- * there were Blocks in the Stream.
- */
- if (s->index.count != s->block.count)
- return XZ_DATA_ERROR;
-
- s->index.sequence = SEQ_INDEX_UNPADDED;
- break;
-
- case SEQ_INDEX_UNPADDED:
- s->index.hash.unpadded += s->vli;
- s->index.sequence = SEQ_INDEX_UNCOMPRESSED;
- break;
-
- case SEQ_INDEX_UNCOMPRESSED:
- s->index.hash.uncompressed += s->vli;
- s->index.hash.crc32 = xz_crc32(
- (const uint8_t *)&s->index.hash,
- sizeof(s->index.hash),
- s->index.hash.crc32);
- --s->index.count;
- s->index.sequence = SEQ_INDEX_UNPADDED;
- break;
- }
- } while (s->index.count > 0);
-
- return XZ_STREAM_END;
+ enum xz_ret ret;
+
+ do {
+ ret = dec_vli(s, b->in, &b->in_pos, b->in_size);
+ if (ret != XZ_STREAM_END) {
+ index_update(s, b);
+ return ret;
+ }
+
+ switch (s->index.sequence) {
+ case SEQ_INDEX_COUNT:
+ s->index.count = s->vli;
+
+ /*
+ * Validate that the Number of Records field
+ * indicates the same number of Records as
+ * there were Blocks in the Stream.
+ */
+ if (s->index.count != s->block.count)
+ return XZ_DATA_ERROR;
+
+ s->index.sequence = SEQ_INDEX_UNPADDED;
+ break;
+
+ case SEQ_INDEX_UNPADDED:
+ s->index.hash.unpadded += s->vli;
+ s->index.sequence = SEQ_INDEX_UNCOMPRESSED;
+ break;
+
+ case SEQ_INDEX_UNCOMPRESSED:
+ s->index.hash.uncompressed += s->vli;
+ s->index.hash.crc32 = xz_crc32(
+ (const uint8_t *)&s->index.hash,
+ sizeof(s->index.hash),
+ s->index.hash.crc32);
+ --s->index.count;
+ s->index.sequence = SEQ_INDEX_UNPADDED;
+ break;
+ }
+ } while (s->index.count > 0);
+
+ return XZ_STREAM_END;
}
/*
@@ -345,21 +345,21 @@ static enum xz_ret XZ_FUNC dec_index(struct xz_dec *s, struct xz_buf *b)
*/
static enum xz_ret XZ_FUNC crc32_validate(struct xz_dec *s, struct xz_buf *b)
{
- do {
- if (b->in_pos == b->in_size)
- return XZ_OK;
+ do {
+ if (b->in_pos == b->in_size)
+ return XZ_OK;
- if (((s->crc32 >> s->pos) & 0xFF) != b->in[b->in_pos++])
- return XZ_DATA_ERROR;
+ if (((s->crc32 >> s->pos) & 0xFF) != b->in[b->in_pos++])
+ return XZ_DATA_ERROR;
- s->pos += 8;
+ s->pos += 8;
- } while (s->pos < 32);
+ } while (s->pos < 32);
- s->crc32 = 0;
- s->pos = 0;
+ s->crc32 = 0;
+ s->pos = 0;
- return XZ_STREAM_END;
+ return XZ_STREAM_END;
}
#ifdef XZ_DEC_ANY_CHECK
@@ -369,341 +369,354 @@ static enum xz_ret XZ_FUNC crc32_validate(struct xz_dec *s, struct xz_buf *b)
*/
static bool XZ_FUNC check_skip(struct xz_dec *s, struct xz_buf *b)
{
- while (s->pos < check_sizes[s->check_type]) {
- if (b->in_pos == b->in_size)
- return false;
+ while (s->pos < check_sizes[s->check_type]) {
+ if (b->in_pos == b->in_size)
+ return false;
- ++b->in_pos;
- ++s->pos;
- }
+ ++b->in_pos;
+ ++s->pos;
+ }
- s->pos = 0;
+ s->pos = 0;
- return true;
+ return true;
}
#endif
/* Decode the Stream Header field (the first 12 bytes of the .xz Stream). */
static enum xz_ret XZ_FUNC dec_stream_header(struct xz_dec *s)
{
- if (!memeq(s->temp.buf, HEADER_MAGIC, HEADER_MAGIC_SIZE))
- return XZ_FORMAT_ERROR;
+ if (!memeq(s->temp.buf, HEADER_MAGIC, HEADER_MAGIC_SIZE))
+ return XZ_FORMAT_ERROR;
- if (xz_crc32(s->temp.buf + HEADER_MAGIC_SIZE, 2, 0)
- != get_le32(s->temp.buf + HEADER_MAGIC_SIZE + 2))
- return XZ_DATA_ERROR;
+ if (xz_crc32(s->temp.buf + HEADER_MAGIC_SIZE, 2, 0)
+ != get_le32(s->temp.buf + HEADER_MAGIC_SIZE + 2))
+ return XZ_DATA_ERROR;
- if (s->temp.buf[HEADER_MAGIC_SIZE] != 0)
- return XZ_OPTIONS_ERROR;
+ if (s->temp.buf[HEADER_MAGIC_SIZE] != 0)
+ return XZ_OPTIONS_ERROR;
- /*
- * Of integrity checks, we support only none (Check ID = 0) and
- * CRC32 (Check ID = 1). However, if XZ_DEC_ANY_CHECK is defined,
- * we will accept other check types too, but then the check won't
- * be verified and a warning (XZ_UNSUPPORTED_CHECK) will be given.
- */
- s->check_type = s->temp.buf[HEADER_MAGIC_SIZE + 1];
+ /*
+ * Of integrity checks, we support only none (Check ID = 0) and
+ * CRC32 (Check ID = 1). However, if XZ_DEC_ANY_CHECK is defined,
+ * we will accept other check types too, but then the check won't
+ * be verified and a warning (XZ_UNSUPPORTED_CHECK) will be given.
+ */
+ s->check_type = s->temp.buf[HEADER_MAGIC_SIZE + 1];
#ifdef XZ_DEC_ANY_CHECK
- if (s->check_type > XZ_CHECK_MAX)
- return XZ_OPTIONS_ERROR;
+ if (s->check_type > XZ_CHECK_MAX)
+ return XZ_OPTIONS_ERROR;
- if (s->check_type > XZ_CHECK_CRC32)
- return XZ_UNSUPPORTED_CHECK;
+ if (s->check_type > XZ_CHECK_CRC32)
+ return XZ_UNSUPPORTED_CHECK;
#else
- if (s->check_type > XZ_CHECK_CRC32)
- return XZ_OPTIONS_ERROR;
+ if (s->check_type > XZ_CHECK_CRC32)
+ return XZ_OPTIONS_ERROR;
#endif
- return XZ_OK;
+ return XZ_OK;
}
/* Decode the Stream Footer field (the last 12 bytes of the .xz Stream) */
static enum xz_ret XZ_FUNC dec_stream_footer(struct xz_dec *s)
{
- if (!memeq(s->temp.buf + 10, FOOTER_MAGIC, FOOTER_MAGIC_SIZE))
- return XZ_DATA_ERROR;
-
- if (xz_crc32(s->temp.buf + 4, 6, 0) != get_le32(s->temp.buf))
- return XZ_DATA_ERROR;
-
- /*
- * Validate Backward Size. Note that we never added the size of the
- * Index CRC32 field to s->index.size, thus we use s->index.size / 4
- * instead of s->index.size / 4 - 1.
- */
- if ((s->index.size >> 2) != get_le32(s->temp.buf + 4))
- return XZ_DATA_ERROR;
-
- if (s->temp.buf[8] != 0 || s->temp.buf[9] != s->check_type)
- return XZ_DATA_ERROR;
-
- /*
- * Use XZ_STREAM_END instead of XZ_OK to be more convenient
- * for the caller.
- */
- return XZ_STREAM_END;
+ if (!memeq(s->temp.buf + 10, FOOTER_MAGIC, FOOTER_MAGIC_SIZE))
+ return XZ_DATA_ERROR;
+
+ if (xz_crc32(s->temp.buf + 4, 6, 0) != get_le32(s->temp.buf))
+ return XZ_DATA_ERROR;
+
+ /*
+ * Validate Backward Size. Note that we never added the size of the
+ * Index CRC32 field to s->index.size, thus we use s->index.size / 4
+ * instead of s->index.size / 4 - 1.
+ */
+ if ((s->index.size >> 2) != get_le32(s->temp.buf + 4))
+ return XZ_DATA_ERROR;
+
+ if (s->temp.buf[8] != 0 || s->temp.buf[9] != s->check_type)
+ return XZ_DATA_ERROR;
+
+ /*
+ * Use XZ_STREAM_END instead of XZ_OK to be more convenient
+ * for the caller.
+ */
+ return XZ_STREAM_END;
}
/* Decode the Block Header and initialize the filter chain. */
static enum xz_ret XZ_FUNC dec_block_header(struct xz_dec *s)
{
- enum xz_ret ret;
-
- /*
- * Validate the CRC32. We know that the temp buffer is at least
- * eight bytes so this is safe.
- */
- s->temp.size -= 4;
- if (xz_crc32(s->temp.buf, s->temp.size, 0)
- != get_le32(s->temp.buf + s->temp.size))
- return XZ_DATA_ERROR;
-
- s->temp.pos = 2;
-
- /*
- * Catch unsupported Block Flags. We support only one or two filters
- * in the chain, so we catch that with the same test.
- */
+ enum xz_ret ret;
+
+ /*
+ * Validate the CRC32. We know that the temp buffer is at least
+ * eight bytes so this is safe.
+ */
+ s->temp.size -= 4;
+ if (xz_crc32(s->temp.buf, s->temp.size, 0)
+ != get_le32(s->temp.buf + s->temp.size))
+ return XZ_DATA_ERROR;
+
+ s->temp.pos = 2;
+
+ /*
+ * Catch unsupported Block Flags. We support only one or two filters
+ * in the chain, so we catch that with the same test.
+ */
#ifdef XZ_DEC_BCJ
- if (s->temp.buf[1] & 0x3E)
+ if (s->temp.buf[1] & 0x3E)
#else
- if (s->temp.buf[1] & 0x3F)
+ if (s->temp.buf[1] & 0x3F)
#endif
- return XZ_OPTIONS_ERROR;
-
- /* Compressed Size */
- if (s->temp.buf[1] & 0x40) {
- if (dec_vli(s, s->temp.buf, &s->temp.pos, s->temp.size)
- != XZ_STREAM_END)
- return XZ_DATA_ERROR;
-
- s->block_header.compressed = s->vli;
- } else {
- s->block_header.compressed = VLI_UNKNOWN;
- }
-
- /* Uncompressed Size */
- if (s->temp.buf[1] & 0x80) {
- if (dec_vli(s, s->temp.buf, &s->temp.pos, s->temp.size)
- != XZ_STREAM_END)
- return XZ_DATA_ERROR;
-
- s->block_header.uncompressed = s->vli;
- } else {
- s->block_header.uncompressed = VLI_UNKNOWN;
- }
+ return XZ_OPTIONS_ERROR;
+
+ /* Compressed Size */
+ if (s->temp.buf[1] & 0x40) {
+ if (dec_vli(s, s->temp.buf, &s->temp.pos, s->temp.size)
+ != XZ_STREAM_END)
+ return XZ_DATA_ERROR;
+
+ s->block_header.compressed = s->vli;
+ } else {
+ s->block_header.compressed = VLI_UNKNOWN;
+ }
+
+ /* Uncompressed Size */
+ if (s->temp.buf[1] & 0x80) {
+ if (dec_vli(s, s->temp.buf, &s->temp.pos, s->temp.size)
+ != XZ_STREAM_END)
+ return XZ_DATA_ERROR;
+
+ s->block_header.uncompressed = s->vli;
+ } else {
+ s->block_header.uncompressed = VLI_UNKNOWN;
+ }
#ifdef XZ_DEC_BCJ
- /* If there are two filters, the first one must be a BCJ filter. */
- s->bcj_active = s->temp.buf[1] & 0x01;
- if (s->bcj_active) {
- if (s->temp.size - s->temp.pos < 2)
- return XZ_OPTIONS_ERROR;
-
- ret = xz_dec_bcj_reset(s->bcj, s->temp.buf[s->temp.pos++]);
- if (ret != XZ_OK)
- return ret;
-
- /*
- * We don't support custom start offset,
- * so Size of Properties must be zero.
- */
- if (s->temp.buf[s->temp.pos++] != 0x00)
- return XZ_OPTIONS_ERROR;
- }
+ /* If there are two filters, the first one must be a BCJ filter. */
+ s->bcj_active = s->temp.buf[1] & 0x01;
+ if (s->bcj_active) {
+ if (s->temp.size - s->temp.pos < 2)
+ return XZ_OPTIONS_ERROR;
+
+ ret = xz_dec_bcj_reset(s->bcj, s->temp.buf[s->temp.pos++]);
+ if (ret != XZ_OK)
+ return ret;
+
+ /*
+ * We don't support custom start offset,
+ * so Size of Properties must be zero.
+ */
+ if (s->temp.buf[s->temp.pos++] != 0x00)
+ return XZ_OPTIONS_ERROR;
+ }
#endif
- /* Valid Filter Flags always take at least two bytes. */
- if (s->temp.size - s->temp.pos < 2)
- return XZ_DATA_ERROR;
+ /* Valid Filter Flags always take at least two bytes. */
+ if (s->temp.size - s->temp.pos < 2)
+ return XZ_DATA_ERROR;
- /* Filter ID = LZMA2 */
- if (s->temp.buf[s->temp.pos++] != 0x21)
- return XZ_OPTIONS_ERROR;
+ /* Filter ID = LZMA2 */
+ if (s->temp.buf[s->temp.pos++] != 0x21)
+ return XZ_OPTIONS_ERROR;
- /* Size of Properties = 1-byte Filter Properties */
- if (s->temp.buf[s->temp.pos++] != 0x01)
- return XZ_OPTIONS_ERROR;
+ /* Size of Properties = 1-byte Filter Properties */
+ if (s->temp.buf[s->temp.pos++] != 0x01)
+ return XZ_OPTIONS_ERROR;
- /* Filter Properties contains LZMA2 dictionary size. */
- if (s->temp.size - s->temp.pos < 1)
- return XZ_DATA_ERROR;
+ /* Filter Properties contains LZMA2 dictionary size. */
+ if (s->temp.size - s->temp.pos < 1)
+ return XZ_DATA_ERROR;
- ret = xz_dec_lzma2_reset(s->lzma2, s->temp.buf[s->temp.pos++]);
- if (ret != XZ_OK)
- return ret;
+ ret = xz_dec_lzma2_reset(s->lzma2, s->temp.buf[s->temp.pos++]);
+ if (ret != XZ_OK)
+ return ret;
- /* The rest must be Header Padding. */
- while (s->temp.pos < s->temp.size)
- if (s->temp.buf[s->temp.pos++] != 0x00)
- return XZ_OPTIONS_ERROR;
+ /* The rest must be Header Padding. */
+ while (s->temp.pos < s->temp.size)
+ if (s->temp.buf[s->temp.pos++] != 0x00)
+ return XZ_OPTIONS_ERROR;
- s->temp.pos = 0;
- s->block.compressed = 0;
- s->block.uncompressed = 0;
+ s->temp.pos = 0;
+ s->block.compressed = 0;
+ s->block.uncompressed = 0;
- return XZ_OK;
+ return XZ_OK;
}
static enum xz_ret XZ_FUNC dec_main(struct xz_dec *s, struct xz_buf *b)
{
- enum xz_ret ret;
-
- /*
- * Store the start position for the case when we are in the middle
- * of the Index field.
- */
- s->in_start = b->in_pos;
-
- while (true) {
- switch (s->sequence) {
- case SEQ_STREAM_HEADER:
- /*
- * Stream Header is copied to s->temp, and then
- * decoded from there. This way if the caller
- * gives us only little input at a time, we can
- * still keep the Stream Header decoding code
- * simple. Similar approach is used in many places
- * in this file.
- */
- if (!fill_temp(s, b))
- return XZ_OK;
-
- /*
- * If dec_stream_header() returns
- * XZ_UNSUPPORTED_CHECK, it is still possible
- * to continue decoding if working in multi-call
- * mode. Thus, update s->sequence before calling
- * dec_stream_header().
- */
- s->sequence = SEQ_BLOCK_START;
-
- ret = dec_stream_header(s);
- if (ret != XZ_OK)
- return ret;
-
- case SEQ_BLOCK_START:
- /* We need one byte of input to continue. */
- if (b->in_pos == b->in_size)
- return XZ_OK;
-
- /* See if this is the beginning of the Index field. */
- if (b->in[b->in_pos] == 0) {
- s->in_start = b->in_pos++;
- s->sequence = SEQ_INDEX;
- break;
- }
-
- /*
- * Calculate the size of the Block Header and
- * prepare to decode it.
- */
- s->block_header.size
- = ((uint32_t)b->in[b->in_pos] + 1) * 4;
-
- s->temp.size = s->block_header.size;
- s->temp.pos = 0;
- s->sequence = SEQ_BLOCK_HEADER;
-
- case SEQ_BLOCK_HEADER:
- if (!fill_temp(s, b))
- return XZ_OK;
-
- ret = dec_block_header(s);
- if (ret != XZ_OK)
- return ret;
-
- s->sequence = SEQ_BLOCK_UNCOMPRESS;
-
- case SEQ_BLOCK_UNCOMPRESS:
- ret = dec_block(s, b);
- if (ret != XZ_STREAM_END)
- return ret;
-
- s->sequence = SEQ_BLOCK_PADDING;
-
- case SEQ_BLOCK_PADDING:
- /*
- * Size of Compressed Data + Block Padding
- * must be a multiple of four. We don't need
- * s->block.compressed for anything else
- * anymore, so we use it here to test the size
- * of the Block Padding field.
- */
- while (s->block.compressed & 3) {
- if (b->in_pos == b->in_size)
- return XZ_OK;
-
- if (b->in[b->in_pos++] != 0)
- return XZ_DATA_ERROR;
-
- ++s->block.compressed;
- }
-
- s->sequence = SEQ_BLOCK_CHECK;
-
- case SEQ_BLOCK_CHECK:
- if (s->check_type == XZ_CHECK_CRC32) {
- ret = crc32_validate(s, b);
- if (ret != XZ_STREAM_END)
- return ret;
- }
+ enum xz_ret ret;
+
+ /*
+ * Store the start position for the case when we are in the middle
+ * of the Index field.
+ */
+ s->in_start = b->in_pos;
+
+ while (true) {
+ switch (s->sequence) {
+ case SEQ_STREAM_HEADER:
+ /*
+ * Stream Header is copied to s->temp, and then
+ * decoded from there. This way if the caller
+ * gives us only little input at a time, we can
+ * still keep the Stream Header decoding code
+ * simple. Similar approach is used in many places
+ * in this file.
+ */
+ if (!fill_temp(s, b))
+ return XZ_OK;
+
+ /*
+ * If dec_stream_header() returns
+ * XZ_UNSUPPORTED_CHECK, it is still possible
+ * to continue decoding if working in multi-call
+ * mode. Thus, update s->sequence before calling
+ * dec_stream_header().
+ */
+ s->sequence = SEQ_BLOCK_START;
+
+ ret = dec_stream_header(s);
+ if (ret != XZ_OK)
+ return ret;
+ #ifndef __clang__
+ __attribute__ ((fallthrough));
+ #endif
+ case SEQ_BLOCK_START:
+ /* We need one byte of input to continue. */
+ if (b->in_pos == b->in_size)
+ return XZ_OK;
+
+ /* See if this is the beginning of the Index field. */
+ if (b->in[b->in_pos] == 0) {
+ s->in_start = b->in_pos++;
+ s->sequence = SEQ_INDEX;
+ break;
+ }
+
+ /*
+ * Calculate the size of the Block Header and
+ * prepare to decode it.
+ */
+ s->block_header.size
+ = ((uint32_t)b->in[b->in_pos] + 1) * 4;
+
+ s->temp.size = s->block_header.size;
+ s->temp.pos = 0;
+ s->sequence = SEQ_BLOCK_HEADER;
+ #ifndef __clang__
+ __attribute__ ((fallthrough));
+ #endif
+ case SEQ_BLOCK_HEADER:
+ if (!fill_temp(s, b))
+ return XZ_OK;
+
+ ret = dec_block_header(s);
+ if (ret != XZ_OK)
+ return ret;
+
+ s->sequence = SEQ_BLOCK_UNCOMPRESS;
+ #ifndef __clang__
+ __attribute__ ((fallthrough));
+ #endif
+ case SEQ_BLOCK_UNCOMPRESS:
+ ret = dec_block(s, b);
+ if (ret != XZ_STREAM_END)
+ return ret;
+
+ s->sequence = SEQ_BLOCK_PADDING;
+
+ case SEQ_BLOCK_PADDING:
+ /*
+ * Size of Compressed Data + Block Padding
+ * must be a multiple of four. We don't need
+ * s->block.compressed for anything else
+ * anymore, so we use it here to test the size
+ * of the Block Padding field.
+ */
+ while (s->block.compressed & 3) {
+ if (b->in_pos == b->in_size)
+ return XZ_OK;
+
+ if (b->in[b->in_pos++] != 0)
+ return XZ_DATA_ERROR;
+
+ ++s->block.compressed;
+ }
+
+ s->sequence = SEQ_BLOCK_CHECK;
+ #ifndef __clang__
+ __attribute__ ((fallthrough));
+ #endif
+ case SEQ_BLOCK_CHECK:
+ if (s->check_type == XZ_CHECK_CRC32) {
+ ret = crc32_validate(s, b);
+ if (ret != XZ_STREAM_END)
+ return ret;
+ }
#ifdef XZ_DEC_ANY_CHECK
- else if (!check_skip(s, b)) {
- return XZ_OK;
- }
+ else if (!check_skip(s, b)) {
+ return XZ_OK;
+ }
#endif
- s->sequence = SEQ_BLOCK_START;
- break;
-
- case SEQ_INDEX:
- ret = dec_index(s, b);
- if (ret != XZ_STREAM_END)
- return ret;
-
- s->sequence = SEQ_INDEX_PADDING;
-
- case SEQ_INDEX_PADDING:
- while ((s->index.size + (b->in_pos - s->in_start))
- & 3) {
- if (b->in_pos == b->in_size) {
- index_update(s, b);
- return XZ_OK;
- }
-
- if (b->in[b->in_pos++] != 0)
- return XZ_DATA_ERROR;
- }
-
- /* Finish the CRC32 value and Index size. */
- index_update(s, b);
-
- /* Compare the hashes to validate the Index field. */
- if (!memeq(&s->block.hash, &s->index.hash,
- sizeof(s->block.hash)))
- return XZ_DATA_ERROR;
-
- s->sequence = SEQ_INDEX_CRC32;
-
- case SEQ_INDEX_CRC32:
- ret = crc32_validate(s, b);
- if (ret != XZ_STREAM_END)
- return ret;
-
- s->temp.size = STREAM_HEADER_SIZE;
- s->sequence = SEQ_STREAM_FOOTER;
-
- case SEQ_STREAM_FOOTER:
- if (!fill_temp(s, b))
- return XZ_OK;
-
- return dec_stream_footer(s);
- }
- }
-
- /* Never reached */
+ s->sequence = SEQ_BLOCK_START;
+ break;
+ case SEQ_INDEX:
+ ret = dec_index(s, b);
+ if (ret != XZ_STREAM_END)
+ return ret;
+
+ s->sequence = SEQ_INDEX_PADDING;
+ #ifndef __clang__
+ __attribute__ ((fallthrough));
+ #endif
+ case SEQ_INDEX_PADDING:
+ while ((s->index.size + (b->in_pos - s->in_start))
+ & 3) {
+ if (b->in_pos == b->in_size) {
+ index_update(s, b);
+ return XZ_OK;
+ }
+
+ if (b->in[b->in_pos++] != 0)
+ return XZ_DATA_ERROR;
+ }
+
+ /* Finish the CRC32 value and Index size. */
+ index_update(s, b);
+
+ /* Compare the hashes to validate the Index field. */
+ if (!memeq(&s->block.hash, &s->index.hash,
+ sizeof(s->block.hash)))
+ return XZ_DATA_ERROR;
+
+ s->sequence = SEQ_INDEX_CRC32;
+ #ifndef __clang__
+ __attribute__ ((fallthrough));
+ #endif
+ case SEQ_INDEX_CRC32:
+ ret = crc32_validate(s, b);
+ if (ret != XZ_STREAM_END)
+ return ret;
+
+ s->temp.size = STREAM_HEADER_SIZE;
+ s->sequence = SEQ_STREAM_FOOTER;
+ #ifndef __clang__
+ __attribute__ ((fallthrough));
+ #endif
+ case SEQ_STREAM_FOOTER:
+ if (!fill_temp(s, b))
+ return XZ_OK;
+
+ return dec_stream_footer(s);
+ }
+ }
+
+ /* Never reached */
}
/*
@@ -733,90 +746,90 @@ static enum xz_ret XZ_FUNC dec_main(struct xz_dec *s, struct xz_buf *b)
*/
XZ_EXTERN enum xz_ret XZ_FUNC xz_dec_run(struct xz_dec *s, struct xz_buf *b)
{
- size_t in_start;
- size_t out_start;
- enum xz_ret ret;
-
- if (DEC_IS_SINGLE(s->mode))
- xz_dec_reset(s);
-
- in_start = b->in_pos;
- out_start = b->out_pos;
- ret = dec_main(s, b);
-
- if (DEC_IS_SINGLE(s->mode)) {
- if (ret == XZ_OK)
- ret = b->in_pos == b->in_size
- ? XZ_DATA_ERROR : XZ_BUF_ERROR;
-
- if (ret != XZ_STREAM_END) {
- b->in_pos = in_start;
- b->out_pos = out_start;
- }
-
- } else if (ret == XZ_OK && in_start == b->in_pos
- && out_start == b->out_pos) {
- if (s->allow_buf_error)
- ret = XZ_BUF_ERROR;
-
- s->allow_buf_error = true;
- } else {
- s->allow_buf_error = false;
- }
-
- return ret;
+ size_t in_start;
+ size_t out_start;
+ enum xz_ret ret;
+
+ if (DEC_IS_SINGLE(s->mode))
+ xz_dec_reset(s);
+
+ in_start = b->in_pos;
+ out_start = b->out_pos;
+ ret = dec_main(s, b);
+
+ if (DEC_IS_SINGLE(s->mode)) {
+ if (ret == XZ_OK)
+ ret = b->in_pos == b->in_size
+ ? XZ_DATA_ERROR : XZ_BUF_ERROR;
+
+ if (ret != XZ_STREAM_END) {
+ b->in_pos = in_start;
+ b->out_pos = out_start;
+ }
+
+ } else if (ret == XZ_OK && in_start == b->in_pos
+ && out_start == b->out_pos) {
+ if (s->allow_buf_error)
+ ret = XZ_BUF_ERROR;
+
+ s->allow_buf_error = true;
+ } else {
+ s->allow_buf_error = false;
+ }
+
+ return ret;
}
XZ_EXTERN struct xz_dec * XZ_FUNC xz_dec_init(
- enum xz_mode mode, uint32_t dict_max)
+ enum xz_mode mode, uint32_t dict_max)
{
- struct xz_dec *s = kmalloc(sizeof(*s), GFP_KERNEL);
- if (s == NULL)
- return NULL;
+ struct xz_dec *s = kmalloc(sizeof(*s), GFP_KERNEL);
+ if (s == NULL)
+ return NULL;
- s->mode = mode;
+ s->mode = mode;
#ifdef XZ_DEC_BCJ
- s->bcj = xz_dec_bcj_create(DEC_IS_SINGLE(mode));
- if (s->bcj == NULL)
- goto error_bcj;
+ s->bcj = xz_dec_bcj_create(DEC_IS_SINGLE(mode));
+ if (s->bcj == NULL)
+ goto error_bcj;
#endif
- s->lzma2 = xz_dec_lzma2_create(mode, dict_max);
- if (s->lzma2 == NULL)
- goto error_lzma2;
+ s->lzma2 = xz_dec_lzma2_create(mode, dict_max);
+ if (s->lzma2 == NULL)
+ goto error_lzma2;
- xz_dec_reset(s);
- return s;
+ xz_dec_reset(s);
+ return s;
error_lzma2:
#ifdef XZ_DEC_BCJ
- xz_dec_bcj_end(s->bcj);
+ xz_dec_bcj_end(s->bcj);
error_bcj:
#endif
- kfree(s);
- return NULL;
+ kfree(s);
+ return NULL;
}
XZ_EXTERN void XZ_FUNC xz_dec_reset(struct xz_dec *s)
{
- s->sequence = SEQ_STREAM_HEADER;
- s->allow_buf_error = false;
- s->pos = 0;
- s->crc32 = 0;
- memzero(&s->block, sizeof(s->block));
- memzero(&s->index, sizeof(s->index));
- s->temp.pos = 0;
- s->temp.size = STREAM_HEADER_SIZE;
+ s->sequence = SEQ_STREAM_HEADER;
+ s->allow_buf_error = false;
+ s->pos = 0;
+ s->crc32 = 0;
+ memzero(&s->block, sizeof(s->block));
+ memzero(&s->index, sizeof(s->index));
+ s->temp.pos = 0;
+ s->temp.size = STREAM_HEADER_SIZE;
}
XZ_EXTERN void XZ_FUNC xz_dec_end(struct xz_dec *s)
{
- if (s != NULL) {
- xz_dec_lzma2_end(s->lzma2);
+ if (s != NULL) {
+ xz_dec_lzma2_end(s->lzma2);
#ifdef XZ_DEC_BCJ
- xz_dec_bcj_end(s->bcj);
+ xz_dec_bcj_end(s->bcj);
#endif
- kfree(s);
- }
+ kfree(s);
+ }
}
diff --git a/libfm-qt-ultracopier/README b/libfm-qt-ultracopier/README
new file mode 100644
index 0000000..b3f7dd6
--- /dev/null
+++ b/libfm-qt-ultracopier/README
@@ -0,0 +1 @@
+LD_LIBRARY_PATH=/home/user/Desktop/ultracopier/sources/build-libfm-qt-ultracopier-Desktop-Debug/libfm-qt.so.1.0.0 pcmanfm-qt
diff --git a/libfm-qt-ultracopier/libfm-qt-ultracopier.pro b/libfm-qt-ultracopier/libfm-qt-ultracopier.pro
new file mode 100644
index 0000000..19cedba
--- /dev/null
+++ b/libfm-qt-ultracopier/libfm-qt-ultracopier.pro
@@ -0,0 +1,14 @@
+CONFIG += c++11
+
+TEMPLATE = lib
+QT += network widgets
+TARGET = $$qtLibraryTarget(fm-qt)
+LIBS += -Llibfm-qt
+INCLUDEPATH += /usr/include/glib-2.0/ /usr/lib64/glib-2.0/include/
+DEFINES += QT_NO_KEYWORDS
+
+HEADERS += \
+ utilities.h
+
+SOURCES += \
+ utilities.cpp
diff --git a/libfm-qt-ultracopier/utilities.cpp b/libfm-qt-ultracopier/utilities.cpp
new file mode 100644
index 0000000..38b87f6
--- /dev/null
+++ b/libfm-qt-ultracopier/utilities.cpp
@@ -0,0 +1,89 @@
+#include "utilities.h"
+#include <QClipboard>
+#include <QApplication>
+#include <libfm-qt/foldermodel.h>
+#include <libfm-qt/fileoperation.h>
+#include <dlfcn.h>
+
+namespace Fm {
+
+void sendRawOrderList(const QStringList & order, QLocalSocket &socket, int idNextOrder)
+{
+ QByteArray block;
+ QDataStream out(&block, QIODevice::WriteOnly);
+ out.setVersion(QDataStream::Qt_4_4);
+ out << int(0);
+ out << idNextOrder;
+ out << order;
+ out.device()->seek(0);
+ out << block.size();
+ do //cut string list and send it as block of 32KB
+ {
+ QByteArray blockToSend;
+ int byteWriten;
+ blockToSend=block.left(32*1024);//32KB
+ block.remove(0,blockToSend.size());
+ byteWriten = socket.write(blockToSend);
+ }
+ while(block.size());
+}
+
+void pasteFilesFromClipboard(const Fm::FilePath& destPath, QWidget* parent) {
+ //https://gist.github.com/mooware/1174572
+ typedef std::pair<Fm::FilePathList, bool> (*methodType)(const QMimeData& data);
+
+ static methodType origMethod = 0;
+
+ // use the mangled method name here. RTLD_NEXT means something like
+ // "search this symbol in any libraries loaded after the current one".
+ void *tmpPtr = dlsym(RTLD_NEXT, "pasteFilesFromClipboard");
+
+ // not even reinterpret_cast can convert between void* and a method ptr,
+ // so i'm doing the worst hack i've ever seen.
+ memcpy(&origMethod, &tmpPtr, sizeof(tmpPtr));
+
+ QClipboard* clipboard = QApplication::clipboard();
+ const QMimeData* data = clipboard->mimeData();
+ Fm::FilePathList paths;
+ bool isCut = false;
+
+ std::tie(paths, isCut) = (*origMethod)(*data);
+
+ if(!paths.empty()) {
+ QLocalSocket socket;
+ socket.connectToServer(QString::fromStdString("advanced-copier-"+std::to_string(getuid())));
+ socket.waitForConnected();
+ if(socket.state()==QLocalSocket::ConnectedState)
+ {
+ sendRawOrderList(QStringList() << "protocol" << "0002", socket, 1);
+ socket.waitForReadyRead();
+ socket.readAll();
+ QStringList l;
+ if(isCut) {
+ l << "mv";
+ clipboard->clear(QClipboard::Clipboard);
+ }
+ else {
+ l << "cp";
+ }
+ for(const FilePath &n : paths)
+ l << n.toString().get();
+ l << destPath.toString().get();
+ sendRawOrderList(l, socket, 2);
+ socket.waitForBytesWritten();
+ socket.close();
+ }
+ else
+ {
+ if(isCut) {
+ FileOperation::moveFiles(paths, destPath, parent);
+ clipboard->clear(QClipboard::Clipboard);
+ }
+ else {
+ FileOperation::copyFiles(paths, destPath, parent);
+ }
+ }
+ }
+}
+
+} // namespace Fm
diff --git a/libfm-qt-ultracopier/utilities.h b/libfm-qt-ultracopier/utilities.h
new file mode 100644
index 0000000..e96e0d4
--- /dev/null
+++ b/libfm-qt-ultracopier/utilities.h
@@ -0,0 +1,21 @@
+#include <QWidget>
+#include <QStringList>
+#include <QLocalSocket>
+
+#include <libfm-qt/utilities.h>
+#include <libfm-qt/core/filepath.h>
+
+#ifndef FM_UTILITIESUC_H
+#define FM_UTILITIESUC_H
+
+namespace Fm {
+
+__attribute__((visibility("default"))) void pasteFilesFromClipboard(const Fm::FilePath& destPath, QWidget* parent);
+
+std::string pathSocket();
+char * toHex(const char *str);
+void sendRawOrderList(const QStringList & order, QLocalSocket &socket);
+
+}
+
+#endif // FM_UTILITIESUC_H
diff --git a/libogg/COPYING b/libogg/COPYING
new file mode 100644
index 0000000..6111c6c
--- /dev/null
+++ b/libogg/COPYING
@@ -0,0 +1,28 @@
+Copyright (c) 2002, Xiph.org Foundation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of the Xiph.org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/libogg/bitwise.c b/libogg/bitwise.c
new file mode 100644
index 0000000..4ef3c5e
--- /dev/null
+++ b/libogg/bitwise.c
@@ -0,0 +1,1088 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg CONTAINER SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2014 *
+ * by the Xiph.Org Foundation http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: packing variable sized words into an octet stream
+ last mod: $Id$
+
+ ********************************************************************/
+
+/* We're 'LSb' endian; if we write a word but read individual bits,
+ then we'll read the lsb first */
+
+#include <string.h>
+#include <stdlib.h>
+#include <limits.h>
+#include "ogg.h"
+
+#define BUFFER_INCREMENT 256
+
+static const unsigned long mask[]=
+{0x00000000,0x00000001,0x00000003,0x00000007,0x0000000f,
+ 0x0000001f,0x0000003f,0x0000007f,0x000000ff,0x000001ff,
+ 0x000003ff,0x000007ff,0x00000fff,0x00001fff,0x00003fff,
+ 0x00007fff,0x0000ffff,0x0001ffff,0x0003ffff,0x0007ffff,
+ 0x000fffff,0x001fffff,0x003fffff,0x007fffff,0x00ffffff,
+ 0x01ffffff,0x03ffffff,0x07ffffff,0x0fffffff,0x1fffffff,
+ 0x3fffffff,0x7fffffff,0xffffffff };
+
+static const unsigned int mask8B[]=
+{0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff};
+
+void oggpack_writeinit(oggpack_buffer *b){
+ memset(b,0,sizeof(*b));
+ b->ptr=b->buffer=_ogg_malloc(BUFFER_INCREMENT);
+ b->buffer[0]='\0';
+ b->storage=BUFFER_INCREMENT;
+}
+
+void oggpackB_writeinit(oggpack_buffer *b){
+ oggpack_writeinit(b);
+}
+
+int oggpack_writecheck(oggpack_buffer *b){
+ if(!b->ptr || !b->storage)return -1;
+ return 0;
+}
+
+int oggpackB_writecheck(oggpack_buffer *b){
+ return oggpack_writecheck(b);
+}
+
+void oggpack_writetrunc(oggpack_buffer *b,long bits){
+ long bytes=bits>>3;
+ if(b->ptr){
+ bits-=bytes*8;
+ b->ptr=b->buffer+bytes;
+ b->endbit=bits;
+ b->endbyte=bytes;
+ *b->ptr&=mask[bits];
+ }
+}
+
+void oggpackB_writetrunc(oggpack_buffer *b,long bits){
+ long bytes=bits>>3;
+ if(b->ptr){
+ bits-=bytes*8;
+ b->ptr=b->buffer+bytes;
+ b->endbit=bits;
+ b->endbyte=bytes;
+ *b->ptr&=mask8B[bits];
+ }
+}
+
+/* Takes only up to 32 bits. */
+void oggpack_write(oggpack_buffer *b,unsigned long value,int bits){
+ if(bits<0 || bits>32) goto err;
+ if(b->endbyte>=b->storage-4){
+ void *ret;
+ if(!b->ptr)return;
+ if(b->storage>LONG_MAX-BUFFER_INCREMENT) goto err;
+ ret=_ogg_realloc(b->buffer,b->storage+BUFFER_INCREMENT);
+ if(!ret) goto err;
+ b->buffer=ret;
+ b->storage+=BUFFER_INCREMENT;
+ b->ptr=b->buffer+b->endbyte;
+ }
+
+ value&=mask[bits];
+ bits+=b->endbit;
+
+ b->ptr[0]|=value<<b->endbit;
+
+ if(bits>=8){
+ b->ptr[1]=(unsigned char)(value>>(8-b->endbit));
+ if(bits>=16){
+ b->ptr[2]=(unsigned char)(value>>(16-b->endbit));
+ if(bits>=24){
+ b->ptr[3]=(unsigned char)(value>>(24-b->endbit));
+ if(bits>=32){
+ if(b->endbit)
+ b->ptr[4]=(unsigned char)(value>>(32-b->endbit));
+ else
+ b->ptr[4]=0;
+ }
+ }
+ }
+ }
+
+ b->endbyte+=bits/8;
+ b->ptr+=bits/8;
+ b->endbit=bits&7;
+ return;
+ err:
+ oggpack_writeclear(b);
+}
+
+/* Takes only up to 32 bits. */
+void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits){
+ if(bits<0 || bits>32) goto err;
+ if(b->endbyte>=b->storage-4){
+ void *ret;
+ if(!b->ptr)return;
+ if(b->storage>LONG_MAX-BUFFER_INCREMENT) goto err;
+ ret=_ogg_realloc(b->buffer,b->storage+BUFFER_INCREMENT);
+ if(!ret) goto err;
+ b->buffer=ret;
+ b->storage+=BUFFER_INCREMENT;
+ b->ptr=b->buffer+b->endbyte;
+ }
+
+ value=(value&mask[bits])<<(32-bits);
+ bits+=b->endbit;
+
+ b->ptr[0]|=value>>(24+b->endbit);
+
+ if(bits>=8){
+ b->ptr[1]=(unsigned char)(value>>(16+b->endbit));
+ if(bits>=16){
+ b->ptr[2]=(unsigned char)(value>>(8+b->endbit));
+ if(bits>=24){
+ b->ptr[3]=(unsigned char)(value>>(b->endbit));
+ if(bits>=32){
+ if(b->endbit)
+ b->ptr[4]=(unsigned char)(value<<(8-b->endbit));
+ else
+ b->ptr[4]=0;
+ }
+ }
+ }
+ }
+
+ b->endbyte+=bits/8;
+ b->ptr+=bits/8;
+ b->endbit=bits&7;
+ return;
+ err:
+ oggpack_writeclear(b);
+}
+
+void oggpack_writealign(oggpack_buffer *b){
+ int bits=8-b->endbit;
+ if(bits<8)
+ oggpack_write(b,0,bits);
+}
+
+void oggpackB_writealign(oggpack_buffer *b){
+ int bits=8-b->endbit;
+ if(bits<8)
+ oggpackB_write(b,0,bits);
+}
+
+static void oggpack_writecopy_helper(oggpack_buffer *b,
+ void *source,
+ long bits,
+ void (*w)(oggpack_buffer *,
+ unsigned long,
+ int),
+ int msb){
+ unsigned char *ptr=(unsigned char *)source;
+
+ long bytes=bits/8;
+ long pbytes=(b->endbit+bits)/8;
+ bits-=bytes*8;
+
+ /* expand storage up-front */
+ if(b->endbyte+pbytes>=b->storage){
+ void *ret;
+ if(!b->ptr) goto err;
+ if(b->storage>b->endbyte+pbytes+BUFFER_INCREMENT) goto err;
+ b->storage=b->endbyte+pbytes+BUFFER_INCREMENT;
+ ret=_ogg_realloc(b->buffer,b->storage);
+ if(!ret) goto err;
+ b->buffer=ret;
+ b->ptr=b->buffer+b->endbyte;
+ }
+
+ /* copy whole octets */
+ if(b->endbit){
+ int i;
+ /* unaligned copy. Do it the hard way. */
+ for(i=0;i<bytes;i++)
+ w(b,(unsigned long)(ptr[i]),8);
+ }else{
+ /* aligned block copy */
+ memmove(b->ptr,source,bytes);
+ b->ptr+=bytes;
+ b->endbyte+=bytes;
+ *b->ptr=0;
+ }
+
+ /* copy trailing bits */
+ if(bits){
+ if(msb)
+ w(b,(unsigned long)(ptr[bytes]>>(8-bits)),bits);
+ else
+ w(b,(unsigned long)(ptr[bytes]),bits);
+ }
+ return;
+ err:
+ oggpack_writeclear(b);
+}
+
+void oggpack_writecopy(oggpack_buffer *b,void *source,long bits){
+ oggpack_writecopy_helper(b,source,bits,oggpack_write,0);
+}
+
+void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits){
+ oggpack_writecopy_helper(b,source,bits,oggpackB_write,1);
+}
+
+void oggpack_reset(oggpack_buffer *b){
+ if(!b->ptr)return;
+ b->ptr=b->buffer;
+ b->buffer[0]=0;
+ b->endbit=b->endbyte=0;
+}
+
+void oggpackB_reset(oggpack_buffer *b){
+ oggpack_reset(b);
+}
+
+void oggpack_writeclear(oggpack_buffer *b){
+ if(b->buffer)_ogg_free(b->buffer);
+ memset(b,0,sizeof(*b));
+}
+
+void oggpackB_writeclear(oggpack_buffer *b){
+ oggpack_writeclear(b);
+}
+
+void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes){
+ memset(b,0,sizeof(*b));
+ b->buffer=b->ptr=buf;
+ b->storage=bytes;
+}
+
+void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes){
+ oggpack_readinit(b,buf,bytes);
+}
+
+/* Read in bits without advancing the bitptr; bits <= 32 */
+long oggpack_look(oggpack_buffer *b,int bits){
+ unsigned long ret;
+ unsigned long m;
+
+ if(bits<0 || bits>32) return -1;
+ m=mask[bits];
+ bits+=b->endbit;
+
+ if(b->endbyte >= b->storage-4){
+ /* not the main path */
+ if(b->endbyte > b->storage-((bits+7)>>3)) return -1;
+ /* special case to avoid reading b->ptr[0], which might be past the end of
+ the buffer; also skips some useless accounting */
+ else if(!bits)return(0L);
+ }
+
+ ret=b->ptr[0]>>b->endbit;
+ if(bits>8){
+ ret|=b->ptr[1]<<(8-b->endbit);
+ if(bits>16){
+ ret|=b->ptr[2]<<(16-b->endbit);
+ if(bits>24){
+ ret|=b->ptr[3]<<(24-b->endbit);
+ if(bits>32 && b->endbit)
+ ret|=b->ptr[4]<<(32-b->endbit);
+ }
+ }
+ }
+ return(m&ret);
+}
+
+/* Read in bits without advancing the bitptr; bits <= 32 */
+long oggpackB_look(oggpack_buffer *b,int bits){
+ unsigned long ret;
+ int m=32-bits;
+
+ if(m<0 || m>32) return -1;
+ bits+=b->endbit;
+
+ if(b->endbyte >= b->storage-4){
+ /* not the main path */
+ if(b->endbyte > b->storage-((bits+7)>>3)) return -1;
+ /* special case to avoid reading b->ptr[0], which might be past the end of
+ the buffer; also skips some useless accounting */
+ else if(!bits)return(0L);
+ }
+
+ ret=b->ptr[0]<<(24+b->endbit);
+ if(bits>8){
+ ret|=b->ptr[1]<<(16+b->endbit);
+ if(bits>16){
+ ret|=b->ptr[2]<<(8+b->endbit);
+ if(bits>24){
+ ret|=b->ptr[3]<<(b->endbit);
+ if(bits>32 && b->endbit)
+ ret|=b->ptr[4]>>(8-b->endbit);
+ }
+ }
+ }
+ return ((ret&0xffffffff)>>(m>>1))>>((m+1)>>1);
+}
+
+long oggpack_look1(oggpack_buffer *b){
+ if(b->endbyte>=b->storage)return(-1);
+ return((b->ptr[0]>>b->endbit)&1);
+}
+
+long oggpackB_look1(oggpack_buffer *b){
+ if(b->endbyte>=b->storage)return(-1);
+ return((b->ptr[0]>>(7-b->endbit))&1);
+}
+
+void oggpack_adv(oggpack_buffer *b,int bits){
+ bits+=b->endbit;
+
+ if(b->endbyte > b->storage-((bits+7)>>3)) goto overflow;
+
+ b->ptr+=bits/8;
+ b->endbyte+=bits/8;
+ b->endbit=bits&7;
+ return;
+
+ overflow:
+ b->ptr=NULL;
+ b->endbyte=b->storage;
+ b->endbit=1;
+}
+
+void oggpackB_adv(oggpack_buffer *b,int bits){
+ oggpack_adv(b,bits);
+}
+
+void oggpack_adv1(oggpack_buffer *b){
+ if(++(b->endbit)>7){
+ b->endbit=0;
+ b->ptr++;
+ b->endbyte++;
+ }
+}
+
+void oggpackB_adv1(oggpack_buffer *b){
+ oggpack_adv1(b);
+}
+
+/* bits <= 32 */
+long oggpack_read(oggpack_buffer *b,int bits){
+ long ret;
+ unsigned long m;
+
+ if(bits<0 || bits>32) goto err;
+ m=mask[bits];
+ bits+=b->endbit;
+
+ if(b->endbyte >= b->storage-4){
+ /* not the main path */
+ if(b->endbyte > b->storage-((bits+7)>>3)) goto overflow;
+ /* special case to avoid reading b->ptr[0], which might be past the end of
+ the buffer; also skips some useless accounting */
+ else if(!bits)return(0L);
+ }
+
+ ret=b->ptr[0]>>b->endbit;
+ if(bits>8){
+ ret|=b->ptr[1]<<(8-b->endbit);
+ if(bits>16){
+ ret|=b->ptr[2]<<(16-b->endbit);
+ if(bits>24){
+ ret|=b->ptr[3]<<(24-b->endbit);
+ if(bits>32 && b->endbit){
+ ret|=b->ptr[4]<<(32-b->endbit);
+ }
+ }
+ }
+ }
+ ret&=m;
+ b->ptr+=bits/8;
+ b->endbyte+=bits/8;
+ b->endbit=bits&7;
+ return ret;
+
+ overflow:
+ err:
+ b->ptr=NULL;
+ b->endbyte=b->storage;
+ b->endbit=1;
+ return -1L;
+}
+
+/* bits <= 32 */
+long oggpackB_read(oggpack_buffer *b,int bits){
+ long ret;
+ long m=32-bits;
+
+ if(m<0 || m>32) goto err;
+ bits+=b->endbit;
+
+ if(b->endbyte+4>=b->storage){
+ /* not the main path */
+ if(b->endbyte > b->storage-((bits+7)>>3)) goto overflow;
+ /* special case to avoid reading b->ptr[0], which might be past the end of
+ the buffer; also skips some useless accounting */
+ else if(!bits)return(0L);
+ }
+
+ ret=b->ptr[0]<<(24+b->endbit);
+ if(bits>8){
+ ret|=b->ptr[1]<<(16+b->endbit);
+ if(bits>16){
+ ret|=b->ptr[2]<<(8+b->endbit);
+ if(bits>24){
+ ret|=b->ptr[3]<<(b->endbit);
+ if(bits>32 && b->endbit)
+ ret|=b->ptr[4]>>(8-b->endbit);
+ }
+ }
+ }
+ ret=((ret&0xffffffffUL)>>(m>>1))>>((m+1)>>1);
+
+ b->ptr+=bits/8;
+ b->endbyte+=bits/8;
+ b->endbit=bits&7;
+ return ret;
+
+ overflow:
+ err:
+ b->ptr=NULL;
+ b->endbyte=b->storage;
+ b->endbit=1;
+ return -1L;
+}
+
+long oggpack_read1(oggpack_buffer *b){
+ long ret;
+
+ if(b->endbyte >= b->storage) goto overflow;
+ ret=(b->ptr[0]>>b->endbit)&1;
+
+ b->endbit++;
+ if(b->endbit>7){
+ b->endbit=0;
+ b->ptr++;
+ b->endbyte++;
+ }
+ return ret;
+
+ overflow:
+ b->ptr=NULL;
+ b->endbyte=b->storage;
+ b->endbit=1;
+ return -1L;
+}
+
+long oggpackB_read1(oggpack_buffer *b){
+ long ret;
+
+ if(b->endbyte >= b->storage) goto overflow;
+ ret=(b->ptr[0]>>(7-b->endbit))&1;
+
+ b->endbit++;
+ if(b->endbit>7){
+ b->endbit=0;
+ b->ptr++;
+ b->endbyte++;
+ }
+ return ret;
+
+ overflow:
+ b->ptr=NULL;
+ b->endbyte=b->storage;
+ b->endbit=1;
+ return -1L;
+}
+
+long oggpack_bytes(oggpack_buffer *b){
+ return(b->endbyte+(b->endbit+7)/8);
+}
+
+long oggpack_bits(oggpack_buffer *b){
+ return(b->endbyte*8+b->endbit);
+}
+
+long oggpackB_bytes(oggpack_buffer *b){
+ return oggpack_bytes(b);
+}
+
+long oggpackB_bits(oggpack_buffer *b){
+ return oggpack_bits(b);
+}
+
+unsigned char *oggpack_get_buffer(oggpack_buffer *b){
+ return(b->buffer);
+}
+
+unsigned char *oggpackB_get_buffer(oggpack_buffer *b){
+ return oggpack_get_buffer(b);
+}
+
+/* Self test of the bitwise routines; everything else is based on
+ them, so they damned well better be solid. */
+
+#ifdef _V_SELFTEST
+#include <stdio.h>
+
+static int ilog(unsigned int v){
+ int ret=0;
+ while(v){
+ ret++;
+ v>>=1;
+ }
+ return(ret);
+}
+
+oggpack_buffer o;
+oggpack_buffer r;
+
+void report(char *in){
+ fprintf(stderr,"%s",in);
+ exit(1);
+}
+
+void cliptest(unsigned long *b,int vals,int bits,int *comp,int compsize){
+ long bytes,i;
+ unsigned char *buffer;
+
+ oggpack_reset(&o);
+ for(i=0;i<vals;i++)
+ oggpack_write(&o,b[i],bits?bits:ilog(b[i]));
+ buffer=oggpack_get_buffer(&o);
+ bytes=oggpack_bytes(&o);
+ if(bytes!=compsize)report("wrong number of bytes!\n");
+ for(i=0;i<bytes;i++)if(buffer[i]!=comp[i]){
+ for(i=0;i<bytes;i++)fprintf(stderr,"%x %x\n",(int)buffer[i],(int)comp[i]);
+ report("wrote incorrect value!\n");
+ }
+ oggpack_readinit(&r,buffer,bytes);
+ for(i=0;i<vals;i++){
+ int tbit=bits?bits:ilog(b[i]);
+ if(oggpack_look(&r,tbit)==-1)
+ report("out of data!\n");
+ if(oggpack_look(&r,tbit)!=(b[i]&mask[tbit]))
+ report("looked at incorrect value!\n");
+ if(tbit==1)
+ if(oggpack_look1(&r)!=(b[i]&mask[tbit]))
+ report("looked at single bit incorrect value!\n");
+ if(tbit==1){
+ if(oggpack_read1(&r)!=(b[i]&mask[tbit]))
+ report("read incorrect single bit value!\n");
+ }else{
+ if(oggpack_read(&r,tbit)!=(b[i]&mask[tbit]))
+ report("read incorrect value!\n");
+ }
+ }
+ if(oggpack_bytes(&r)!=bytes)report("leftover bytes after read!\n");
+}
+
+void cliptestB(unsigned long *b,int vals,int bits,int *comp,int compsize){
+ long bytes,i;
+ unsigned char *buffer;
+
+ oggpackB_reset(&o);
+ for(i=0;i<vals;i++)
+ oggpackB_write(&o,b[i],bits?bits:ilog(b[i]));
+ buffer=oggpackB_get_buffer(&o);
+ bytes=oggpackB_bytes(&o);
+ if(bytes!=compsize)report("wrong number of bytes!\n");
+ for(i=0;i<bytes;i++)if(buffer[i]!=comp[i]){
+ for(i=0;i<bytes;i++)fprintf(stderr,"%x %x\n",(int)buffer[i],(int)comp[i]);
+ report("wrote incorrect value!\n");
+ }
+ oggpackB_readinit(&r,buffer,bytes);
+ for(i=0;i<vals;i++){
+ int tbit=bits?bits:ilog(b[i]);
+ if(oggpackB_look(&r,tbit)==-1)
+ report("out of data!\n");
+ if(oggpackB_look(&r,tbit)!=(b[i]&mask[tbit]))
+ report("looked at incorrect value!\n");
+ if(tbit==1)
+ if(oggpackB_look1(&r)!=(b[i]&mask[tbit]))
+ report("looked at single bit incorrect value!\n");
+ if(tbit==1){
+ if(oggpackB_read1(&r)!=(b[i]&mask[tbit]))
+ report("read incorrect single bit value!\n");
+ }else{
+ if(oggpackB_read(&r,tbit)!=(b[i]&mask[tbit]))
+ report("read incorrect value!\n");
+ }
+ }
+ if(oggpackB_bytes(&r)!=bytes)report("leftover bytes after read!\n");
+}
+
+void copytest(int prefill, int copy){
+ oggpack_buffer source_write;
+ oggpack_buffer dest_write;
+ oggpack_buffer source_read;
+ oggpack_buffer dest_read;
+ unsigned char *source;
+ unsigned char *dest;
+ long source_bytes,dest_bytes;
+ int i;
+
+ oggpack_writeinit(&source_write);
+ oggpack_writeinit(&dest_write);
+
+ for(i=0;i<(prefill+copy+7)/8;i++)
+ oggpack_write(&source_write,(i^0x5a)&0xff,8);
+ source=oggpack_get_buffer(&source_write);
+ source_bytes=oggpack_bytes(&source_write);
+
+ /* prefill */
+ oggpack_writecopy(&dest_write,source,prefill);
+
+ /* check buffers; verify end byte masking */
+ dest=oggpack_get_buffer(&dest_write);
+ dest_bytes=oggpack_bytes(&dest_write);
+ if(dest_bytes!=(prefill+7)/8){
+ fprintf(stderr,"wrong number of bytes after prefill! %ld!=%d\n",dest_bytes,(prefill+7)/8);
+ exit(1);
+ }
+ oggpack_readinit(&source_read,source,source_bytes);
+ oggpack_readinit(&dest_read,dest,dest_bytes);
+
+ for(i=0;i<prefill;i+=8){
+ int s=oggpack_read(&source_read,prefill-i<8?prefill-i:8);
+ int d=oggpack_read(&dest_read,prefill-i<8?prefill-i:8);
+ if(s!=d){
+ fprintf(stderr,"prefill=%d mismatch! byte %d, %x!=%x\n",prefill,i/8,s,d);
+ exit(1);
+ }
+ }
+ if(prefill<dest_bytes){
+ if(oggpack_read(&dest_read,dest_bytes-prefill)!=0){
+ fprintf(stderr,"prefill=%d mismatch! trailing bits not zero\n",prefill);
+ exit(1);
+ }
+ }
+
+ /* second copy */
+ oggpack_writecopy(&dest_write,source,copy);
+
+ /* check buffers; verify end byte masking */
+ dest=oggpack_get_buffer(&dest_write);
+ dest_bytes=oggpack_bytes(&dest_write);
+ if(dest_bytes!=(copy+prefill+7)/8){
+ fprintf(stderr,"wrong number of bytes after prefill+copy! %ld!=%d\n",dest_bytes,(copy+prefill+7)/8);
+ exit(1);
+ }
+ oggpack_readinit(&source_read,source,source_bytes);
+ oggpack_readinit(&dest_read,dest,dest_bytes);
+
+ for(i=0;i<prefill;i+=8){
+ int s=oggpack_read(&source_read,prefill-i<8?prefill-i:8);
+ int d=oggpack_read(&dest_read,prefill-i<8?prefill-i:8);
+ if(s!=d){
+ fprintf(stderr,"prefill=%d mismatch! byte %d, %x!=%x\n",prefill,i/8,s,d);
+ exit(1);
+ }
+ }
+
+ oggpack_readinit(&source_read,source,source_bytes);
+ for(i=0;i<copy;i+=8){
+ int s=oggpack_read(&source_read,copy-i<8?copy-i:8);
+ int d=oggpack_read(&dest_read,copy-i<8?copy-i:8);
+ if(s!=d){
+ fprintf(stderr,"prefill=%d copy=%d mismatch! byte %d, %x!=%x\n",prefill,copy,i/8,s,d);
+ exit(1);
+ }
+ }
+
+ if(copy+prefill<dest_bytes){
+ if(oggpack_read(&dest_read,dest_bytes-copy-prefill)!=0){
+ fprintf(stderr,"prefill=%d copy=%d mismatch! trailing bits not zero\n",prefill,copy);
+ exit(1);
+ }
+ }
+
+ oggpack_writeclear(&source_write);
+ oggpack_writeclear(&dest_write);
+
+
+}
+
+void copytestB(int prefill, int copy){
+ oggpack_buffer source_write;
+ oggpack_buffer dest_write;
+ oggpack_buffer source_read;
+ oggpack_buffer dest_read;
+ unsigned char *source;
+ unsigned char *dest;
+ long source_bytes,dest_bytes;
+ int i;
+
+ oggpackB_writeinit(&source_write);
+ oggpackB_writeinit(&dest_write);
+
+ for(i=0;i<(prefill+copy+7)/8;i++)
+ oggpackB_write(&source_write,(i^0x5a)&0xff,8);
+ source=oggpackB_get_buffer(&source_write);
+ source_bytes=oggpackB_bytes(&source_write);
+
+ /* prefill */
+ oggpackB_writecopy(&dest_write,source,prefill);
+
+ /* check buffers; verify end byte masking */
+ dest=oggpackB_get_buffer(&dest_write);
+ dest_bytes=oggpackB_bytes(&dest_write);
+ if(dest_bytes!=(prefill+7)/8){
+ fprintf(stderr,"wrong number of bytes after prefill! %ld!=%d\n",dest_bytes,(prefill+7)/8);
+ exit(1);
+ }
+ oggpackB_readinit(&source_read,source,source_bytes);
+ oggpackB_readinit(&dest_read,dest,dest_bytes);
+
+ for(i=0;i<prefill;i+=8){
+ int s=oggpackB_read(&source_read,prefill-i<8?prefill-i:8);
+ int d=oggpackB_read(&dest_read,prefill-i<8?prefill-i:8);
+ if(s!=d){
+ fprintf(stderr,"prefill=%d mismatch! byte %d, %x!=%x\n",prefill,i/8,s,d);
+ exit(1);
+ }
+ }
+ if(prefill<dest_bytes){
+ if(oggpackB_read(&dest_read,dest_bytes-prefill)!=0){
+ fprintf(stderr,"prefill=%d mismatch! trailing bits not zero\n",prefill);
+ exit(1);
+ }
+ }
+
+ /* second copy */
+ oggpackB_writecopy(&dest_write,source,copy);
+
+ /* check buffers; verify end byte masking */
+ dest=oggpackB_get_buffer(&dest_write);
+ dest_bytes=oggpackB_bytes(&dest_write);
+ if(dest_bytes!=(copy+prefill+7)/8){
+ fprintf(stderr,"wrong number of bytes after prefill+copy! %ld!=%d\n",dest_bytes,(copy+prefill+7)/8);
+ exit(1);
+ }
+ oggpackB_readinit(&source_read,source,source_bytes);
+ oggpackB_readinit(&dest_read,dest,dest_bytes);
+
+ for(i=0;i<prefill;i+=8){
+ int s=oggpackB_read(&source_read,prefill-i<8?prefill-i:8);
+ int d=oggpackB_read(&dest_read,prefill-i<8?prefill-i:8);
+ if(s!=d){
+ fprintf(stderr,"prefill=%d mismatch! byte %d, %x!=%x\n",prefill,i/8,s,d);
+ exit(1);
+ }
+ }
+
+ oggpackB_readinit(&source_read,source,source_bytes);
+ for(i=0;i<copy;i+=8){
+ int s=oggpackB_read(&source_read,copy-i<8?copy-i:8);
+ int d=oggpackB_read(&dest_read,copy-i<8?copy-i:8);
+ if(s!=d){
+ fprintf(stderr,"prefill=%d copy=%d mismatch! byte %d, %x!=%x\n",prefill,copy,i/8,s,d);
+ exit(1);
+ }
+ }
+
+ if(copy+prefill<dest_bytes){
+ if(oggpackB_read(&dest_read,dest_bytes-copy-prefill)!=0){
+ fprintf(stderr,"prefill=%d copy=%d mismatch! trailing bits not zero\n",prefill,copy);
+ exit(1);
+ }
+ }
+
+ oggpackB_writeclear(&source_write);
+ oggpackB_writeclear(&dest_write);
+
+}
+
+int main(void){
+ unsigned char *buffer;
+ long bytes,i,j;
+ static unsigned long testbuffer1[]=
+ {18,12,103948,4325,543,76,432,52,3,65,4,56,32,42,34,21,1,23,32,546,456,7,
+ 567,56,8,8,55,3,52,342,341,4,265,7,67,86,2199,21,7,1,5,1,4};
+ int test1size=43;
+
+ static unsigned long testbuffer2[]=
+ {216531625L,1237861823,56732452,131,3212421,12325343,34547562,12313212,
+ 1233432,534,5,346435231,14436467,7869299,76326614,167548585,
+ 85525151,0,12321,1,349528352};
+ int test2size=21;
+
+ static unsigned long testbuffer3[]=
+ {1,0,14,0,1,0,12,0,1,0,0,0,1,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,1,1,1,1,0,0,1,
+ 0,1,30,1,1,1,0,0,1,0,0,0,12,0,11,0,1,0,0,1};
+ int test3size=56;
+
+ static unsigned long large[]=
+ {2136531625L,2137861823,56732452,131,3212421,12325343,34547562,12313212,
+ 1233432,534,5,2146435231,14436467,7869299,76326614,167548585,
+ 85525151,0,12321,1,2146528352};
+
+ int onesize=33;
+ static int one[33]={146,25,44,151,195,15,153,176,233,131,196,65,85,172,47,40,
+ 34,242,223,136,35,222,211,86,171,50,225,135,214,75,172,
+ 223,4};
+ static int oneB[33]={150,101,131,33,203,15,204,216,105,193,156,65,84,85,222,
+ 8,139,145,227,126,34,55,244,171,85,100,39,195,173,18,
+ 245,251,128};
+
+ int twosize=6;
+ static int two[6]={61,255,255,251,231,29};
+ static int twoB[6]={247,63,255,253,249,120};
+
+ int threesize=54;
+ static int three[54]={169,2,232,252,91,132,156,36,89,13,123,176,144,32,254,
+ 142,224,85,59,121,144,79,124,23,67,90,90,216,79,23,83,
+ 58,135,196,61,55,129,183,54,101,100,170,37,127,126,10,
+ 100,52,4,14,18,86,77,1};
+ static int threeB[54]={206,128,42,153,57,8,183,251,13,89,36,30,32,144,183,
+ 130,59,240,121,59,85,223,19,228,180,134,33,107,74,98,
+ 233,253,196,135,63,2,110,114,50,155,90,127,37,170,104,
+ 200,20,254,4,58,106,176,144,0};
+
+ int foursize=38;
+ static int four[38]={18,6,163,252,97,194,104,131,32,1,7,82,137,42,129,11,72,
+ 132,60,220,112,8,196,109,64,179,86,9,137,195,208,122,169,
+ 28,2,133,0,1};
+ static int fourB[38]={36,48,102,83,243,24,52,7,4,35,132,10,145,21,2,93,2,41,
+ 1,219,184,16,33,184,54,149,170,132,18,30,29,98,229,67,
+ 129,10,4,32};
+
+ int fivesize=45;
+ static int five[45]={169,2,126,139,144,172,30,4,80,72,240,59,130,218,73,62,
+ 241,24,210,44,4,20,0,248,116,49,135,100,110,130,181,169,
+ 84,75,159,2,1,0,132,192,8,0,0,18,22};
+ static int fiveB[45]={1,84,145,111,245,100,128,8,56,36,40,71,126,78,213,226,
+ 124,105,12,0,133,128,0,162,233,242,67,152,77,205,77,
+ 172,150,169,129,79,128,0,6,4,32,0,27,9,0};
+
+ int sixsize=7;
+ static int six[7]={17,177,170,242,169,19,148};
+ static int sixB[7]={136,141,85,79,149,200,41};
+
+ /* Test read/write together */
+ /* Later we test against pregenerated bitstreams */
+ oggpack_writeinit(&o);
+
+ fprintf(stderr,"\nSmall preclipped packing (LSb): ");
+ cliptest(testbuffer1,test1size,0,one,onesize);
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\nNull bit call (LSb): ");
+ cliptest(testbuffer3,test3size,0,two,twosize);
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\nLarge preclipped packing (LSb): ");
+ cliptest(testbuffer2,test2size,0,three,threesize);
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\n32 bit preclipped packing (LSb): ");
+ oggpack_reset(&o);
+ for(i=0;i<test2size;i++)
+ oggpack_write(&o,large[i],32);
+ buffer=oggpack_get_buffer(&o);
+ bytes=oggpack_bytes(&o);
+ oggpack_readinit(&r,buffer,bytes);
+ for(i=0;i<test2size;i++){
+ if(oggpack_look(&r,32)==-1)report("out of data. failed!");
+ if(oggpack_look(&r,32)!=large[i]){
+ fprintf(stderr,"%ld != %ld (%lx!=%lx):",oggpack_look(&r,32),large[i],
+ oggpack_look(&r,32),large[i]);
+ report("read incorrect value!\n");
+ }
+ oggpack_adv(&r,32);
+ }
+ if(oggpack_bytes(&r)!=bytes)report("leftover bytes after read!\n");
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\nSmall unclipped packing (LSb): ");
+ cliptest(testbuffer1,test1size,7,four,foursize);
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\nLarge unclipped packing (LSb): ");
+ cliptest(testbuffer2,test2size,17,five,fivesize);
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\nSingle bit unclipped packing (LSb): ");
+ cliptest(testbuffer3,test3size,1,six,sixsize);
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\nTesting read past end (LSb): ");
+ oggpack_readinit(&r,(unsigned char *)"\0\0\0\0\0\0\0\0",8);
+ for(i=0;i<64;i++){
+ if(oggpack_read(&r,1)!=0){
+ fprintf(stderr,"failed; got -1 prematurely.\n");
+ exit(1);
+ }
+ }
+ if(oggpack_look(&r,1)!=-1 ||
+ oggpack_read(&r,1)!=-1){
+ fprintf(stderr,"failed; read past end without -1.\n");
+ exit(1);
+ }
+ oggpack_readinit(&r,(unsigned char *)"\0\0\0\0\0\0\0\0",8);
+ if(oggpack_read(&r,30)!=0 || oggpack_read(&r,16)!=0){
+ fprintf(stderr,"failed 2; got -1 prematurely.\n");
+ exit(1);
+ }
+
+ if(oggpack_look(&r,18)!=0 ||
+ oggpack_look(&r,18)!=0){
+ fprintf(stderr,"failed 3; got -1 prematurely.\n");
+ exit(1);
+ }
+ if(oggpack_look(&r,19)!=-1 ||
+ oggpack_look(&r,19)!=-1){
+ fprintf(stderr,"failed; read past end without -1.\n");
+ exit(1);
+ }
+ if(oggpack_look(&r,32)!=-1 ||
+ oggpack_look(&r,32)!=-1){
+ fprintf(stderr,"failed; read past end without -1.\n");
+ exit(1);
+ }
+ oggpack_writeclear(&o);
+ fprintf(stderr,"ok.");
+
+ /* this is partly glassbox; we're mostly concerned about the allocation boundaries */
+
+ fprintf(stderr,"\nTesting aligned writecopies (LSb): ");
+ for(i=0;i<71;i++)
+ for(j=0;j<5;j++)
+ copytest(j*8,i);
+ for(i=BUFFER_INCREMENT*8-71;i<BUFFER_INCREMENT*8+71;i++)
+ for(j=0;j<5;j++)
+ copytest(j*8,i);
+ fprintf(stderr,"ok. ");
+
+ fprintf(stderr,"\nTesting unaligned writecopies (LSb): ");
+ for(i=0;i<71;i++)
+ for(j=1;j<40;j++)
+ if(j&0x7)
+ copytest(j,i);
+ for(i=BUFFER_INCREMENT*8-71;i<BUFFER_INCREMENT*8+71;i++)
+ for(j=1;j<40;j++)
+ if(j&0x7)
+ copytest(j,i);
+
+ fprintf(stderr,"ok. \n");
+
+
+ /********** lazy, cut-n-paste retest with MSb packing ***********/
+
+ /* Test read/write together */
+ /* Later we test against pregenerated bitstreams */
+ oggpackB_writeinit(&o);
+
+ fprintf(stderr,"\nSmall preclipped packing (MSb): ");
+ cliptestB(testbuffer1,test1size,0,oneB,onesize);
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\nNull bit call (MSb): ");
+ cliptestB(testbuffer3,test3size,0,twoB,twosize);
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\nLarge preclipped packing (MSb): ");
+ cliptestB(testbuffer2,test2size,0,threeB,threesize);
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\n32 bit preclipped packing (MSb): ");
+ oggpackB_reset(&o);
+ for(i=0;i<test2size;i++)
+ oggpackB_write(&o,large[i],32);
+ buffer=oggpackB_get_buffer(&o);
+ bytes=oggpackB_bytes(&o);
+ oggpackB_readinit(&r,buffer,bytes);
+ for(i=0;i<test2size;i++){
+ if(oggpackB_look(&r,32)==-1)report("out of data. failed!");
+ if(oggpackB_look(&r,32)!=large[i]){
+ fprintf(stderr,"%ld != %ld (%lx!=%lx):",oggpackB_look(&r,32),large[i],
+ oggpackB_look(&r,32),large[i]);
+ report("read incorrect value!\n");
+ }
+ oggpackB_adv(&r,32);
+ }
+ if(oggpackB_bytes(&r)!=bytes)report("leftover bytes after read!\n");
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\nSmall unclipped packing (MSb): ");
+ cliptestB(testbuffer1,test1size,7,fourB,foursize);
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\nLarge unclipped packing (MSb): ");
+ cliptestB(testbuffer2,test2size,17,fiveB,fivesize);
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\nSingle bit unclipped packing (MSb): ");
+ cliptestB(testbuffer3,test3size,1,sixB,sixsize);
+ fprintf(stderr,"ok.");
+
+ fprintf(stderr,"\nTesting read past end (MSb): ");
+ oggpackB_readinit(&r,(unsigned char *)"\0\0\0\0\0\0\0\0",8);
+ for(i=0;i<64;i++){
+ if(oggpackB_read(&r,1)!=0){
+ fprintf(stderr,"failed; got -1 prematurely.\n");
+ exit(1);
+ }
+ }
+ if(oggpackB_look(&r,1)!=-1 ||
+ oggpackB_read(&r,1)!=-1){
+ fprintf(stderr,"failed; read past end without -1.\n");
+ exit(1);
+ }
+ oggpackB_readinit(&r,(unsigned char *)"\0\0\0\0\0\0\0\0",8);
+ if(oggpackB_read(&r,30)!=0 || oggpackB_read(&r,16)!=0){
+ fprintf(stderr,"failed 2; got -1 prematurely.\n");
+ exit(1);
+ }
+
+ if(oggpackB_look(&r,18)!=0 ||
+ oggpackB_look(&r,18)!=0){
+ fprintf(stderr,"failed 3; got -1 prematurely.\n");
+ exit(1);
+ }
+ if(oggpackB_look(&r,19)!=-1 ||
+ oggpackB_look(&r,19)!=-1){
+ fprintf(stderr,"failed; read past end without -1.\n");
+ exit(1);
+ }
+ if(oggpackB_look(&r,32)!=-1 ||
+ oggpackB_look(&r,32)!=-1){
+ fprintf(stderr,"failed; read past end without -1.\n");
+ exit(1);
+ }
+ fprintf(stderr,"ok.");
+ oggpackB_writeclear(&o);
+
+ /* this is partly glassbox; we're mostly concerned about the allocation boundaries */
+
+ fprintf(stderr,"\nTesting aligned writecopies (MSb): ");
+ for(i=0;i<71;i++)
+ for(j=0;j<5;j++)
+ copytestB(j*8,i);
+ for(i=BUFFER_INCREMENT*8-71;i<BUFFER_INCREMENT*8+71;i++)
+ for(j=0;j<5;j++)
+ copytestB(j*8,i);
+ fprintf(stderr,"ok. ");
+
+ fprintf(stderr,"\nTesting unaligned writecopies (MSb): ");
+ for(i=0;i<71;i++)
+ for(j=1;j<40;j++)
+ if(j&0x7)
+ copytestB(j,i);
+ for(i=BUFFER_INCREMENT*8-71;i<BUFFER_INCREMENT*8+71;i++)
+ for(j=1;j<40;j++)
+ if(j&0x7)
+ copytestB(j,i);
+
+ fprintf(stderr,"ok. \n\n");
+
+ return(0);
+}
+#endif /* _V_SELFTEST */
+
+#undef BUFFER_INCREMENT
diff --git a/libogg/framing.c b/libogg/framing.c
new file mode 100644
index 0000000..685538f
--- /dev/null
+++ b/libogg/framing.c
@@ -0,0 +1,2140 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE Ogg CONTAINER SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2010 *
+ * by the Xiph.Org Foundation http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: code raw packets into framed OggSquish stream and
+ decode Ogg streams back into raw packets
+ last mod: $Id$
+
+ note: The CRC code is directly derived from public domain code by
+ Ross Williams (ross@guest.adelaide.edu.au). See docs/framing.html
+ for details.
+
+ ********************************************************************/
+
+#include <stdlib.h>
+#include <limits.h>
+#include <string.h>
+#include "ogg.h"
+
+/* A complete description of Ogg framing exists in docs/framing.html */
+
+int ogg_page_version(const ogg_page *og){
+ return((int)(og->header[4]));
+}
+
+int ogg_page_continued(const ogg_page *og){
+ return((int)(og->header[5]&0x01));
+}
+
+int ogg_page_bos(const ogg_page *og){
+ return((int)(og->header[5]&0x02));
+}
+
+int ogg_page_eos(const ogg_page *og){
+ return((int)(og->header[5]&0x04));
+}
+
+ogg_int64_t ogg_page_granulepos(const ogg_page *og){
+ unsigned char *page=og->header;
+ ogg_int64_t granulepos=page[13]&(0xff);
+ granulepos= (granulepos<<8)|(page[12]&0xff);
+ granulepos= (granulepos<<8)|(page[11]&0xff);
+ granulepos= (granulepos<<8)|(page[10]&0xff);
+ granulepos= (granulepos<<8)|(page[9]&0xff);
+ granulepos= (granulepos<<8)|(page[8]&0xff);
+ granulepos= (granulepos<<8)|(page[7]&0xff);
+ granulepos= (granulepos<<8)|(page[6]&0xff);
+ return(granulepos);
+}
+
+int ogg_page_serialno(const ogg_page *og){
+ return(og->header[14] |
+ (og->header[15]<<8) |
+ (og->header[16]<<16) |
+ (og->header[17]<<24));
+}
+
+long ogg_page_pageno(const ogg_page *og){
+ return(og->header[18] |
+ (og->header[19]<<8) |
+ (og->header[20]<<16) |
+ (og->header[21]<<24));
+}
+
+
+
+/* returns the number of packets that are completed on this page (if
+ the leading packet is begun on a previous page, but ends on this
+ page, it's counted */
+
+/* NOTE:
+ If a page consists of a packet begun on a previous page, and a new
+ packet begun (but not completed) on this page, the return will be:
+ ogg_page_packets(page) ==1,
+ ogg_page_continued(page) !=0
+
+ If a page happens to be a single packet that was begun on a
+ previous page, and spans to the next page (in the case of a three or
+ more page packet), the return will be:
+ ogg_page_packets(page) ==0,
+ ogg_page_continued(page) !=0
+*/
+
+int ogg_page_packets(const ogg_page *og){
+ int i,n=og->header[26],count=0;
+ for(i=0;i<n;i++)
+ if(og->header[27+i]<255)count++;
+ return(count);
+}
+
+
+#if 0
+/* helper to initialize lookup for direct-table CRC (illustrative; we
+ use the static init below) */
+
+static ogg_uint32_t _ogg_crc_entry(unsigned long index){
+ int i;
+ unsigned long r;
+
+ r = index << 24;
+ for (i=0; i<8; i++)
+ if (r & 0x80000000UL)
+ r = (r << 1) ^ 0x04c11db7; /* The same as the ethernet generator
+ polynomial, although we use an
+ unreflected alg and an init/final
+ of 0, not 0xffffffff */
+ else
+ r<<=1;
+ return (r & 0xffffffffUL);
+}
+#endif
+
+static const ogg_uint32_t crc_lookup[256]={
+ 0x00000000,0x04c11db7,0x09823b6e,0x0d4326d9,
+ 0x130476dc,0x17c56b6b,0x1a864db2,0x1e475005,
+ 0x2608edb8,0x22c9f00f,0x2f8ad6d6,0x2b4bcb61,
+ 0x350c9b64,0x31cd86d3,0x3c8ea00a,0x384fbdbd,
+ 0x4c11db70,0x48d0c6c7,0x4593e01e,0x4152fda9,
+ 0x5f15adac,0x5bd4b01b,0x569796c2,0x52568b75,
+ 0x6a1936c8,0x6ed82b7f,0x639b0da6,0x675a1011,
+ 0x791d4014,0x7ddc5da3,0x709f7b7a,0x745e66cd,
+ 0x9823b6e0,0x9ce2ab57,0x91a18d8e,0x95609039,
+ 0x8b27c03c,0x8fe6dd8b,0x82a5fb52,0x8664e6e5,
+ 0xbe2b5b58,0xbaea46ef,0xb7a96036,0xb3687d81,
+ 0xad2f2d84,0xa9ee3033,0xa4ad16ea,0xa06c0b5d,
+ 0xd4326d90,0xd0f37027,0xddb056fe,0xd9714b49,
+ 0xc7361b4c,0xc3f706fb,0xceb42022,0xca753d95,
+ 0xf23a8028,0xf6fb9d9f,0xfbb8bb46,0xff79a6f1,
+ 0xe13ef6f4,0xe5ffeb43,0xe8bccd9a,0xec7dd02d,
+ 0x34867077,0x30476dc0,0x3d044b19,0x39c556ae,
+ 0x278206ab,0x23431b1c,0x2e003dc5,0x2ac12072,
+ 0x128e9dcf,0x164f8078,0x1b0ca6a1,0x1fcdbb16,
+ 0x018aeb13,0x054bf6a4,0x0808d07d,0x0cc9cdca,
+ 0x7897ab07,0x7c56b6b0,0x71159069,0x75d48dde,
+ 0x6b93dddb,0x6f52c06c,0x6211e6b5,0x66d0fb02,
+ 0x5e9f46bf,0x5a5e5b08,0x571d7dd1,0x53dc6066,
+ 0x4d9b3063,0x495a2dd4,0x44190b0d,0x40d816ba,
+ 0xaca5c697,0xa864db20,0xa527fdf9,0xa1e6e04e,
+ 0xbfa1b04b,0xbb60adfc,0xb6238b25,0xb2e29692,
+ 0x8aad2b2f,0x8e6c3698,0x832f1041,0x87ee0df6,
+ 0x99a95df3,0x9d684044,0x902b669d,0x94ea7b2a,
+ 0xe0b41de7,0xe4750050,0xe9362689,0xedf73b3e,
+ 0xf3b06b3b,0xf771768c,0xfa325055,0xfef34de2,
+ 0xc6bcf05f,0xc27dede8,0xcf3ecb31,0xcbffd686,
+ 0xd5b88683,0xd1799b34,0xdc3abded,0xd8fba05a,
+ 0x690ce0ee,0x6dcdfd59,0x608edb80,0x644fc637,
+ 0x7a089632,0x7ec98b85,0x738aad5c,0x774bb0eb,
+ 0x4f040d56,0x4bc510e1,0x46863638,0x42472b8f,
+ 0x5c007b8a,0x58c1663d,0x558240e4,0x51435d53,
+ 0x251d3b9e,0x21dc2629,0x2c9f00f0,0x285e1d47,
+ 0x36194d42,0x32d850f5,0x3f9b762c,0x3b5a6b9b,
+ 0x0315d626,0x07d4cb91,0x0a97ed48,0x0e56f0ff,
+ 0x1011a0fa,0x14d0bd4d,0x19939b94,0x1d528623,
+ 0xf12f560e,0xf5ee4bb9,0xf8ad6d60,0xfc6c70d7,
+ 0xe22b20d2,0xe6ea3d65,0xeba91bbc,0xef68060b,
+ 0xd727bbb6,0xd3e6a601,0xdea580d8,0xda649d6f,
+ 0xc423cd6a,0xc0e2d0dd,0xcda1f604,0xc960ebb3,
+ 0xbd3e8d7e,0xb9ff90c9,0xb4bcb610,0xb07daba7,
+ 0xae3afba2,0xaafbe615,0xa7b8c0cc,0xa379dd7b,
+ 0x9b3660c6,0x9ff77d71,0x92b45ba8,0x9675461f,
+ 0x8832161a,0x8cf30bad,0x81b02d74,0x857130c3,
+ 0x5d8a9099,0x594b8d2e,0x5408abf7,0x50c9b640,
+ 0x4e8ee645,0x4a4ffbf2,0x470cdd2b,0x43cdc09c,
+ 0x7b827d21,0x7f436096,0x7200464f,0x76c15bf8,
+ 0x68860bfd,0x6c47164a,0x61043093,0x65c52d24,
+ 0x119b4be9,0x155a565e,0x18197087,0x1cd86d30,
+ 0x029f3d35,0x065e2082,0x0b1d065b,0x0fdc1bec,
+ 0x3793a651,0x3352bbe6,0x3e119d3f,0x3ad08088,
+ 0x2497d08d,0x2056cd3a,0x2d15ebe3,0x29d4f654,
+ 0xc5a92679,0xc1683bce,0xcc2b1d17,0xc8ea00a0,
+ 0xd6ad50a5,0xd26c4d12,0xdf2f6bcb,0xdbee767c,
+ 0xe3a1cbc1,0xe760d676,0xea23f0af,0xeee2ed18,
+ 0xf0a5bd1d,0xf464a0aa,0xf9278673,0xfde69bc4,
+ 0x89b8fd09,0x8d79e0be,0x803ac667,0x84fbdbd0,
+ 0x9abc8bd5,0x9e7d9662,0x933eb0bb,0x97ffad0c,
+ 0xafb010b1,0xab710d06,0xa6322bdf,0xa2f33668,
+ 0xbcb4666d,0xb8757bda,0xb5365d03,0xb1f740b4};
+
+/* init the encode/decode logical stream state */
+
+int ogg_stream_init(ogg_stream_state *os,int serialno){
+ if(os){
+ memset(os,0,sizeof(*os));
+ os->body_storage=16*1024;
+ os->lacing_storage=1024;
+
+ os->body_data=_ogg_malloc(os->body_storage*sizeof(*os->body_data));
+ os->lacing_vals=_ogg_malloc(os->lacing_storage*sizeof(*os->lacing_vals));
+ os->granule_vals=_ogg_malloc(os->lacing_storage*sizeof(*os->granule_vals));
+
+ if(!os->body_data || !os->lacing_vals || !os->granule_vals){
+ ogg_stream_clear(os);
+ return -1;
+ }
+
+ os->serialno=serialno;
+
+ return(0);
+ }
+ return(-1);
+}
+
+/* async/delayed error detection for the ogg_stream_state */
+int ogg_stream_check(ogg_stream_state *os){
+ if(!os || !os->body_data) return -1;
+ return 0;
+}
+
+/* _clear does not free os, only the non-flat storage within */
+int ogg_stream_clear(ogg_stream_state *os){
+ if(os){
+ if(os->body_data)_ogg_free(os->body_data);
+ if(os->lacing_vals)_ogg_free(os->lacing_vals);
+ if(os->granule_vals)_ogg_free(os->granule_vals);
+
+ memset(os,0,sizeof(*os));
+ }
+ return(0);
+}
+
+int ogg_stream_destroy(ogg_stream_state *os){
+ if(os){
+ ogg_stream_clear(os);
+ _ogg_free(os);
+ }
+ return(0);
+}
+
+/* Helpers for ogg_stream_encode; this keeps the structure and
+ what's happening fairly clear */
+
+static int _os_body_expand(ogg_stream_state *os,long needed){
+ if(os->body_storage-needed<=os->body_fill){
+ long body_storage;
+ void *ret;
+ if(os->body_storage>LONG_MAX-needed){
+ ogg_stream_clear(os);
+ return -1;
+ }
+ body_storage=os->body_storage+needed;
+ if(body_storage<LONG_MAX-1024)body_storage+=1024;
+ ret=_ogg_realloc(os->body_data,body_storage*sizeof(*os->body_data));
+ if(!ret){
+ ogg_stream_clear(os);
+ return -1;
+ }
+ os->body_storage=body_storage;
+ os->body_data=ret;
+ }
+ return 0;
+}
+
+static int _os_lacing_expand(ogg_stream_state *os,long needed){
+ if(os->lacing_storage-needed<=os->lacing_fill){
+ long lacing_storage;
+ void *ret;
+ if(os->lacing_storage>LONG_MAX-needed){
+ ogg_stream_clear(os);
+ return -1;
+ }
+ lacing_storage=os->lacing_storage+needed;
+ if(lacing_storage<LONG_MAX-32)lacing_storage+=32;
+ ret=_ogg_realloc(os->lacing_vals,lacing_storage*sizeof(*os->lacing_vals));
+ if(!ret){
+ ogg_stream_clear(os);
+ return -1;
+ }
+ os->lacing_vals=ret;
+ ret=_ogg_realloc(os->granule_vals,lacing_storage*
+ sizeof(*os->granule_vals));
+ if(!ret){
+ ogg_stream_clear(os);
+ return -1;
+ }
+ os->granule_vals=ret;
+ os->lacing_storage=lacing_storage;
+ }
+ return 0;
+}
+
+/* checksum the page */
+/* Direct table CRC; note that this will be faster in the future if we
+ perform the checksum simultaneously with other copies */
+
+void ogg_page_checksum_set(ogg_page *og){
+ if(og){
+ ogg_uint32_t crc_reg=0;
+ int i;
+
+ /* safety; needed for API behavior, but not framing code */
+ og->header[22]=0;
+ og->header[23]=0;
+ og->header[24]=0;
+ og->header[25]=0;
+
+ for(i=0;i<og->header_len;i++)
+ crc_reg=(crc_reg<<8)^crc_lookup[((crc_reg >> 24)&0xff)^og->header[i]];
+ for(i=0;i<og->body_len;i++)
+ crc_reg=(crc_reg<<8)^crc_lookup[((crc_reg >> 24)&0xff)^og->body[i]];
+
+ og->header[22]=(unsigned char)(crc_reg&0xff);
+ og->header[23]=(unsigned char)((crc_reg>>8)&0xff);
+ og->header[24]=(unsigned char)((crc_reg>>16)&0xff);
+ og->header[25]=(unsigned char)((crc_reg>>24)&0xff);
+ }
+}
+
+/* submit data to the internal buffer of the framing engine */
+int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov, int count,
+ long e_o_s, ogg_int64_t granulepos){
+
+ long bytes = 0, lacing_vals;
+ int i;
+
+ if(ogg_stream_check(os)) return -1;
+ if(!iov) return 0;
+
+ for (i = 0; i < count; ++i){
+ if(iov[i].iov_len>LONG_MAX) return -1;
+ if(bytes>LONG_MAX-(long)iov[i].iov_len) return -1;
+ bytes += (long)iov[i].iov_len;
+ }
+ lacing_vals=bytes/255+1;
+
+ if(os->body_returned){
+ /* advance packet data according to the body_returned pointer. We
+ had to keep it around to return a pointer into the buffer last
+ call */
+
+ os->body_fill-=os->body_returned;
+ if(os->body_fill)
+ memmove(os->body_data,os->body_data+os->body_returned,
+ os->body_fill);
+ os->body_returned=0;
+ }
+
+ /* make sure we have the buffer storage */
+ if(_os_body_expand(os,bytes) || _os_lacing_expand(os,lacing_vals))
+ return -1;
+
+ /* Copy in the submitted packet. Yes, the copy is a waste; this is
+ the liability of overly clean abstraction for the time being. It
+ will actually be fairly easy to eliminate the extra copy in the
+ future */
+
+ for (i = 0; i < count; ++i) {
+ memcpy(os->body_data+os->body_fill, iov[i].iov_base, iov[i].iov_len);
+ os->body_fill += (int)iov[i].iov_len;
+ }
+
+ /* Store lacing vals for this packet */
+ for(i=0;i<lacing_vals-1;i++){
+ os->lacing_vals[os->lacing_fill+i]=255;
+ os->granule_vals[os->lacing_fill+i]=os->granulepos;
+ }
+ os->lacing_vals[os->lacing_fill+i]=bytes%255;
+ os->granulepos=os->granule_vals[os->lacing_fill+i]=granulepos;
+
+ /* flag the first segment as the beginning of the packet */
+ os->lacing_vals[os->lacing_fill]|= 0x100;
+
+ os->lacing_fill+=lacing_vals;
+
+ /* for the sake of completeness */
+ os->packetno++;
+
+ if(e_o_s)os->e_o_s=1;
+
+ return(0);
+}
+
+int ogg_stream_packetin(ogg_stream_state *os,ogg_packet *op){
+ ogg_iovec_t iov;
+ iov.iov_base = op->packet;
+ iov.iov_len = op->bytes;
+ return ogg_stream_iovecin(os, &iov, 1, op->e_o_s, op->granulepos);
+}
+
+/* Conditionally flush a page; force==0 will only flush nominal-size
+ pages, force==1 forces us to flush a page regardless of page size
+ so long as there's any data available at all. */
+static int ogg_stream_flush_i(ogg_stream_state *os,ogg_page *og, int force, int nfill){
+ int i;
+ int vals=0;
+ int maxvals=(os->lacing_fill>255?255:os->lacing_fill);
+ int bytes=0;
+ long acc=0;
+ ogg_int64_t granule_pos=-1;
+
+ if(ogg_stream_check(os)) return(0);
+ if(maxvals==0) return(0);
+
+ /* construct a page */
+ /* decide how many segments to include */
+
+ /* If this is the initial header case, the first page must only include
+ the initial header packet */
+ if(os->b_o_s==0){ /* 'initial header page' case */
+ granule_pos=0;
+ for(vals=0;vals<maxvals;vals++){
+ if((os->lacing_vals[vals]&0x0ff)<255){
+ vals++;
+ break;
+ }
+ }
+ }else{
+
+ /* The extra packets_done, packet_just_done logic here attempts to do two things:
+ 1) Don't unneccessarily span pages.
+ 2) Unless necessary, don't flush pages if there are less than four packets on
+ them; this expands page size to reduce unneccessary overhead if incoming packets
+ are large.
+ These are not necessary behaviors, just 'always better than naive flushing'
+ without requiring an application to explicitly request a specific optimized
+ behavior. We'll want an explicit behavior setup pathway eventually as well. */
+
+ int packets_done=0;
+ int packet_just_done=0;
+ for(vals=0;vals<maxvals;vals++){
+ if(acc>nfill && packet_just_done>=4){
+ force=1;
+ break;
+ }
+ acc+=os->lacing_vals[vals]&0x0ff;
+ if((os->lacing_vals[vals]&0xff)<255){
+ granule_pos=os->granule_vals[vals];
+ packet_just_done=++packets_done;
+ }else
+ packet_just_done=0;
+ }
+ if(vals==255)force=1;
+ }
+
+ if(!force) return(0);
+
+ /* construct the header in temp storage */
+ memcpy(os->header,"OggS",4);
+
+ /* stream structure version */
+ os->header[4]=0x00;
+
+ /* continued packet flag? */
+ os->header[5]=0x00;
+ if((os->lacing_vals[0]&0x100)==0)os->header[5]|=0x01;
+ /* first page flag? */
+ if(os->b_o_s==0)os->header[5]|=0x02;
+ /* last page flag? */
+ if(os->e_o_s && os->lacing_fill==vals)os->header[5]|=0x04;
+ os->b_o_s=1;
+
+ /* 64 bits of PCM position */
+ for(i=6;i<14;i++){
+ os->header[i]=(unsigned char)(granule_pos&0xff);
+ granule_pos>>=8;
+ }
+
+ /* 32 bits of stream serial number */
+ {
+ long serialno=os->serialno;
+ for(i=14;i<18;i++){
+ os->header[i]=(unsigned char)(serialno&0xff);
+ serialno>>=8;
+ }
+ }
+
+ /* 32 bits of page counter (we have both counter and page header
+ because this val can roll over) */
+ if(os->pageno==-1)os->pageno=0; /* because someone called
+ stream_reset; this would be a
+ strange thing to do in an
+ encode stream, but it has
+ plausible uses */
+ {
+ long pageno=os->pageno++;
+ for(i=18;i<22;i++){
+ os->header[i]=(unsigned char)(pageno&0xff);
+ pageno>>=8;
+ }
+ }
+
+ /* zero for computation; filled in later */
+ os->header[22]=0;
+ os->header[23]=0;
+ os->header[24]=0;
+ os->header[25]=0;
+
+ /* segment table */
+ os->header[26]=(unsigned char)(vals&0xff);
+ for(i=0;i<vals;i++)
+ bytes+=os->header[i+27]=(unsigned char)(os->lacing_vals[i]&0xff);
+
+ /* set pointers in the ogg_page struct */
+ og->header=os->header;
+ og->header_len=os->header_fill=vals+27;
+ og->body=os->body_data+os->body_returned;
+ og->body_len=bytes;
+
+ /* advance the lacing data and set the body_returned pointer */
+
+ os->lacing_fill-=vals;
+ memmove(os->lacing_vals,os->lacing_vals+vals,os->lacing_fill*sizeof(*os->lacing_vals));
+ memmove(os->granule_vals,os->granule_vals+vals,os->lacing_fill*sizeof(*os->granule_vals));
+ os->body_returned+=bytes;
+
+ /* calculate the checksum */
+
+ ogg_page_checksum_set(og);
+
+ /* done */
+ return(1);
+}
+
+/* This will flush remaining packets into a page (returning nonzero),
+ even if there is not enough data to trigger a flush normally
+ (undersized page). If there are no packets or partial packets to
+ flush, ogg_stream_flush returns 0. Note that ogg_stream_flush will
+ try to flush a normal sized page like ogg_stream_pageout; a call to
+ ogg_stream_flush does not guarantee that all packets have flushed.
+ Only a return value of 0 from ogg_stream_flush indicates all packet
+ data is flushed into pages.
+
+ since ogg_stream_flush will flush the last page in a stream even if
+ it's undersized, you almost certainly want to use ogg_stream_pageout
+ (and *not* ogg_stream_flush) unless you specifically need to flush
+ a page regardless of size in the middle of a stream. */
+
+int ogg_stream_flush(ogg_stream_state *os,ogg_page *og){
+ return ogg_stream_flush_i(os,og,1,4096);
+}
+
+/* Like the above, but an argument is provided to adjust the nominal
+ page size for applications which are smart enough to provide their
+ own delay based flushing */
+
+int ogg_stream_flush_fill(ogg_stream_state *os,ogg_page *og, int nfill){
+ return ogg_stream_flush_i(os,og,1,nfill);
+}
+
+/* This constructs pages from buffered packet segments. The pointers
+returned are to static buffers; do not free. The returned buffers are
+good only until the next call (using the same ogg_stream_state) */
+
+int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og){
+ int force=0;
+ if(ogg_stream_check(os)) return 0;
+
+ if((os->e_o_s&&os->lacing_fill) || /* 'were done, now flush' case */
+ (os->lacing_fill&&!os->b_o_s)) /* 'initial header page' case */
+ force=1;
+
+ return(ogg_stream_flush_i(os,og,force,4096));
+}
+
+/* Like the above, but an argument is provided to adjust the nominal
+page size for applications which are smart enough to provide their
+own delay based flushing */
+
+int ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill){
+ int force=0;
+ if(ogg_stream_check(os)) return 0;
+
+ if((os->e_o_s&&os->lacing_fill) || /* 'were done, now flush' case */
+ (os->lacing_fill&&!os->b_o_s)) /* 'initial header page' case */
+ force=1;
+
+ return(ogg_stream_flush_i(os,og,force,nfill));
+}
+
+int ogg_stream_eos(ogg_stream_state *os){
+ if(ogg_stream_check(os)) return 1;
+ return os->e_o_s;
+}
+
+/* DECODING PRIMITIVES: packet streaming layer **********************/
+
+/* This has two layers to place more of the multi-serialno and paging
+ control in the application's hands. First, we expose a data buffer
+ using ogg_sync_buffer(). The app either copies into the
+ buffer, or passes it directly to read(), etc. We then call
+ ogg_sync_wrote() to tell how many bytes we just added.
+
+ Pages are returned (pointers into the buffer in ogg_sync_state)
+ by ogg_sync_pageout(). The page is then submitted to
+ ogg_stream_pagein() along with the appropriate
+ ogg_stream_state* (ie, matching serialno). We then get raw
+ packets out calling ogg_stream_packetout() with a
+ ogg_stream_state. */
+
+/* initialize the struct to a known state */
+int ogg_sync_init(ogg_sync_state *oy){
+ if(oy){
+ oy->storage = -1; /* used as a readiness flag */
+ memset(oy,0,sizeof(*oy));
+ }
+ return(0);
+}
+
+/* clear non-flat storage within */
+int ogg_sync_clear(ogg_sync_state *oy){
+ if(oy){
+ if(oy->data)_ogg_free(oy->data);
+ memset(oy,0,sizeof(*oy));
+ }
+ return(0);
+}
+
+int ogg_sync_destroy(ogg_sync_state *oy){
+ if(oy){
+ ogg_sync_clear(oy);
+ _ogg_free(oy);
+ }
+ return(0);
+}
+
+int ogg_sync_check(ogg_sync_state *oy){
+ if(oy->storage<0) return -1;
+ return 0;
+}
+
+char *ogg_sync_buffer(ogg_sync_state *oy, long size){
+ if(ogg_sync_check(oy)) return NULL;
+
+ /* first, clear out any space that has been previously returned */
+ if(oy->returned){
+ oy->fill-=oy->returned;
+ if(oy->fill>0)
+ memmove(oy->data,oy->data+oy->returned,oy->fill);
+ oy->returned=0;
+ }
+
+ if(size>oy->storage-oy->fill){
+ /* We need to extend the internal buffer */
+ long newsize=size+oy->fill+4096; /* an extra page to be nice */
+ void *ret;
+
+ if(oy->data)
+ ret=_ogg_realloc(oy->data,newsize);
+ else
+ ret=_ogg_malloc(newsize);
+ if(!ret){
+ ogg_sync_clear(oy);
+ return NULL;
+ }
+ oy->data=ret;
+ oy->storage=newsize;
+ }
+
+ /* expose a segment at least as large as requested at the fill mark */
+ return((char *)oy->data+oy->fill);
+}
+
+int ogg_sync_wrote(ogg_sync_state *oy, long bytes){
+ if(ogg_sync_check(oy))return -1;
+ if(oy->fill+bytes>oy->storage)return -1;
+ oy->fill+=bytes;
+ return(0);
+}
+
+/* sync the stream. This is meant to be useful for finding page
+ boundaries.
+
+ return values for this:
+ -n) skipped n bytes
+ 0) page not ready; more data (no bytes skipped)
+ n) page synced at current location; page length n bytes
+
+*/
+
+long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og){
+ unsigned char *page=oy->data+oy->returned;
+ unsigned char *next;
+ long bytes=oy->fill-oy->returned;
+
+ if(ogg_sync_check(oy))return 0;
+
+ if(oy->headerbytes==0){
+ int headerbytes,i;
+ if(bytes<27)return(0); /* not enough for a header */
+
+ /* verify capture pattern */
+ if(memcmp(page,"OggS",4))goto sync_fail;
+
+ headerbytes=page[26]+27;
+ if(bytes<headerbytes)return(0); /* not enough for header + seg table */
+
+ /* count up body length in the segment table */
+
+ for(i=0;i<page[26];i++)
+ oy->bodybytes+=page[27+i];
+ oy->headerbytes=headerbytes;
+ }
+
+ if(oy->bodybytes+oy->headerbytes>bytes)return(0);
+
+ /* The whole test page is buffered. Verify the checksum */
+ {
+ /* Grab the checksum bytes, set the header field to zero */
+ char chksum[4];
+ ogg_page log;
+
+ memcpy(chksum,page+22,4);
+ memset(page+22,0,4);
+
+ /* set up a temp page struct and recompute the checksum */
+ log.header=page;
+ log.header_len=oy->headerbytes;
+ log.body=page+oy->headerbytes;
+ log.body_len=oy->bodybytes;
+ ogg_page_checksum_set(&log);
+
+ /* Compare */
+ if(memcmp(chksum,page+22,4)){
+ /* D'oh. Mismatch! Corrupt page (or miscapture and not a page
+ at all) */
+ /* replace the computed checksum with the one actually read in */
+ memcpy(page+22,chksum,4);
+
+ /* Bad checksum. Lose sync */
+ goto sync_fail;
+ }
+ }
+
+ /* yes, have a whole page all ready to go */
+ {
+ unsigned char *page=oy->data+oy->returned;
+ long bytes;
+
+ if(og){
+ og->header=page;
+ og->header_len=oy->headerbytes;
+ og->body=page+oy->headerbytes;
+ og->body_len=oy->bodybytes;
+ }
+
+ oy->unsynced=0;
+ oy->returned+=(bytes=oy->headerbytes+oy->bodybytes);
+ oy->headerbytes=0;
+ oy->bodybytes=0;
+ return(bytes);
+ }
+
+ sync_fail:
+
+ oy->headerbytes=0;
+ oy->bodybytes=0;
+
+ /* search for possible capture */
+ next=memchr(page+1,'O',bytes-1);
+ if(!next)
+ next=oy->data+oy->fill;
+
+ oy->returned=(int)(next-oy->data);
+ return((long)-(next-page));
+}
+
+/* sync the stream and get a page. Keep trying until we find a page.
+ Suppress 'sync errors' after reporting the first.
+
+ return values:
+ -1) recapture (hole in data)
+ 0) need more data
+ 1) page returned
+
+ Returns pointers into buffered data; invalidated by next call to
+ _stream, _clear, _init, or _buffer */
+
+int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og){
+
+ if(ogg_sync_check(oy))return 0;
+
+ /* all we need to do is verify a page at the head of the stream
+ buffer. If it doesn't verify, we look for the next potential
+ frame */
+
+ for(;;){
+ long ret=ogg_sync_pageseek(oy,og);
+ if(ret>0){
+ /* have a page */
+ return(1);
+ }
+ if(ret==0){
+ /* need more data */
+ return(0);
+ }
+
+ /* head did not start a synced page... skipped some bytes */
+ if(!oy->unsynced){
+ oy->unsynced=1;
+ return(-1);
+ }
+
+ /* loop. keep looking */
+
+ }
+}
+
+/* add the incoming page to the stream state; we decompose the page
+ into packet segments here as well. */
+
+int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og){
+ unsigned char *header=og->header;
+ unsigned char *body=og->body;
+ long bodysize=og->body_len;
+ int segptr=0;
+
+ int version=ogg_page_version(og);
+ int continued=ogg_page_continued(og);
+ int bos=ogg_page_bos(og);
+ int eos=ogg_page_eos(og);
+ ogg_int64_t granulepos=ogg_page_granulepos(og);
+ int serialno=ogg_page_serialno(og);
+ long pageno=ogg_page_pageno(og);
+ int segments=header[26];
+
+ if(ogg_stream_check(os)) return -1;
+
+ /* clean up 'returned data' */
+ {
+ long lr=os->lacing_returned;
+ long br=os->body_returned;
+
+ /* body data */
+ if(br){
+ os->body_fill-=br;
+ if(os->body_fill)
+ memmove(os->body_data,os->body_data+br,os->body_fill);
+ os->body_returned=0;
+ }
+
+ if(lr){
+ /* segment table */
+ if(os->lacing_fill-lr){
+ memmove(os->lacing_vals,os->lacing_vals+lr,
+ (os->lacing_fill-lr)*sizeof(*os->lacing_vals));
+ memmove(os->granule_vals,os->granule_vals+lr,
+ (os->lacing_fill-lr)*sizeof(*os->granule_vals));
+ }
+ os->lacing_fill-=lr;
+ os->lacing_packet-=lr;
+ os->lacing_returned=0;
+ }
+ }
+
+ /* check the serial number */
+ if(serialno!=os->serialno)return(-1);
+ if(version>0)return(-1);
+
+ if(_os_lacing_expand(os,segments+1)) return -1;
+
+ /* are we in sequence? */
+ if(pageno!=os->pageno){
+ int i;
+
+ /* unroll previous partial packet (if any) */
+ for(i=os->lacing_packet;i<os->lacing_fill;i++)
+ os->body_fill-=os->lacing_vals[i]&0xff;
+ os->lacing_fill=os->lacing_packet;
+
+ /* make a note of dropped data in segment table */
+ if(os->pageno!=-1){
+ os->lacing_vals[os->lacing_fill++]=0x400;
+ os->lacing_packet++;
+ }
+ }
+
+ /* are we a 'continued packet' page? If so, we may need to skip
+ some segments */
+ if(continued){
+ if(os->lacing_fill<1 ||
+ (os->lacing_vals[os->lacing_fill-1]&0xff)<255 ||
+ os->lacing_vals[os->lacing_fill-1]==0x400){
+ bos=0;
+ for(;segptr<segments;segptr++){
+ int val=header[27+segptr];
+ body+=val;
+ bodysize-=val;
+ if(val<255){
+ segptr++;
+ break;
+ }
+ }
+ }
+ }
+
+ if(bodysize){
+ if(_os_body_expand(os,bodysize)) return -1;
+ memcpy(os->body_data+os->body_fill,body,bodysize);
+ os->body_fill+=bodysize;
+ }
+
+ {
+ int saved=-1;
+ while(segptr<segments){
+ int val=header[27+segptr];
+ os->lacing_vals[os->lacing_fill]=val;
+ os->granule_vals[os->lacing_fill]=-1;
+
+ if(bos){
+ os->lacing_vals[os->lacing_fill]|=0x100;
+ bos=0;
+ }
+
+ if(val<255)saved=os->lacing_fill;
+
+ os->lacing_fill++;
+ segptr++;
+
+ if(val<255)os->lacing_packet=os->lacing_fill;
+ }
+
+ /* set the granulepos on the last granuleval of the last full packet */
+ if(saved!=-1){
+ os->granule_vals[saved]=granulepos;
+ }
+
+ }
+
+ if(eos){
+ os->e_o_s=1;
+ if(os->lacing_fill>0)
+ os->lacing_vals[os->lacing_fill-1]|=0x200;
+ }
+
+ os->pageno=pageno+1;
+
+ return(0);
+}
+
+/* clear things to an initial state. Good to call, eg, before seeking */
+int ogg_sync_reset(ogg_sync_state *oy){
+ if(ogg_sync_check(oy))return -1;
+
+ oy->fill=0;
+ oy->returned=0;
+ oy->unsynced=0;
+ oy->headerbytes=0;
+ oy->bodybytes=0;
+ return(0);
+}
+
+int ogg_stream_reset(ogg_stream_state *os){
+ if(ogg_stream_check(os)) return -1;
+
+ os->body_fill=0;
+ os->body_returned=0;
+
+ os->lacing_fill=0;
+ os->lacing_packet=0;
+ os->lacing_returned=0;
+
+ os->header_fill=0;
+
+ os->e_o_s=0;
+ os->b_o_s=0;
+ os->pageno=-1;
+ os->packetno=0;
+ os->granulepos=0;
+
+ return(0);
+}
+
+int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno){
+ if(ogg_stream_check(os)) return -1;
+ ogg_stream_reset(os);
+ os->serialno=serialno;
+ return(0);
+}
+
+static int _packetout(ogg_stream_state *os,ogg_packet *op,int adv){
+
+ /* The last part of decode. We have the stream broken into packet
+ segments. Now we need to group them into packets (or return the
+ out of sync markers) */
+
+ int ptr=os->lacing_returned;
+
+ if(os->lacing_packet<=ptr)return(0);
+
+ if(os->lacing_vals[ptr]&0x400){
+ /* we need to tell the codec there's a gap; it might need to
+ handle previous packet dependencies. */
+ os->lacing_returned++;
+ os->packetno++;
+ return(-1);
+ }
+
+ if(!op && !adv)return(1); /* just using peek as an inexpensive way
+ to ask if there's a whole packet
+ waiting */
+
+ /* Gather the whole packet. We'll have no holes or a partial packet */
+ {
+ int size=os->lacing_vals[ptr]&0xff;
+ long bytes=size;
+ int eos=os->lacing_vals[ptr]&0x200; /* last packet of the stream? */
+ int bos=os->lacing_vals[ptr]&0x100; /* first packet of the stream? */
+
+ while(size==255){
+ int val=os->lacing_vals[++ptr];
+ size=val&0xff;
+ if(val&0x200)eos=0x200;
+ bytes+=size;
+ }
+
+ if(op){
+ op->e_o_s=eos;
+ op->b_o_s=bos;
+ op->packet=os->body_data+os->body_returned;
+ op->packetno=os->packetno;
+ op->granulepos=os->granule_vals[ptr];
+ op->bytes=bytes;
+ }
+
+ if(adv){
+ os->body_returned+=bytes;
+ os->lacing_returned=ptr+1;
+ os->packetno++;
+ }
+ }
+ return(1);
+}
+
+int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op){
+ if(ogg_stream_check(os)) return 0;
+ return _packetout(os,op,1);
+}
+
+int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op){
+ if(ogg_stream_check(os)) return 0;
+ return _packetout(os,op,0);
+}
+
+void ogg_packet_clear(ogg_packet *op) {
+ _ogg_free(op->packet);
+ memset(op, 0, sizeof(*op));
+}
+
+#ifdef _V_SELFTEST
+#include <stdio.h>
+
+ogg_stream_state os_en, os_de;
+ogg_sync_state oy;
+
+void checkpacket(ogg_packet *op,long len, int no, long pos){
+ long j;
+ static int sequence=0;
+ static int lastno=0;
+
+ if(op->bytes!=len){
+ fprintf(stderr,"incorrect packet length (%ld != %ld)!\n",op->bytes,len);
+ exit(1);
+ }
+ if(op->granulepos!=pos){
+ fprintf(stderr,"incorrect packet granpos (%ld != %ld)!\n",(long)op->granulepos,pos);
+ exit(1);
+ }
+
+ /* packet number just follows sequence/gap; adjust the input number
+ for that */
+ if(no==0){
+ sequence=0;
+ }else{
+ sequence++;
+ if(no>lastno+1)
+ sequence++;
+ }
+ lastno=no;
+ if(op->packetno!=sequence){
+ fprintf(stderr,"incorrect packet sequence %ld != %d\n",
+ (long)(op->packetno),sequence);
+ exit(1);
+ }
+
+ /* Test data */
+ for(j=0;j<op->bytes;j++)
+ if(op->packet[j]!=((j+no)&0xff)){
+ fprintf(stderr,"body data mismatch (1) at pos %ld: %x!=%lx!\n\n",
+ j,op->packet[j],(j+no)&0xff);
+ exit(1);
+ }
+}
+
+void check_page(unsigned char *data,const int *header,ogg_page *og){
+ long j;
+ /* Test data */
+ for(j=0;j<og->body_len;j++)
+ if(og->body[j]!=data[j]){
+ fprintf(stderr,"body data mismatch (2) at pos %ld: %x!=%x!\n\n",
+ j,data[j],og->body[j]);
+ exit(1);
+ }
+
+ /* Test header */
+ for(j=0;j<og->header_len;j++){
+ if(og->header[j]!=header[j]){
+ fprintf(stderr,"header content mismatch at pos %ld:\n",j);
+ for(j=0;j<header[26]+27;j++)
+ fprintf(stderr," (%ld)%02x:%02x",j,header[j],og->header[j]);
+ fprintf(stderr,"\n");
+ exit(1);
+ }
+ }
+ if(og->header_len!=header[26]+27){
+ fprintf(stderr,"header length incorrect! (%ld!=%d)\n",
+ og->header_len,header[26]+27);
+ exit(1);
+ }
+}
+
+void print_header(ogg_page *og){
+ int j;
+ fprintf(stderr,"\nHEADER:\n");
+ fprintf(stderr," capture: %c %c %c %c version: %d flags: %x\n",
+ og->header[0],og->header[1],og->header[2],og->header[3],
+ (int)og->header[4],(int)og->header[5]);
+
+ fprintf(stderr," granulepos: %d serialno: %d pageno: %ld\n",
+ (og->header[9]<<24)|(og->header[8]<<16)|
+ (og->header[7]<<8)|og->header[6],
+ (og->header[17]<<24)|(og->header[16]<<16)|
+ (og->header[15]<<8)|og->header[14],
+ ((long)(og->header[21])<<24)|(og->header[20]<<16)|
+ (og->header[19]<<8)|og->header[18]);
+
+ fprintf(stderr," checksum: %02x:%02x:%02x:%02x\n segments: %d (",
+ (int)og->header[22],(int)og->header[23],
+ (int)og->header[24],(int)og->header[25],
+ (int)og->header[26]);
+
+ for(j=27;j<og->header_len;j++)
+ fprintf(stderr,"%d ",(int)og->header[j]);
+ fprintf(stderr,")\n\n");
+}
+
+void copy_page(ogg_page *og){
+ unsigned char *temp=_ogg_malloc(og->header_len);
+ memcpy(temp,og->header,og->header_len);
+ og->header=temp;
+
+ temp=_ogg_malloc(og->body_len);
+ memcpy(temp,og->body,og->body_len);
+ og->body=temp;
+}
+
+void free_page(ogg_page *og){
+ _ogg_free (og->header);
+ _ogg_free (og->body);
+}
+
+void error(void){
+ fprintf(stderr,"error!\n");
+ exit(1);
+}
+
+/* 17 only */
+const int head1_0[] = {0x4f,0x67,0x67,0x53,0,0x06,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,0,0,0,0,
+ 0x15,0xed,0xec,0x91,
+ 1,
+ 17};
+
+/* 17, 254, 255, 256, 500, 510, 600 byte, pad */
+const int head1_1[] = {0x4f,0x67,0x67,0x53,0,0x02,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,0,0,0,0,
+ 0x59,0x10,0x6c,0x2c,
+ 1,
+ 17};
+const int head2_1[] = {0x4f,0x67,0x67,0x53,0,0x04,
+ 0x07,0x18,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,1,0,0,0,
+ 0x89,0x33,0x85,0xce,
+ 13,
+ 254,255,0,255,1,255,245,255,255,0,
+ 255,255,90};
+
+/* nil packets; beginning,middle,end */
+const int head1_2[] = {0x4f,0x67,0x67,0x53,0,0x02,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,0,0,0,0,
+ 0xff,0x7b,0x23,0x17,
+ 1,
+ 0};
+const int head2_2[] = {0x4f,0x67,0x67,0x53,0,0x04,
+ 0x07,0x28,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,1,0,0,0,
+ 0x5c,0x3f,0x66,0xcb,
+ 17,
+ 17,254,255,0,0,255,1,0,255,245,255,255,0,
+ 255,255,90,0};
+
+/* large initial packet */
+const int head1_3[] = {0x4f,0x67,0x67,0x53,0,0x02,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,0,0,0,0,
+ 0x01,0x27,0x31,0xaa,
+ 18,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,10};
+
+const int head2_3[] = {0x4f,0x67,0x67,0x53,0,0x04,
+ 0x07,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,1,0,0,0,
+ 0x7f,0x4e,0x8a,0xd2,
+ 4,
+ 255,4,255,0};
+
+
+/* continuing packet test */
+const int head1_4[] = {0x4f,0x67,0x67,0x53,0,0x02,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,0,0,0,0,
+ 0xff,0x7b,0x23,0x17,
+ 1,
+ 0};
+
+const int head2_4[] = {0x4f,0x67,0x67,0x53,0,0x00,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0x01,0x02,0x03,0x04,1,0,0,0,
+ 0xf8,0x3c,0x19,0x79,
+ 255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255};
+
+const int head3_4[] = {0x4f,0x67,0x67,0x53,0,0x05,
+ 0x07,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,2,0,0,0,
+ 0x38,0xe6,0xb6,0x28,
+ 6,
+ 255,220,255,4,255,0};
+
+
+/* spill expansion test */
+const int head1_4b[] = {0x4f,0x67,0x67,0x53,0,0x02,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,0,0,0,0,
+ 0xff,0x7b,0x23,0x17,
+ 1,
+ 0};
+
+const int head2_4b[] = {0x4f,0x67,0x67,0x53,0,0x00,
+ 0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,1,0,0,0,
+ 0xce,0x8f,0x17,0x1a,
+ 23,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,255,10,255,4,255,0,0};
+
+
+const int head3_4b[] = {0x4f,0x67,0x67,0x53,0,0x04,
+ 0x07,0x14,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,2,0,0,0,
+ 0x9b,0xb2,0x50,0xa1,
+ 1,
+ 0};
+
+/* page with the 255 segment limit */
+const int head1_5[] = {0x4f,0x67,0x67,0x53,0,0x02,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,0,0,0,0,
+ 0xff,0x7b,0x23,0x17,
+ 1,
+ 0};
+
+const int head2_5[] = {0x4f,0x67,0x67,0x53,0,0x00,
+ 0x07,0xfc,0x03,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,1,0,0,0,
+ 0xed,0x2a,0x2e,0xa7,
+ 255,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10};
+
+const int head3_5[] = {0x4f,0x67,0x67,0x53,0,0x04,
+ 0x07,0x00,0x04,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,2,0,0,0,
+ 0x6c,0x3b,0x82,0x3d,
+ 1,
+ 50};
+
+
+/* packet that overspans over an entire page */
+const int head1_6[] = {0x4f,0x67,0x67,0x53,0,0x02,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,0,0,0,0,
+ 0xff,0x7b,0x23,0x17,
+ 1,
+ 0};
+
+const int head2_6[] = {0x4f,0x67,0x67,0x53,0,0x00,
+ 0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,1,0,0,0,
+ 0x68,0x22,0x7c,0x3d,
+ 255,
+ 100,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255};
+
+const int head3_6[] = {0x4f,0x67,0x67,0x53,0,0x01,
+ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
+ 0x01,0x02,0x03,0x04,2,0,0,0,
+ 0xf4,0x87,0xba,0xf3,
+ 255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255};
+
+const int head4_6[] = {0x4f,0x67,0x67,0x53,0,0x05,
+ 0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,3,0,0,0,
+ 0xf7,0x2f,0x6c,0x60,
+ 5,
+ 254,255,4,255,0};
+
+/* packet that overspans over an entire page */
+const int head1_7[] = {0x4f,0x67,0x67,0x53,0,0x02,
+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,0,0,0,0,
+ 0xff,0x7b,0x23,0x17,
+ 1,
+ 0};
+
+const int head2_7[] = {0x4f,0x67,0x67,0x53,0,0x00,
+ 0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,1,0,0,0,
+ 0x68,0x22,0x7c,0x3d,
+ 255,
+ 100,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255,255,255,
+ 255,255,255,255,255,255};
+
+const int head3_7[] = {0x4f,0x67,0x67,0x53,0,0x05,
+ 0x07,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
+ 0x01,0x02,0x03,0x04,2,0,0,0,
+ 0xd4,0xe0,0x60,0xe5,
+ 1,
+ 0};
+
+int compare_packet(const ogg_packet *op1, const ogg_packet *op2){
+ if(op1->packet!=op2->packet){
+ fprintf(stderr,"op1->packet != op2->packet\n");
+ return(1);
+ }
+ if(op1->bytes!=op2->bytes){
+ fprintf(stderr,"op1->bytes != op2->bytes\n");
+ return(1);
+ }
+ if(op1->b_o_s!=op2->b_o_s){
+ fprintf(stderr,"op1->b_o_s != op2->b_o_s\n");
+ return(1);
+ }
+ if(op1->e_o_s!=op2->e_o_s){
+ fprintf(stderr,"op1->e_o_s != op2->e_o_s\n");
+ return(1);
+ }
+ if(op1->granulepos!=op2->granulepos){
+ fprintf(stderr,"op1->granulepos != op2->granulepos\n");
+ return(1);
+ }
+ if(op1->packetno!=op2->packetno){
+ fprintf(stderr,"op1->packetno != op2->packetno\n");
+ return(1);
+ }
+ return(0);
+}
+
+void test_pack(const int *pl, const int **headers, int byteskip,
+ int pageskip, int packetskip){
+ unsigned char *data=_ogg_malloc(1024*1024); /* for scripted test cases only */
+ long inptr=0;
+ long outptr=0;
+ long deptr=0;
+ long depacket=0;
+ long granule_pos=7,pageno=0;
+ int i,j,packets,pageout=pageskip;
+ int eosflag=0;
+ int bosflag=0;
+
+ int byteskipcount=0;
+
+ ogg_stream_reset(&os_en);
+ ogg_stream_reset(&os_de);
+ ogg_sync_reset(&oy);
+
+ for(packets=0;packets<packetskip;packets++)
+ depacket+=pl[packets];
+
+ for(packets=0;;packets++)if(pl[packets]==-1)break;
+
+ for(i=0;i<packets;i++){
+ /* construct a test packet */
+ ogg_packet op;
+ int len=pl[i];
+
+ op.packet=data+inptr;
+ op.bytes=len;
+ op.e_o_s=(pl[i+1]<0?1:0);
+ op.granulepos=granule_pos;
+
+ granule_pos+=1024;
+
+ for(j=0;j<len;j++)data[inptr++]=i+j;
+
+ /* submit the test packet */
+ ogg_stream_packetin(&os_en,&op);
+
+ /* retrieve any finished pages */
+ {
+ ogg_page og;
+
+ while(ogg_stream_pageout(&os_en,&og)){
+ /* We have a page. Check it carefully */
+
+ fprintf(stderr,"%ld, ",pageno);
+
+ if(headers[pageno]==NULL){
+ fprintf(stderr,"coded too many pages!\n");
+ exit(1);
+ }
+
+ check_page(data+outptr,headers[pageno],&og);
+
+ outptr+=og.body_len;
+ pageno++;
+ if(pageskip){
+ bosflag=1;
+ pageskip--;
+ deptr+=og.body_len;
+ }
+
+ /* have a complete page; submit it to sync/decode */
+
+ {
+ ogg_page og_de;
+ ogg_packet op_de,op_de2;
+ char *buf=ogg_sync_buffer(&oy,og.header_len+og.body_len);
+ char *next=buf;
+ byteskipcount+=og.header_len;
+ if(byteskipcount>byteskip){
+ memcpy(next,og.header,byteskipcount-byteskip);
+ next+=byteskipcount-byteskip;
+ byteskipcount=byteskip;
+ }
+
+ byteskipcount+=og.body_len;
+ if(byteskipcount>byteskip){
+ memcpy(next,og.body,byteskipcount-byteskip);
+ next+=byteskipcount-byteskip;
+ byteskipcount=byteskip;
+ }
+
+ ogg_sync_wrote(&oy,next-buf);
+
+ while(1){
+ int ret=ogg_sync_pageout(&oy,&og_de);
+ if(ret==0)break;
+ if(ret<0)continue;
+ /* got a page. Happy happy. Verify that it's good. */
+
+ fprintf(stderr,"(%d), ",pageout);
+
+ check_page(data+deptr,headers[pageout],&og_de);
+ deptr+=og_de.body_len;
+ pageout++;
+
+ /* submit it to deconstitution */
+ ogg_stream_pagein(&os_de,&og_de);
+
+ /* packets out? */
+ while(ogg_stream_packetpeek(&os_de,&op_de2)>0){
+ ogg_stream_packetpeek(&os_de,NULL);
+ ogg_stream_packetout(&os_de,&op_de); /* just catching them all */
+
+ /* verify peek and out match */
+ if(compare_packet(&op_de,&op_de2)){
+ fprintf(stderr,"packetout != packetpeek! pos=%ld\n",
+ depacket);
+ exit(1);
+ }
+
+ /* verify the packet! */
+ /* check data */
+ if(memcmp(data+depacket,op_de.packet,op_de.bytes)){
+ fprintf(stderr,"packet data mismatch in decode! pos=%ld\n",
+ depacket);
+ exit(1);
+ }
+ /* check bos flag */
+ if(bosflag==0 && op_de.b_o_s==0){
+ fprintf(stderr,"b_o_s flag not set on packet!\n");
+ exit(1);
+ }
+ if(bosflag && op_de.b_o_s){
+ fprintf(stderr,"b_o_s flag incorrectly set on packet!\n");
+ exit(1);
+ }
+ bosflag=1;
+ depacket+=op_de.bytes;
+
+ /* check eos flag */
+ if(eosflag){
+ fprintf(stderr,"Multiple decoded packets with eos flag!\n");
+ exit(1);
+ }
+
+ if(op_de.e_o_s)eosflag=1;
+
+ /* check granulepos flag */
+ if(op_de.granulepos!=-1){
+ fprintf(stderr," granule:%ld ",(long)op_de.granulepos);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ _ogg_free(data);
+ if(headers[pageno]!=NULL){
+ fprintf(stderr,"did not write last page!\n");
+ exit(1);
+ }
+ if(headers[pageout]!=NULL){
+ fprintf(stderr,"did not decode last page!\n");
+ exit(1);
+ }
+ if(inptr!=outptr){
+ fprintf(stderr,"encoded page data incomplete!\n");
+ exit(1);
+ }
+ if(inptr!=deptr){
+ fprintf(stderr,"decoded page data incomplete!\n");
+ exit(1);
+ }
+ if(inptr!=depacket){
+ fprintf(stderr,"decoded packet data incomplete!\n");
+ exit(1);
+ }
+ if(!eosflag){
+ fprintf(stderr,"Never got a packet with EOS set!\n");
+ exit(1);
+ }
+ fprintf(stderr,"ok.\n");
+}
+
+int main(void){
+
+ ogg_stream_init(&os_en,0x04030201);
+ ogg_stream_init(&os_de,0x04030201);
+ ogg_sync_init(&oy);
+
+ /* Exercise each code path in the framing code. Also verify that
+ the checksums are working. */
+
+ {
+ /* 17 only */
+ const int packets[]={17, -1};
+ const int *headret[]={head1_0,NULL};
+
+ fprintf(stderr,"testing single page encoding... ");
+ test_pack(packets,headret,0,0,0);
+ }
+
+ {
+ /* 17, 254, 255, 256, 500, 510, 600 byte, pad */
+ const int packets[]={17, 254, 255, 256, 500, 510, 600, -1};
+ const int *headret[]={head1_1,head2_1,NULL};
+
+ fprintf(stderr,"testing basic page encoding... ");
+ test_pack(packets,headret,0,0,0);
+ }
+
+ {
+ /* nil packets; beginning,middle,end */
+ const int packets[]={0,17, 254, 255, 0, 256, 0, 500, 510, 600, 0, -1};
+ const int *headret[]={head1_2,head2_2,NULL};
+
+ fprintf(stderr,"testing basic nil packets... ");
+ test_pack(packets,headret,0,0,0);
+ }
+
+ {
+ /* large initial packet */
+ const int packets[]={4345,259,255,-1};
+ const int *headret[]={head1_3,head2_3,NULL};
+
+ fprintf(stderr,"testing initial-packet lacing > 4k... ");
+ test_pack(packets,headret,0,0,0);
+ }
+
+ {
+ /* continuing packet test; with page spill expansion, we have to
+ overflow the lacing table. */
+ const int packets[]={0,65500,259,255,-1};
+ const int *headret[]={head1_4,head2_4,head3_4,NULL};
+
+ fprintf(stderr,"testing single packet page span... ");
+ test_pack(packets,headret,0,0,0);
+ }
+
+ {
+ /* spill expand packet test */
+ const int packets[]={0,4345,259,255,0,0,-1};
+ const int *headret[]={head1_4b,head2_4b,head3_4b,NULL};
+
+ fprintf(stderr,"testing page spill expansion... ");
+ test_pack(packets,headret,0,0,0);
+ }
+
+ /* page with the 255 segment limit */
+ {
+
+ const int packets[]={0,10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,10,
+ 10,10,10,10,10,10,10,50,-1};
+ const int *headret[]={head1_5,head2_5,head3_5,NULL};
+
+ fprintf(stderr,"testing max packet segments... ");
+ test_pack(packets,headret,0,0,0);
+ }
+
+ {
+ /* packet that overspans over an entire page */
+ const int packets[]={0,100,130049,259,255,-1};
+ const int *headret[]={head1_6,head2_6,head3_6,head4_6,NULL};
+
+ fprintf(stderr,"testing very large packets... ");
+ test_pack(packets,headret,0,0,0);
+ }
+
+ {
+ /* test for the libogg 1.1.1 resync in large continuation bug
+ found by Josh Coalson) */
+ const int packets[]={0,100,130049,259,255,-1};
+ const int *headret[]={head1_6,head2_6,head3_6,head4_6,NULL};
+
+ fprintf(stderr,"testing continuation resync in very large packets... ");
+ test_pack(packets,headret,100,2,3);
+ }
+
+ {
+ /* term only page. why not? */
+ const int packets[]={0,100,64770,-1};
+ const int *headret[]={head1_7,head2_7,head3_7,NULL};
+
+ fprintf(stderr,"testing zero data page (1 nil packet)... ");
+ test_pack(packets,headret,0,0,0);
+ }
+
+
+
+ {
+ /* build a bunch of pages for testing */
+ unsigned char *data=_ogg_malloc(1024*1024);
+ int pl[]={0, 1,1,98,4079, 1,1,2954,2057, 76,34,912,0,234,1000,1000, 1000,300,-1};
+ int inptr=0,i,j;
+ ogg_page og[5];
+
+ ogg_stream_reset(&os_en);
+
+ for(i=0;pl[i]!=-1;i++){
+ ogg_packet op;
+ int len=pl[i];
+
+ op.packet=data+inptr;
+ op.bytes=len;
+ op.e_o_s=(pl[i+1]<0?1:0);
+ op.granulepos=(i+1)*1000;
+
+ for(j=0;j<len;j++)data[inptr++]=i+j;
+ ogg_stream_packetin(&os_en,&op);
+ }
+
+ _ogg_free(data);
+
+ /* retrieve finished pages */
+ for(i=0;i<5;i++){
+ if(ogg_stream_pageout(&os_en,&og[i])==0){
+ fprintf(stderr,"Too few pages output building sync tests!\n");
+ exit(1);
+ }
+ copy_page(&og[i]);
+ }
+
+ /* Test lost pages on pagein/packetout: no rollback */
+ {
+ ogg_page temp;
+ ogg_packet test;
+
+ fprintf(stderr,"Testing loss of pages... ");
+
+ ogg_sync_reset(&oy);
+ ogg_stream_reset(&os_de);
+ for(i=0;i<5;i++){
+ memcpy(ogg_sync_buffer(&oy,og[i].header_len),og[i].header,
+ og[i].header_len);
+ ogg_sync_wrote(&oy,og[i].header_len);
+ memcpy(ogg_sync_buffer(&oy,og[i].body_len),og[i].body,og[i].body_len);
+ ogg_sync_wrote(&oy,og[i].body_len);
+ }
+
+ ogg_sync_pageout(&oy,&temp);
+ ogg_stream_pagein(&os_de,&temp);
+ ogg_sync_pageout(&oy,&temp);
+ ogg_stream_pagein(&os_de,&temp);
+ ogg_sync_pageout(&oy,&temp);
+ /* skip */
+ ogg_sync_pageout(&oy,&temp);
+ ogg_stream_pagein(&os_de,&temp);
+
+ /* do we get the expected results/packets? */
+
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,0,0,0);
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,1,1,-1);
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,1,2,-1);
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,98,3,-1);
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,4079,4,5000);
+ if(ogg_stream_packetout(&os_de,&test)!=-1){
+ fprintf(stderr,"Error: loss of page did not return error\n");
+ exit(1);
+ }
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,76,9,-1);
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,34,10,-1);
+ fprintf(stderr,"ok.\n");
+ }
+
+ /* Test lost pages on pagein/packetout: rollback with continuation */
+ {
+ ogg_page temp;
+ ogg_packet test;
+
+ fprintf(stderr,"Testing loss of pages (rollback required)... ");
+
+ ogg_sync_reset(&oy);
+ ogg_stream_reset(&os_de);
+ for(i=0;i<5;i++){
+ memcpy(ogg_sync_buffer(&oy,og[i].header_len),og[i].header,
+ og[i].header_len);
+ ogg_sync_wrote(&oy,og[i].header_len);
+ memcpy(ogg_sync_buffer(&oy,og[i].body_len),og[i].body,og[i].body_len);
+ ogg_sync_wrote(&oy,og[i].body_len);
+ }
+
+ ogg_sync_pageout(&oy,&temp);
+ ogg_stream_pagein(&os_de,&temp);
+ ogg_sync_pageout(&oy,&temp);
+ ogg_stream_pagein(&os_de,&temp);
+ ogg_sync_pageout(&oy,&temp);
+ ogg_stream_pagein(&os_de,&temp);
+ ogg_sync_pageout(&oy,&temp);
+ /* skip */
+ ogg_sync_pageout(&oy,&temp);
+ ogg_stream_pagein(&os_de,&temp);
+
+ /* do we get the expected results/packets? */
+
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,0,0,0);
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,1,1,-1);
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,1,2,-1);
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,98,3,-1);
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,4079,4,5000);
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,1,5,-1);
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,1,6,-1);
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,2954,7,-1);
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,2057,8,9000);
+ if(ogg_stream_packetout(&os_de,&test)!=-1){
+ fprintf(stderr,"Error: loss of page did not return error\n");
+ exit(1);
+ }
+ if(ogg_stream_packetout(&os_de,&test)!=1)error();
+ checkpacket(&test,300,17,18000);
+ fprintf(stderr,"ok.\n");
+ }
+
+ /* the rest only test sync */
+ {
+ ogg_page og_de;
+ /* Test fractional page inputs: incomplete capture */
+ fprintf(stderr,"Testing sync on partial inputs... ");
+ ogg_sync_reset(&oy);
+ memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header,
+ 3);
+ ogg_sync_wrote(&oy,3);
+ if(ogg_sync_pageout(&oy,&og_de)>0)error();
+
+ /* Test fractional page inputs: incomplete fixed header */
+ memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header+3,
+ 20);
+ ogg_sync_wrote(&oy,20);
+ if(ogg_sync_pageout(&oy,&og_de)>0)error();
+
+ /* Test fractional page inputs: incomplete header */
+ memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header+23,
+ 5);
+ ogg_sync_wrote(&oy,5);
+ if(ogg_sync_pageout(&oy,&og_de)>0)error();
+
+ /* Test fractional page inputs: incomplete body */
+
+ memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header+28,
+ og[1].header_len-28);
+ ogg_sync_wrote(&oy,og[1].header_len-28);
+ if(ogg_sync_pageout(&oy,&og_de)>0)error();
+
+ memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body,1000);
+ ogg_sync_wrote(&oy,1000);
+ if(ogg_sync_pageout(&oy,&og_de)>0)error();
+
+ memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body+1000,
+ og[1].body_len-1000);
+ ogg_sync_wrote(&oy,og[1].body_len-1000);
+ if(ogg_sync_pageout(&oy,&og_de)<=0)error();
+
+ fprintf(stderr,"ok.\n");
+ }
+
+ /* Test fractional page inputs: page + incomplete capture */
+ {
+ ogg_page og_de;
+ fprintf(stderr,"Testing sync on 1+partial inputs... ");
+ ogg_sync_reset(&oy);
+
+ memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header,
+ og[1].header_len);
+ ogg_sync_wrote(&oy,og[1].header_len);
+
+ memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body,
+ og[1].body_len);
+ ogg_sync_wrote(&oy,og[1].body_len);
+
+ memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header,
+ 20);
+ ogg_sync_wrote(&oy,20);
+ if(ogg_sync_pageout(&oy,&og_de)<=0)error();
+ if(ogg_sync_pageout(&oy,&og_de)>0)error();
+
+ memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header+20,
+ og[1].header_len-20);
+ ogg_sync_wrote(&oy,og[1].header_len-20);
+ memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body,
+ og[1].body_len);
+ ogg_sync_wrote(&oy,og[1].body_len);
+ if(ogg_sync_pageout(&oy,&og_de)<=0)error();
+
+ fprintf(stderr,"ok.\n");
+ }
+
+ /* Test recapture: garbage + page */
+ {
+ ogg_page og_de;
+ fprintf(stderr,"Testing search for capture... ");
+ ogg_sync_reset(&oy);
+
+ /* 'garbage' */
+ memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body,
+ og[1].body_len);
+ ogg_sync_wrote(&oy,og[1].body_len);
+
+ memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header,
+ og[1].header_len);
+ ogg_sync_wrote(&oy,og[1].header_len);
+
+ memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body,
+ og[1].body_len);
+ ogg_sync_wrote(&oy,og[1].body_len);
+
+ memcpy(ogg_sync_buffer(&oy,og[2].header_len),og[2].header,
+ 20);
+ ogg_sync_wrote(&oy,20);
+ if(ogg_sync_pageout(&oy,&og_de)>0)error();
+ if(ogg_sync_pageout(&oy,&og_de)<=0)error();
+ if(ogg_sync_pageout(&oy,&og_de)>0)error();
+
+ memcpy(ogg_sync_buffer(&oy,og[2].header_len),og[2].header+20,
+ og[2].header_len-20);
+ ogg_sync_wrote(&oy,og[2].header_len-20);
+ memcpy(ogg_sync_buffer(&oy,og[2].body_len),og[2].body,
+ og[2].body_len);
+ ogg_sync_wrote(&oy,og[2].body_len);
+ if(ogg_sync_pageout(&oy,&og_de)<=0)error();
+
+ fprintf(stderr,"ok.\n");
+ }
+
+ /* Test recapture: page + garbage + page */
+ {
+ ogg_page og_de;
+ fprintf(stderr,"Testing recapture... ");
+ ogg_sync_reset(&oy);
+
+ memcpy(ogg_sync_buffer(&oy,og[1].header_len),og[1].header,
+ og[1].header_len);
+ ogg_sync_wrote(&oy,og[1].header_len);
+
+ memcpy(ogg_sync_buffer(&oy,og[1].body_len),og[1].body,
+ og[1].body_len);
+ ogg_sync_wrote(&oy,og[1].body_len);
+
+ memcpy(ogg_sync_buffer(&oy,og[2].header_len),og[2].header,
+ og[2].header_len);
+ ogg_sync_wrote(&oy,og[2].header_len);
+
+ memcpy(ogg_sync_buffer(&oy,og[2].header_len),og[2].header,
+ og[2].header_len);
+ ogg_sync_wrote(&oy,og[2].header_len);
+
+ if(ogg_sync_pageout(&oy,&og_de)<=0)error();
+
+ memcpy(ogg_sync_buffer(&oy,og[2].body_len),og[2].body,
+ og[2].body_len-5);
+ ogg_sync_wrote(&oy,og[2].body_len-5);
+
+ memcpy(ogg_sync_buffer(&oy,og[3].header_len),og[3].header,
+ og[3].header_len);
+ ogg_sync_wrote(&oy,og[3].header_len);
+
+ memcpy(ogg_sync_buffer(&oy,og[3].body_len),og[3].body,
+ og[3].body_len);
+ ogg_sync_wrote(&oy,og[3].body_len);
+
+ if(ogg_sync_pageout(&oy,&og_de)>0)error();
+ if(ogg_sync_pageout(&oy,&og_de)<=0)error();
+
+ fprintf(stderr,"ok.\n");
+ }
+
+ /* Free page data that was previously copied */
+ {
+ for(i=0;i<5;i++){
+ free_page(&og[i]);
+ }
+ }
+ }
+
+ return(0);
+}
+
+#endif
diff --git a/libogg/ogg.h b/libogg/ogg.h
new file mode 100644
index 0000000..d72c253
--- /dev/null
+++ b/libogg/ogg.h
@@ -0,0 +1,210 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
+ * by the Xiph.Org Foundation http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: toplevel libogg include
+ last mod: $Id$
+
+ ********************************************************************/
+#ifndef _OGG_H
+#define _OGG_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stddef.h>
+#include "os_types.h"
+
+typedef struct {
+ void *iov_base;
+ size_t iov_len;
+} ogg_iovec_t;
+
+typedef struct {
+ long endbyte;
+ int endbit;
+
+ unsigned char *buffer;
+ unsigned char *ptr;
+ long storage;
+} oggpack_buffer;
+
+/* ogg_page is used to encapsulate the data in one Ogg bitstream page *****/
+
+typedef struct {
+ unsigned char *header;
+ long header_len;
+ unsigned char *body;
+ long body_len;
+} ogg_page;
+
+/* ogg_stream_state contains the current encode/decode state of a logical
+ Ogg bitstream **********************************************************/
+
+typedef struct {
+ unsigned char *body_data; /* bytes from packet bodies */
+ long body_storage; /* storage elements allocated */
+ long body_fill; /* elements stored; fill mark */
+ long body_returned; /* elements of fill returned */
+
+
+ int *lacing_vals; /* The values that will go to the segment table */
+ ogg_int64_t *granule_vals; /* granulepos values for headers. Not compact
+ this way, but it is simple coupled to the
+ lacing fifo */
+ long lacing_storage;
+ long lacing_fill;
+ long lacing_packet;
+ long lacing_returned;
+
+ unsigned char header[282]; /* working space for header encode */
+ int header_fill;
+
+ int e_o_s; /* set when we have buffered the last packet in the
+ logical bitstream */
+ int b_o_s; /* set after we've written the initial page
+ of a logical bitstream */
+ long serialno;
+ long pageno;
+ ogg_int64_t packetno; /* sequence number for decode; the framing
+ knows where there's a hole in the data,
+ but we need coupling so that the codec
+ (which is in a separate abstraction
+ layer) also knows about the gap */
+ ogg_int64_t granulepos;
+
+} ogg_stream_state;
+
+/* ogg_packet is used to encapsulate the data and metadata belonging
+ to a single raw Ogg/Vorbis packet *************************************/
+
+typedef struct {
+ unsigned char *packet;
+ long bytes;
+ long b_o_s;
+ long e_o_s;
+
+ ogg_int64_t granulepos;
+
+ ogg_int64_t packetno; /* sequence number for decode; the framing
+ knows where there's a hole in the data,
+ but we need coupling so that the codec
+ (which is in a separate abstraction
+ layer) also knows about the gap */
+} ogg_packet;
+
+typedef struct {
+ unsigned char *data;
+ int storage;
+ int fill;
+ int returned;
+
+ int unsynced;
+ int headerbytes;
+ int bodybytes;
+} ogg_sync_state;
+
+/* Ogg BITSTREAM PRIMITIVES: bitstream ************************/
+
+extern void oggpack_writeinit(oggpack_buffer *b);
+extern int oggpack_writecheck(oggpack_buffer *b);
+extern void oggpack_writetrunc(oggpack_buffer *b,long bits);
+extern void oggpack_writealign(oggpack_buffer *b);
+extern void oggpack_writecopy(oggpack_buffer *b,void *source,long bits);
+extern void oggpack_reset(oggpack_buffer *b);
+extern void oggpack_writeclear(oggpack_buffer *b);
+extern void oggpack_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
+extern void oggpack_write(oggpack_buffer *b,unsigned long value,int bits);
+extern long oggpack_look(oggpack_buffer *b,int bits);
+extern long oggpack_look1(oggpack_buffer *b);
+extern void oggpack_adv(oggpack_buffer *b,int bits);
+extern void oggpack_adv1(oggpack_buffer *b);
+extern long oggpack_read(oggpack_buffer *b,int bits);
+extern long oggpack_read1(oggpack_buffer *b);
+extern long oggpack_bytes(oggpack_buffer *b);
+extern long oggpack_bits(oggpack_buffer *b);
+extern unsigned char *oggpack_get_buffer(oggpack_buffer *b);
+
+extern void oggpackB_writeinit(oggpack_buffer *b);
+extern int oggpackB_writecheck(oggpack_buffer *b);
+extern void oggpackB_writetrunc(oggpack_buffer *b,long bits);
+extern void oggpackB_writealign(oggpack_buffer *b);
+extern void oggpackB_writecopy(oggpack_buffer *b,void *source,long bits);
+extern void oggpackB_reset(oggpack_buffer *b);
+extern void oggpackB_writeclear(oggpack_buffer *b);
+extern void oggpackB_readinit(oggpack_buffer *b,unsigned char *buf,int bytes);
+extern void oggpackB_write(oggpack_buffer *b,unsigned long value,int bits);
+extern long oggpackB_look(oggpack_buffer *b,int bits);
+extern long oggpackB_look1(oggpack_buffer *b);
+extern void oggpackB_adv(oggpack_buffer *b,int bits);
+extern void oggpackB_adv1(oggpack_buffer *b);
+extern long oggpackB_read(oggpack_buffer *b,int bits);
+extern long oggpackB_read1(oggpack_buffer *b);
+extern long oggpackB_bytes(oggpack_buffer *b);
+extern long oggpackB_bits(oggpack_buffer *b);
+extern unsigned char *oggpackB_get_buffer(oggpack_buffer *b);
+
+/* Ogg BITSTREAM PRIMITIVES: encoding **************************/
+
+extern int ogg_stream_packetin(ogg_stream_state *os, ogg_packet *op);
+extern int ogg_stream_iovecin(ogg_stream_state *os, ogg_iovec_t *iov,
+ int count, long e_o_s, ogg_int64_t granulepos);
+extern int ogg_stream_pageout(ogg_stream_state *os, ogg_page *og);
+extern int ogg_stream_pageout_fill(ogg_stream_state *os, ogg_page *og, int nfill);
+extern int ogg_stream_flush(ogg_stream_state *os, ogg_page *og);
+extern int ogg_stream_flush_fill(ogg_stream_state *os, ogg_page *og, int nfill);
+
+/* Ogg BITSTREAM PRIMITIVES: decoding **************************/
+
+extern int ogg_sync_init(ogg_sync_state *oy);
+extern int ogg_sync_clear(ogg_sync_state *oy);
+extern int ogg_sync_reset(ogg_sync_state *oy);
+extern int ogg_sync_destroy(ogg_sync_state *oy);
+extern int ogg_sync_check(ogg_sync_state *oy);
+
+extern char *ogg_sync_buffer(ogg_sync_state *oy, long size);
+extern int ogg_sync_wrote(ogg_sync_state *oy, long bytes);
+extern long ogg_sync_pageseek(ogg_sync_state *oy,ogg_page *og);
+extern int ogg_sync_pageout(ogg_sync_state *oy, ogg_page *og);
+extern int ogg_stream_pagein(ogg_stream_state *os, ogg_page *og);
+extern int ogg_stream_packetout(ogg_stream_state *os,ogg_packet *op);
+extern int ogg_stream_packetpeek(ogg_stream_state *os,ogg_packet *op);
+
+/* Ogg BITSTREAM PRIMITIVES: general ***************************/
+
+extern int ogg_stream_init(ogg_stream_state *os,int serialno);
+extern int ogg_stream_clear(ogg_stream_state *os);
+extern int ogg_stream_reset(ogg_stream_state *os);
+extern int ogg_stream_reset_serialno(ogg_stream_state *os,int serialno);
+extern int ogg_stream_destroy(ogg_stream_state *os);
+extern int ogg_stream_check(ogg_stream_state *os);
+extern int ogg_stream_eos(ogg_stream_state *os);
+
+extern void ogg_page_checksum_set(ogg_page *og);
+
+extern int ogg_page_version(const ogg_page *og);
+extern int ogg_page_continued(const ogg_page *og);
+extern int ogg_page_bos(const ogg_page *og);
+extern int ogg_page_eos(const ogg_page *og);
+extern ogg_int64_t ogg_page_granulepos(const ogg_page *og);
+extern int ogg_page_serialno(const ogg_page *og);
+extern long ogg_page_pageno(const ogg_page *og);
+extern int ogg_page_packets(const ogg_page *og);
+
+extern void ogg_packet_clear(ogg_packet *op);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _OGG_H */
diff --git a/libogg/os_types.h b/libogg/os_types.h
new file mode 100644
index 0000000..3085ea8
--- /dev/null
+++ b/libogg/os_types.h
@@ -0,0 +1,153 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2002 *
+ * by the Xiph.Org Foundation http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: #ifdef jail to whip a few platforms into the UNIX ideal.
+ last mod: $Id$
+
+ ********************************************************************/
+#ifndef _OS_TYPES_H
+#define _OS_TYPES_H
+
+/* make it easy on the folks that want to compile the libs with a
+ different malloc than stdlib */
+#define _ogg_malloc malloc
+#define _ogg_calloc calloc
+#define _ogg_realloc realloc
+#define _ogg_free free
+
+#if defined(_WIN32)
+
+# if defined(__CYGWIN__)
+# include <stdint.h>
+ typedef int16_t ogg_int16_t;
+ typedef uint16_t ogg_uint16_t;
+ typedef int32_t ogg_int32_t;
+ typedef uint32_t ogg_uint32_t;
+ typedef int64_t ogg_int64_t;
+ typedef uint64_t ogg_uint64_t;
+# elif defined(__MINGW32__)
+# include <sys/types.h>
+ typedef short ogg_int16_t;
+ typedef unsigned short ogg_uint16_t;
+ typedef int ogg_int32_t;
+ typedef unsigned int ogg_uint32_t;
+ typedef long long ogg_int64_t;
+ typedef unsigned long long ogg_uint64_t;
+# elif defined(__MWERKS__)
+ typedef long long ogg_int64_t;
+ typedef int ogg_int32_t;
+ typedef unsigned int ogg_uint32_t;
+ typedef short ogg_int16_t;
+ typedef unsigned short ogg_uint16_t;
+# else
+# if defined(_MSC_VER) && (_MSC_VER >= 1800) /* MSVC 2013 and newer */
+# include <stdint.h>
+ typedef int16_t ogg_int16_t;
+ typedef uint16_t ogg_uint16_t;
+ typedef int32_t ogg_int32_t;
+ typedef uint32_t ogg_uint32_t;
+ typedef int64_t ogg_int64_t;
+ typedef uint64_t ogg_uint64_t;
+# else
+ /* MSVC/Borland */
+ typedef __int64 ogg_int64_t;
+ typedef __int32 ogg_int32_t;
+ typedef unsigned __int32 ogg_uint32_t;
+ typedef __int16 ogg_int16_t;
+ typedef unsigned __int16 ogg_uint16_t;
+# endif
+# endif
+
+#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */
+
+# include <inttypes.h>
+ typedef int16_t ogg_int16_t;
+ typedef uint16_t ogg_uint16_t;
+ typedef int32_t ogg_int32_t;
+ typedef uint32_t ogg_uint32_t;
+ typedef int64_t ogg_int64_t;
+
+#elif defined(__HAIKU__)
+
+ /* Haiku */
+# include <sys/types.h>
+ typedef short ogg_int16_t;
+ typedef unsigned short ogg_uint16_t;
+ typedef int ogg_int32_t;
+ typedef unsigned int ogg_uint32_t;
+ typedef long long ogg_int64_t;
+
+#elif defined(__BEOS__)
+
+ /* Be */
+# include <inttypes.h>
+ typedef int16_t ogg_int16_t;
+ typedef uint16_t ogg_uint16_t;
+ typedef int32_t ogg_int32_t;
+ typedef uint32_t ogg_uint32_t;
+ typedef int64_t ogg_int64_t;
+
+#elif defined (__EMX__)
+
+ /* OS/2 GCC */
+ typedef short ogg_int16_t;
+ typedef unsigned short ogg_uint16_t;
+ typedef int ogg_int32_t;
+ typedef unsigned int ogg_uint32_t;
+ typedef long long ogg_int64_t;
+
+#elif defined (DJGPP)
+
+ /* DJGPP */
+ typedef short ogg_int16_t;
+ typedef int ogg_int32_t;
+ typedef unsigned int ogg_uint32_t;
+ typedef long long ogg_int64_t;
+
+#elif defined(R5900)
+
+ /* PS2 EE */
+ typedef long ogg_int64_t;
+ typedef int ogg_int32_t;
+ typedef unsigned ogg_uint32_t;
+ typedef short ogg_int16_t;
+
+#elif defined(__SYMBIAN32__)
+
+ /* Symbian GCC */
+ typedef signed short ogg_int16_t;
+ typedef unsigned short ogg_uint16_t;
+ typedef signed int ogg_int32_t;
+ typedef unsigned int ogg_uint32_t;
+ typedef long long int ogg_int64_t;
+
+#elif defined(__TMS320C6X__)
+
+ /* TI C64x compiler */
+ typedef signed short ogg_int16_t;
+ typedef unsigned short ogg_uint16_t;
+ typedef signed int ogg_int32_t;
+ typedef unsigned int ogg_uint32_t;
+ typedef long long int ogg_int64_t;
+
+#else
+#include <stdint.h>
+ typedef int16_t ogg_int16_t;
+ typedef uint16_t ogg_uint16_t;
+ typedef int32_t ogg_int32_t;
+ typedef uint32_t ogg_uint32_t;
+ typedef int64_t ogg_int64_t;
+ typedef uint64_t ogg_uint64_t;
+
+#endif
+
+#endif /* _OS_TYPES_H */
diff --git a/little/main-little.cpp b/little/main-little.cpp
index ca7de1a..0abafca 100644
--- a/little/main-little.cpp
+++ b/little/main-little.cpp
@@ -5,11 +5,15 @@
#include <QApplication>
#include <QtPlugin>
-#include "../Variable.h"
-#include "../plugins/CopyEngine/Ultracopier/CopyEngineFactory.h"
-#include "../plugins/Themes/Oxygen/ThemesFactory.h"
+#ifndef ULTRACOPIER_LITTLE_RANDOM
+#include "../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.h"
+#else
+#include "../plugins/CopyEngine/Random/CopyEngineFactory.h"
+#endif
+#include "../plugins/Themes/Oxygen2/ThemesFactory.h"
#include "OptionsEngineLittle.h"
#include "../FacilityEngine.h"
+#include "../Version.h"
#include <iostream>
Themes * interface=NULL;
@@ -41,6 +45,8 @@ void connectEngine();
void connectInterfaceAndSync();
void periodicSynchronization();
+bool havePause=false;
+
/// \brief Define the main() for the point entry
int main(int argc, char *argv[])
{
@@ -49,6 +55,7 @@ int main(int argc, char *argv[])
qRegisterMetaType<Ultracopier::CopyMode>("Ultracopier::CopyMode");
qRegisterMetaType<Ultracopier::ItemOfCopyList>("Ultracopier::ItemOfCopyList");
qRegisterMetaType<std::string>("std::string");
+ qRegisterMetaType<std::wstring>("std::wstring");
qRegisterMetaType<std::vector<std::string> >("std::vector<std::string>");
qRegisterMetaType<Ultracopier::DebugLevel>("Ultracopier::DebugLevel");
qRegisterMetaType<Ultracopier::EngineActionInProgress>("Ultracopier::EngineActionInProgress");
@@ -64,6 +71,7 @@ int main(int argc, char *argv[])
interface=static_cast<Themes *>(themesFactory.getInstance());
engine=static_cast<CopyEngine *>(copyEngineFactory.getInstance());
+ havePause=copyEngineFactory.havePause();
connectEngine();
connectInterfaceAndSync();
@@ -119,12 +127,12 @@ void connectInterfaceAndSync()
failed|=!QObject::connect(interface,&Themes::resume, engine,&CopyEngine::resetSpeedDetectedInterface);
failed|=!QObject::connect(interface,&Themes::urlDropped, engine,&CopyEngine::urlDropped,Qt::QueuedConnection);*/
failed|=!QObject::connect(interface,&Themes::cancel, engine,&CopyEngine::cancel,Qt::QueuedConnection);
- failed|=!QObject::connect(engine,&CopyEngine::newActionOnList, engine,&CopyEngine::newActionOnList, Qt::QueuedConnection);
+ failed|=!QObject::connect(engine,&CopyEngine::newActionOnList, interface,&Themes::getActionOnList, Qt::QueuedConnection);
failed|=!QObject::connect(engine,&CopyEngine::pushFileProgression, interface,&Themes::setFileProgression, Qt::QueuedConnection);
failed|=!QObject::connect(engine,&CopyEngine::pushGeneralProgression, interface,&Themes::setGeneralProgression, Qt::QueuedConnection);
- failed|=!QObject::connect(engine,&CopyEngine::pushGeneralProgression, engine,&CopyEngine::pushGeneralProgression, Qt::QueuedConnection);
failed|=!QObject::connect(engine,&CopyEngine::errorToRetry, interface,&Themes::errorToRetry, Qt::QueuedConnection);
+ failed|=!QObject::connect(engine,&CopyEngine::doneTime, interface,&Themes::doneTime, Qt::QueuedConnection);
if(failed)
{
@@ -133,6 +141,7 @@ void connectInterfaceAndSync()
}
interface->setSupportSpeedLimitation(engine->supportSpeedLimitation());
interface->setCopyType(Ultracopier::CopyType::FileAndFolder);
+ interface->havePause(havePause);
interface->setTransferListOperation(Ultracopier::TransferListOperation::TransferListOperation_None);
interface->actionInProgess(Ultracopier::EngineActionInProgress::Idle);
//interface->isInPause(currentCopyInstance.isPaused);
diff --git a/main.cpp b/main.cpp
index 1abaa28..eada7e6 100644..100755
--- a/main.cpp
+++ b/main.cpp
@@ -54,10 +54,12 @@ void registerTheOptions()
KeysList.push_back(std::pair<std::string, std::string>("key",""));
KeysList.push_back(std::pair<std::string, std::string>("ActionOnManualOpen","1"));
KeysList.push_back(std::pair<std::string, std::string>("GroupWindowWhen","0"));
- KeysList.push_back(std::pair<std::string, std::string>("displayOSSpecific","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("displayOSSpecific2","true"));
KeysList.push_back(std::pair<std::string, std::string>("confirmToGroupWindows","true"));
- KeysList.push_back(std::pair<std::string, std::string>("remainingTimeAlgorithm","1"));
+ KeysList.push_back(std::pair<std::string, std::string>("remainingTimeAlgorithm","0"));
KeysList.push_back(std::pair<std::string, std::string>("portable","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("soundFile","finish.opus"));
+ KeysList.push_back(std::pair<std::string, std::string>("soundWhenFinish","false"));
#ifdef ULTRACOPIER_INTERNET_SUPPORT
#if defined(Q_OS_WIN32) || defined(Q_OS_MAC)
KeysList.push_back(std::pair<std::string, std::string>("checkTheUpdate","true"));
@@ -68,7 +70,7 @@ void registerTheOptions()
OptionEngine::optionEngine->addOptionGroup("Ultracopier",KeysList);
KeysList.clear();
- KeysList.push_back(std::pair<std::string, std::string>("List","Ultracopier"));
+ KeysList.push_back(std::pair<std::string, std::string>("List","Ultracopier-Spec"));
OptionEngine::optionEngine->addOptionGroup("CopyEngine",KeysList);
//load the GUI option
@@ -101,7 +103,7 @@ int main(int argc, char *argv[])
{
int returnCode;
QApplication ultracopierApplication(argc, argv);
- ultracopierApplication.setApplicationVersion(ULTRACOPIER_VERSION);
+ ultracopierApplication.setApplicationVersion(QString::fromStdString(FacilityEngine::version()));
ultracopierApplication.setQuitOnLastWindowClosed(false);
qRegisterMetaType<PluginsAvailable>("PluginsAvailable");
qRegisterMetaType<Ultracopier::DebugLevel>("Ultracopier::DebugLevel");
diff --git a/opusfile/info.c b/opusfile/info.c
new file mode 100644
index 0000000..3a1a5bf
--- /dev/null
+++ b/opusfile/info.c
@@ -0,0 +1,771 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 2012 *
+ * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
+ * *
+ ********************************************************************/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "internal.h"
+#include <limits.h>
+#include <string.h>
+
+static unsigned op_parse_uint16le(const unsigned char *_data){
+ return _data[0]|_data[1]<<8;
+}
+
+static int op_parse_int16le(const unsigned char *_data){
+ int ret;
+ ret=_data[0]|_data[1]<<8;
+ return (ret^0x8000)-0x8000;
+}
+
+static opus_uint32 op_parse_uint32le(const unsigned char *_data){
+ return _data[0]|(opus_uint32)_data[1]<<8|
+ (opus_uint32)_data[2]<<16|(opus_uint32)_data[3]<<24;
+}
+
+static opus_uint32 op_parse_uint32be(const unsigned char *_data){
+ return _data[3]|(opus_uint32)_data[2]<<8|
+ (opus_uint32)_data[1]<<16|(opus_uint32)_data[0]<<24;
+}
+
+int opus_head_parse(OpusHead *_head,const unsigned char *_data,size_t _len){
+ OpusHead head;
+ if(_len<8)return OP_ENOTFORMAT;
+ if(memcmp(_data,"OpusHead",8)!=0)return OP_ENOTFORMAT;
+ if(_len<9)return OP_EBADHEADER;
+ head.version=_data[8];
+ if(head.version>15)return OP_EVERSION;
+ if(_len<19)return OP_EBADHEADER;
+ head.channel_count=_data[9];
+ head.pre_skip=op_parse_uint16le(_data+10);
+ head.input_sample_rate=op_parse_uint32le(_data+12);
+ head.output_gain=op_parse_int16le(_data+16);
+ head.mapping_family=_data[18];
+ if(head.mapping_family==0){
+ if(head.channel_count<1||head.channel_count>2)return OP_EBADHEADER;
+ if(head.version<=1&&_len>19)return OP_EBADHEADER;
+ head.stream_count=1;
+ head.coupled_count=head.channel_count-1;
+ if(_head!=NULL){
+ _head->mapping[0]=0;
+ _head->mapping[1]=1;
+ }
+ }
+ else if(head.mapping_family==1){
+ size_t size;
+ int ci;
+ if(head.channel_count<1||head.channel_count>8)return OP_EBADHEADER;
+ size=21+head.channel_count;
+ if(_len<size||head.version<=1&&_len>size)return OP_EBADHEADER;
+ head.stream_count=_data[19];
+ if(head.stream_count<1)return OP_EBADHEADER;
+ head.coupled_count=_data[20];
+ if(head.coupled_count>head.stream_count)return OP_EBADHEADER;
+ for(ci=0;ci<head.channel_count;ci++){
+ if(_data[21+ci]>=head.stream_count+head.coupled_count
+ &&_data[21+ci]!=255){
+ return OP_EBADHEADER;
+ }
+ }
+ if(_head!=NULL)memcpy(_head->mapping,_data+21,head.channel_count);
+ }
+ /*General purpose players should not attempt to play back content with
+ channel mapping family 255.*/
+ else if(head.mapping_family==255)return OP_EIMPL;
+ /*No other channel mapping families are currently defined.*/
+ else return OP_EBADHEADER;
+ if(_head!=NULL)memcpy(_head,&head,head.mapping-(unsigned char *)&head);
+ return 0;
+}
+
+void opus_tags_init(OpusTags *_tags){
+ memset(_tags,0,sizeof(*_tags));
+}
+
+void opus_tags_clear(OpusTags *_tags){
+ int ncomments;
+ int ci;
+ ncomments=_tags->comments;
+ if(_tags->user_comments!=NULL)ncomments++;
+ for(ci=ncomments;ci-->0;)_ogg_free(_tags->user_comments[ci]);
+ _ogg_free(_tags->user_comments);
+ _ogg_free(_tags->comment_lengths);
+ _ogg_free(_tags->vendor);
+}
+
+/*Ensure there's room for up to _ncomments comments.*/
+static int op_tags_ensure_capacity(OpusTags *_tags,size_t _ncomments){
+ char **user_comments;
+ int *comment_lengths;
+ int cur_ncomments;
+ size_t size;
+ if(OP_UNLIKELY(_ncomments>=(size_t)INT_MAX))return OP_EFAULT;
+ size=sizeof(*_tags->comment_lengths)*(_ncomments+1);
+ if(size/sizeof(*_tags->comment_lengths)!=_ncomments+1)return OP_EFAULT;
+ cur_ncomments=_tags->comments;
+ /*We only support growing.
+ Trimming requires cleaning up the allocated strings in the old space, and
+ is best handled separately if it's ever needed.*/
+ OP_ASSERT(_ncomments>=(size_t)cur_ncomments);
+ comment_lengths=(int *)_ogg_realloc(_tags->comment_lengths,size);
+ if(OP_UNLIKELY(comment_lengths==NULL))return OP_EFAULT;
+ if(_tags->comment_lengths==NULL){
+ OP_ASSERT(cur_ncomments==0);
+ comment_lengths[cur_ncomments]=0;
+ }
+ comment_lengths[_ncomments]=comment_lengths[cur_ncomments];
+ _tags->comment_lengths=comment_lengths;
+ size=sizeof(*_tags->user_comments)*(_ncomments+1);
+ if(size/sizeof(*_tags->user_comments)!=_ncomments+1)return OP_EFAULT;
+ user_comments=(char **)_ogg_realloc(_tags->user_comments,size);
+ if(OP_UNLIKELY(user_comments==NULL))return OP_EFAULT;
+ if(_tags->user_comments==NULL){
+ OP_ASSERT(cur_ncomments==0);
+ user_comments[cur_ncomments]=NULL;
+ }
+ user_comments[_ncomments]=user_comments[cur_ncomments];
+ _tags->user_comments=user_comments;
+ return 0;
+}
+
+/*Duplicate a (possibly non-NUL terminated) string with a known length.*/
+static char *op_strdup_with_len(const char *_s,size_t _len){
+ size_t size;
+ char *ret;
+ size=sizeof(*ret)*(_len+1);
+ if(OP_UNLIKELY(size<_len))return NULL;
+ ret=(char *)_ogg_malloc(size);
+ if(OP_LIKELY(ret!=NULL)){
+ ret=(char *)memcpy(ret,_s,sizeof(*ret)*_len);
+ ret[_len]='\0';
+ }
+ return ret;
+}
+
+/*The actual implementation of opus_tags_parse().
+ Unlike the public API, this function requires _tags to already be
+ initialized, modifies its contents before success is guaranteed, and assumes
+ the caller will clear it on error.*/
+static int opus_tags_parse_impl(OpusTags *_tags,
+ const unsigned char *_data,size_t _len){
+ opus_uint32 count;
+ size_t len;
+ int ncomments;
+ int ci;
+ len=_len;
+ if(len<8)return OP_ENOTFORMAT;
+ if(memcmp(_data,"OpusTags",8)!=0)return OP_ENOTFORMAT;
+ if(len<16)return OP_EBADHEADER;
+ _data+=8;
+ len-=8;
+ count=op_parse_uint32le(_data);
+ _data+=4;
+ len-=4;
+ if(count>len)return OP_EBADHEADER;
+ if(_tags!=NULL){
+ _tags->vendor=op_strdup_with_len((char *)_data,count);
+ if(_tags->vendor==NULL)return OP_EFAULT;
+ }
+ _data+=count;
+ len-=count;
+ if(len<4)return OP_EBADHEADER;
+ count=op_parse_uint32le(_data);
+ _data+=4;
+ len-=4;
+ /*Check to make sure there's minimally sufficient data left in the packet.*/
+ if(count>len>>2)return OP_EBADHEADER;
+ /*Check for overflow (the API limits this to an int).*/
+ if(count>(opus_uint32)INT_MAX-1)return OP_EFAULT;
+ if(_tags!=NULL){
+ int ret;
+ ret=op_tags_ensure_capacity(_tags,count);
+ if(ret<0)return ret;
+ }
+ ncomments=(int)count;
+ for(ci=0;ci<ncomments;ci++){
+ /*Check to make sure there's minimally sufficient data left in the packet.*/
+ if((size_t)(ncomments-ci)>len>>2)return OP_EBADHEADER;
+ count=op_parse_uint32le(_data);
+ _data+=4;
+ len-=4;
+ if(count>len)return OP_EBADHEADER;
+ /*Check for overflow (the API limits this to an int).*/
+ if(count>(opus_uint32)INT_MAX)return OP_EFAULT;
+ if(_tags!=NULL){
+ _tags->user_comments[ci]=op_strdup_with_len((char *)_data,count);
+ if(_tags->user_comments[ci]==NULL)return OP_EFAULT;
+ _tags->comment_lengths[ci]=(int)count;
+ _tags->comments=ci+1;
+ /*Needed by opus_tags_clear() if we fail before parsing the (optional)
+ binary metadata.*/
+ _tags->user_comments[ci+1]=NULL;
+ }
+ _data+=count;
+ len-=count;
+ }
+ if(len>0&&(_data[0]&1)){
+ if(len>(opus_uint32)INT_MAX)return OP_EFAULT;
+ if(_tags!=NULL){
+ _tags->user_comments[ncomments]=(char *)_ogg_malloc(len);
+ if(OP_UNLIKELY(_tags->user_comments[ncomments]==NULL))return OP_EFAULT;
+ memcpy(_tags->user_comments[ncomments],_data,len);
+ _tags->comment_lengths[ncomments]=(int)len;
+ }
+ }
+ return 0;
+}
+
+int opus_tags_parse(OpusTags *_tags,const unsigned char *_data,size_t _len){
+ if(_tags!=NULL){
+ OpusTags tags;
+ int ret;
+ opus_tags_init(&tags);
+ ret=opus_tags_parse_impl(&tags,_data,_len);
+ if(ret<0)opus_tags_clear(&tags);
+ else *_tags=*&tags;
+ return ret;
+ }
+ else return opus_tags_parse_impl(NULL,_data,_len);
+}
+
+/*The actual implementation of opus_tags_copy().
+ Unlike the public API, this function requires _dst to already be
+ initialized, modifies its contents before success is guaranteed, and assumes
+ the caller will clear it on error.*/
+static int opus_tags_copy_impl(OpusTags *_dst,const OpusTags *_src){
+ char *vendor;
+ int ncomments;
+ int ret;
+ int ci;
+ vendor=_src->vendor;
+ _dst->vendor=op_strdup_with_len(vendor,strlen(vendor));
+ if(OP_UNLIKELY(_dst->vendor==NULL))return OP_EFAULT;
+ ncomments=_src->comments;
+ ret=op_tags_ensure_capacity(_dst,ncomments);
+ if(OP_UNLIKELY(ret<0))return ret;
+ for(ci=0;ci<ncomments;ci++){
+ int len;
+ len=_src->comment_lengths[ci];
+ OP_ASSERT(len>=0);
+ _dst->user_comments[ci]=op_strdup_with_len(_src->user_comments[ci],len);
+ if(OP_UNLIKELY(_dst->user_comments[ci]==NULL))return OP_EFAULT;
+ _dst->comment_lengths[ci]=len;
+ _dst->comments=ci+1;
+ }
+ if(_src->comment_lengths!=NULL){
+ int len;
+ len=_src->comment_lengths[ncomments];
+ if(len>0){
+ _dst->user_comments[ncomments]=(char *)_ogg_malloc(len);
+ if(OP_UNLIKELY(_dst->user_comments[ncomments]==NULL))return OP_EFAULT;
+ memcpy(_dst->user_comments[ncomments],_src->user_comments[ncomments],len);
+ _dst->comment_lengths[ncomments]=len;
+ }
+ }
+ return 0;
+}
+
+int opus_tags_copy(OpusTags *_dst,const OpusTags *_src){
+ OpusTags dst;
+ int ret;
+ opus_tags_init(&dst);
+ ret=opus_tags_copy_impl(&dst,_src);
+ if(OP_UNLIKELY(ret<0))opus_tags_clear(&dst);
+ else *_dst=*&dst;
+ return ret;
+}
+
+int opus_tags_add(OpusTags *_tags,const char *_tag,const char *_value){
+ char *comment;
+ size_t tag_len;
+ size_t value_len;
+ int ncomments;
+ int ret;
+ ncomments=_tags->comments;
+ ret=op_tags_ensure_capacity(_tags,ncomments+1);
+ if(OP_UNLIKELY(ret<0))return ret;
+ tag_len=strlen(_tag);
+ value_len=strlen(_value);
+ /*+2 for '=' and '\0'.*/
+ if(tag_len+value_len<tag_len)return OP_EFAULT;
+ if(tag_len+value_len>(size_t)INT_MAX-2)return OP_EFAULT;
+ comment=(char *)_ogg_malloc(sizeof(*comment)*(tag_len+value_len+2));
+ if(OP_UNLIKELY(comment==NULL))return OP_EFAULT;
+ memcpy(comment,_tag,sizeof(*comment)*tag_len);
+ comment[tag_len]='=';
+ memcpy(comment+tag_len+1,_value,sizeof(*comment)*(value_len+1));
+ _tags->user_comments[ncomments]=comment;
+ _tags->comment_lengths[ncomments]=(int)(tag_len+value_len+1);
+ _tags->comments=ncomments+1;
+ return 0;
+}
+
+int opus_tags_add_comment(OpusTags *_tags,const char *_comment){
+ char *comment;
+ int comment_len;
+ int ncomments;
+ int ret;
+ ncomments=_tags->comments;
+ ret=op_tags_ensure_capacity(_tags,ncomments+1);
+ if(OP_UNLIKELY(ret<0))return ret;
+ comment_len=(int)strlen(_comment);
+ comment=op_strdup_with_len(_comment,comment_len);
+ if(OP_UNLIKELY(comment==NULL))return OP_EFAULT;
+ _tags->user_comments[ncomments]=comment;
+ _tags->comment_lengths[ncomments]=comment_len;
+ _tags->comments=ncomments+1;
+ return 0;
+}
+
+int opus_tags_set_binary_suffix(OpusTags *_tags,
+ const unsigned char *_data,int _len){
+ unsigned char *binary_suffix_data;
+ int ncomments;
+ int ret;
+ if(_len<0||_len>0&&(_data==NULL||!(_data[0]&1)))return OP_EINVAL;
+ ncomments=_tags->comments;
+ ret=op_tags_ensure_capacity(_tags,ncomments);
+ if(OP_UNLIKELY(ret<0))return ret;
+ binary_suffix_data=
+ (unsigned char *)_ogg_realloc(_tags->user_comments[ncomments],_len);
+ if(OP_UNLIKELY(binary_suffix_data==NULL))return OP_EFAULT;
+ memcpy(binary_suffix_data,_data,_len);
+ _tags->user_comments[ncomments]=(char *)binary_suffix_data;
+ _tags->comment_lengths[ncomments]=_len;
+ return 0;
+}
+
+int opus_tagcompare(const char *_tag_name,const char *_comment){
+ size_t tag_len;
+ tag_len=strlen(_tag_name);
+ if(OP_UNLIKELY(tag_len>(size_t)INT_MAX))return -1;
+ return opus_tagncompare(_tag_name,(int)tag_len,_comment);
+}
+
+int opus_tagncompare(const char *_tag_name,int _tag_len,const char *_comment){
+ int ret;
+ OP_ASSERT(_tag_len>=0);
+ ret=op_strncasecmp(_tag_name,_comment,_tag_len);
+ return ret?ret:'='-_comment[_tag_len];
+}
+
+const char *opus_tags_query(const OpusTags *_tags,const char *_tag,int _count){
+ char **user_comments;
+ size_t tag_len;
+ int found;
+ int ncomments;
+ int ci;
+ tag_len=strlen(_tag);
+ if(OP_UNLIKELY(tag_len>(size_t)INT_MAX))return NULL;
+ ncomments=_tags->comments;
+ user_comments=_tags->user_comments;
+ found=0;
+ for(ci=0;ci<ncomments;ci++){
+ if(!opus_tagncompare(_tag,(int)tag_len,user_comments[ci])){
+ /*We return a pointer to the data, not a copy.*/
+ if(_count==found++)return user_comments[ci]+tag_len+1;
+ }
+ }
+ /*Didn't find anything.*/
+ return NULL;
+}
+
+int opus_tags_query_count(const OpusTags *_tags,const char *_tag){
+ char **user_comments;
+ size_t tag_len;
+ int found;
+ int ncomments;
+ int ci;
+ tag_len=strlen(_tag);
+ if(OP_UNLIKELY(tag_len>(size_t)INT_MAX))return 0;
+ ncomments=_tags->comments;
+ user_comments=_tags->user_comments;
+ found=0;
+ for(ci=0;ci<ncomments;ci++){
+ if(!opus_tagncompare(_tag,(int)tag_len,user_comments[ci]))found++;
+ }
+ return found;
+}
+
+const unsigned char *opus_tags_get_binary_suffix(const OpusTags *_tags,
+ int *_len){
+ int ncomments;
+ int len;
+ ncomments=_tags->comments;
+ len=_tags->comment_lengths==NULL?0:_tags->comment_lengths[ncomments];
+ *_len=len;
+ OP_ASSERT(len==0||_tags->user_comments!=NULL);
+ return len>0?(const unsigned char *)_tags->user_comments[ncomments]:NULL;
+}
+
+static int opus_tags_get_gain(const OpusTags *_tags,int *_gain_q8,
+ const char *_tag_name,size_t _tag_len){
+ char **comments;
+ int ncomments;
+ int ci;
+ comments=_tags->user_comments;
+ ncomments=_tags->comments;
+ /*Look for the first valid tag with the name _tag_name and use that.*/
+ for(ci=0;ci<ncomments;ci++){
+ OP_ASSERT(_tag_len<=(size_t)INT_MAX);
+ if(opus_tagncompare(_tag_name,(int)_tag_len,comments[ci])==0){
+ char *p;
+ opus_int32 gain_q8;
+ int negative;
+ p=comments[ci]+_tag_len+1;
+ negative=0;
+ if(*p=='-'){
+ negative=-1;
+ p++;
+ }
+ else if(*p=='+')p++;
+ gain_q8=0;
+ while(*p>='0'&&*p<='9'){
+ gain_q8=10*gain_q8+*p-'0';
+ if(gain_q8>32767-negative)break;
+ p++;
+ }
+ /*This didn't look like a signed 16-bit decimal integer.
+ Not a valid gain tag.*/
+ if(*p!='\0')continue;
+ *_gain_q8=(int)(gain_q8+negative^negative);
+ return 0;
+ }
+ }
+ return OP_FALSE;
+}
+
+int opus_tags_get_album_gain(const OpusTags *_tags,int *_gain_q8){
+ return opus_tags_get_gain(_tags,_gain_q8,"R128_ALBUM_GAIN",15);
+}
+
+int opus_tags_get_track_gain(const OpusTags *_tags,int *_gain_q8){
+ return opus_tags_get_gain(_tags,_gain_q8,"R128_TRACK_GAIN",15);
+}
+
+static int op_is_jpeg(const unsigned char *_buf,size_t _buf_sz){
+ return _buf_sz>=3&&memcmp(_buf,"\xFF\xD8\xFF",3)==0;
+}
+
+/*Tries to extract the width, height, bits per pixel, and palette size of a
+ JPEG.
+ On failure, simply leaves its outputs unmodified.*/
+static void op_extract_jpeg_params(const unsigned char *_buf,size_t _buf_sz,
+ opus_uint32 *_width,opus_uint32 *_height,
+ opus_uint32 *_depth,opus_uint32 *_colors,int *_has_palette){
+ if(op_is_jpeg(_buf,_buf_sz)){
+ size_t offs;
+ offs=2;
+ for(;;){
+ size_t segment_len;
+ int marker;
+ while(offs<_buf_sz&&_buf[offs]!=0xFF)offs++;
+ while(offs<_buf_sz&&_buf[offs]==0xFF)offs++;
+ marker=_buf[offs];
+ offs++;
+ /*If we hit EOI* (end of image), or another SOI* (start of image),
+ or SOS (start of scan), then stop now.*/
+ if(offs>=_buf_sz||(marker>=0xD8&&marker<=0xDA))break;
+ /*RST* (restart markers): skip (no segment length).*/
+ else if(marker>=0xD0&&marker<=0xD7)continue;
+ /*Read the length of the marker segment.*/
+ if(_buf_sz-offs<2)break;
+ segment_len=_buf[offs]<<8|_buf[offs+1];
+ if(segment_len<2||_buf_sz-offs<segment_len)break;
+ if(marker==0xC0||(marker>0xC0&&marker<0xD0&&(marker&3)!=0)){
+ /*Found a SOFn (start of frame) marker segment:*/
+ if(segment_len>=8){
+ *_height=_buf[offs+3]<<8|_buf[offs+4];
+ *_width=_buf[offs+5]<<8|_buf[offs+6];
+ *_depth=_buf[offs+2]*_buf[offs+7];
+ *_colors=0;
+ *_has_palette=0;
+ }
+ break;
+ }
+ /*Other markers: skip the whole marker segment.*/
+ offs+=segment_len;
+ }
+ }
+}
+
+static int op_is_png(const unsigned char *_buf,size_t _buf_sz){
+ return _buf_sz>=8&&memcmp(_buf,"\x89PNG\x0D\x0A\x1A\x0A",8)==0;
+}
+
+/*Tries to extract the width, height, bits per pixel, and palette size of a
+ PNG.
+ On failure, simply leaves its outputs unmodified.*/
+static void op_extract_png_params(const unsigned char *_buf,size_t _buf_sz,
+ opus_uint32 *_width,opus_uint32 *_height,
+ opus_uint32 *_depth,opus_uint32 *_colors,int *_has_palette){
+ if(op_is_png(_buf,_buf_sz)){
+ size_t offs;
+ offs=8;
+ while(_buf_sz-offs>=12){
+ ogg_uint32_t chunk_len;
+ chunk_len=op_parse_uint32be(_buf+offs);
+ if(chunk_len>_buf_sz-(offs+12))break;
+ else if(chunk_len==13&&memcmp(_buf+offs+4,"IHDR",4)==0){
+ int color_type;
+ *_width=op_parse_uint32be(_buf+offs+8);
+ *_height=op_parse_uint32be(_buf+offs+12);
+ color_type=_buf[offs+17];
+ if(color_type==3){
+ *_depth=24;
+ *_has_palette=1;
+ }
+ else{
+ int sample_depth;
+ sample_depth=_buf[offs+16];
+ if(color_type==0)*_depth=sample_depth;
+ else if(color_type==2)*_depth=sample_depth*3;
+ else if(color_type==4)*_depth=sample_depth*2;
+ else if(color_type==6)*_depth=sample_depth*4;
+ *_colors=0;
+ *_has_palette=0;
+ break;
+ }
+ }
+ else if(*_has_palette>0&&memcmp(_buf+offs+4,"PLTE",4)==0){
+ *_colors=chunk_len/3;
+ break;
+ }
+ offs+=12+chunk_len;
+ }
+ }
+}
+
+static int op_is_gif(const unsigned char *_buf,size_t _buf_sz){
+ return _buf_sz>=6&&(memcmp(_buf,"GIF87a",6)==0||memcmp(_buf,"GIF89a",6)==0);
+}
+
+/*Tries to extract the width, height, bits per pixel, and palette size of a
+ GIF.
+ On failure, simply leaves its outputs unmodified.*/
+static void op_extract_gif_params(const unsigned char *_buf,size_t _buf_sz,
+ opus_uint32 *_width,opus_uint32 *_height,
+ opus_uint32 *_depth,opus_uint32 *_colors,int *_has_palette){
+ if(op_is_gif(_buf,_buf_sz)&&_buf_sz>=14){
+ *_width=_buf[6]|_buf[7]<<8;
+ *_height=_buf[8]|_buf[9]<<8;
+ /*libFLAC hard-codes the depth to 24.*/
+ *_depth=24;
+ *_colors=1<<((_buf[10]&7)+1);
+ *_has_palette=1;
+ }
+}
+
+/*The actual implementation of opus_picture_tag_parse().
+ Unlike the public API, this function requires _pic to already be
+ initialized, modifies its contents before success is guaranteed, and assumes
+ the caller will clear it on error.*/
+static int opus_picture_tag_parse_impl(OpusPictureTag *_pic,const char *_tag,
+ unsigned char *_buf,size_t _buf_sz,size_t _base64_sz){
+ opus_int32 picture_type;
+ opus_uint32 mime_type_length;
+ char *mime_type;
+ opus_uint32 description_length;
+ char *description;
+ opus_uint32 width;
+ opus_uint32 height;
+ opus_uint32 depth;
+ opus_uint32 colors;
+ opus_uint32 data_length;
+ opus_uint32 file_width;
+ opus_uint32 file_height;
+ opus_uint32 file_depth;
+ opus_uint32 file_colors;
+ int format;
+ int has_palette;
+ int colors_set;
+ size_t i;
+ /*Decode the BASE64 data.*/
+ for(i=0;i<_base64_sz;i++){
+ opus_uint32 value;
+ int j;
+ value=0;
+ for(j=0;j<4;j++){
+ unsigned c;
+ unsigned d;
+ c=(unsigned char)_tag[4*i+j];
+ if(c=='+')d=62;
+ else if(c=='/')d=63;
+ else if(c>='0'&&c<='9')d=52+c-'0';
+ else if(c>='a'&&c<='z')d=26+c-'a';
+ else if(c>='A'&&c<='Z')d=c-'A';
+ else if(c=='='&&3*i+j>_buf_sz)d=0;
+ else return OP_ENOTFORMAT;
+ value=value<<6|d;
+ }
+ _buf[3*i]=(unsigned char)(value>>16);
+ if(3*i+1<_buf_sz){
+ _buf[3*i+1]=(unsigned char)(value>>8);
+ if(3*i+2<_buf_sz)_buf[3*i+2]=(unsigned char)value;
+ }
+ }
+ i=0;
+ picture_type=op_parse_uint32be(_buf+i);
+ i+=4;
+ /*Extract the MIME type.*/
+ mime_type_length=op_parse_uint32be(_buf+i);
+ i+=4;
+ if(mime_type_length>_buf_sz-32)return OP_ENOTFORMAT;
+ mime_type=(char *)_ogg_malloc(sizeof(*_pic->mime_type)*(mime_type_length+1));
+ if(mime_type==NULL)return OP_EFAULT;
+ memcpy(mime_type,_buf+i,sizeof(*mime_type)*mime_type_length);
+ mime_type[mime_type_length]='\0';
+ _pic->mime_type=mime_type;
+ i+=mime_type_length;
+ /*Extract the description string.*/
+ description_length=op_parse_uint32be(_buf+i);
+ i+=4;
+ if(description_length>_buf_sz-mime_type_length-32)return OP_ENOTFORMAT;
+ description=
+ (char *)_ogg_malloc(sizeof(*_pic->mime_type)*(description_length+1));
+ if(description==NULL)return OP_EFAULT;
+ memcpy(description,_buf+i,sizeof(*description)*description_length);
+ description[description_length]='\0';
+ _pic->description=description;
+ i+=description_length;
+ /*Extract the remaining fields.*/
+ width=op_parse_uint32be(_buf+i);
+ i+=4;
+ height=op_parse_uint32be(_buf+i);
+ i+=4;
+ depth=op_parse_uint32be(_buf+i);
+ i+=4;
+ colors=op_parse_uint32be(_buf+i);
+ i+=4;
+ /*If one of these is set, they all must be, but colors==0 is a valid value.*/
+ colors_set=width!=0||height!=0||depth!=0||colors!=0;
+ if((width==0||height==0||depth==0)&&colors_set)return OP_ENOTFORMAT;
+ data_length=op_parse_uint32be(_buf+i);
+ i+=4;
+ if(data_length>_buf_sz-i)return OP_ENOTFORMAT;
+ /*Trim extraneous data so we don't copy it below.*/
+ _buf_sz=i+data_length;
+ /*Attempt to determine the image format.*/
+ format=OP_PIC_FORMAT_UNKNOWN;
+ if(mime_type_length==3&&strcmp(mime_type,"-->")==0){
+ format=OP_PIC_FORMAT_URL;
+ /*Picture type 1 must be a 32x32 PNG.*/
+ if(picture_type==1&&(width!=0||height!=0)&&(width!=32||height!=32)){
+ return OP_ENOTFORMAT;
+ }
+ /*Append a terminating NUL for the convenience of our callers.*/
+ _buf[_buf_sz++]='\0';
+ }
+ else{
+ if(mime_type_length==10
+ &&op_strncasecmp(mime_type,"image/jpeg",mime_type_length)==0){
+ if(op_is_jpeg(_buf+i,data_length))format=OP_PIC_FORMAT_JPEG;
+ }
+ else if(mime_type_length==9
+ &&op_strncasecmp(mime_type,"image/png",mime_type_length)==0){
+ if(op_is_png(_buf+i,data_length))format=OP_PIC_FORMAT_PNG;
+ }
+ else if(mime_type_length==9
+ &&op_strncasecmp(mime_type,"image/gif",mime_type_length)==0){
+ if(op_is_gif(_buf+i,data_length))format=OP_PIC_FORMAT_GIF;
+ }
+ else if(mime_type_length==0||(mime_type_length==6
+ &&op_strncasecmp(mime_type,"image/",mime_type_length)==0)){
+ if(op_is_jpeg(_buf+i,data_length))format=OP_PIC_FORMAT_JPEG;
+ else if(op_is_png(_buf+i,data_length))format=OP_PIC_FORMAT_PNG;
+ else if(op_is_gif(_buf+i,data_length))format=OP_PIC_FORMAT_GIF;
+ }
+ file_width=file_height=file_depth=file_colors=0;
+ has_palette=-1;
+ switch(format){
+ case OP_PIC_FORMAT_JPEG:{
+ op_extract_jpeg_params(_buf+i,data_length,
+ &file_width,&file_height,&file_depth,&file_colors,&has_palette);
+ }break;
+ case OP_PIC_FORMAT_PNG:{
+ op_extract_png_params(_buf+i,data_length,
+ &file_width,&file_height,&file_depth,&file_colors,&has_palette);
+ }break;
+ case OP_PIC_FORMAT_GIF:{
+ op_extract_gif_params(_buf+i,data_length,
+ &file_width,&file_height,&file_depth,&file_colors,&has_palette);
+ }break;
+ }
+ if(has_palette>=0){
+ /*If we successfully extracted these parameters from the image, override
+ any declared values.*/
+ width=file_width;
+ height=file_height;
+ depth=file_depth;
+ colors=file_colors;
+ }
+ /*Picture type 1 must be a 32x32 PNG.*/
+ if(picture_type==1&&(format!=OP_PIC_FORMAT_PNG||width!=32||height!=32)){
+ return OP_ENOTFORMAT;
+ }
+ }
+ /*Adjust _buf_sz instead of using data_length to capture the terminating NUL
+ for URLs.*/
+ _buf_sz-=i;
+ memmove(_buf,_buf+i,sizeof(*_buf)*_buf_sz);
+ _buf=(unsigned char *)_ogg_realloc(_buf,_buf_sz);
+ if(_buf_sz>0&&_buf==NULL)return OP_EFAULT;
+ _pic->type=picture_type;
+ _pic->width=width;
+ _pic->height=height;
+ _pic->depth=depth;
+ _pic->colors=colors;
+ _pic->data_length=data_length;
+ _pic->data=_buf;
+ _pic->format=format;
+ return 0;
+}
+
+int opus_picture_tag_parse(OpusPictureTag *_pic,const char *_tag){
+ OpusPictureTag pic;
+ unsigned char *buf;
+ size_t base64_sz;
+ size_t buf_sz;
+ size_t tag_length;
+ int ret;
+ if(opus_tagncompare("METADATA_BLOCK_PICTURE",22,_tag)==0)_tag+=23;
+ /*Figure out how much BASE64-encoded data we have.*/
+ tag_length=strlen(_tag);
+ if(tag_length&3)return OP_ENOTFORMAT;
+ base64_sz=tag_length>>2;
+ buf_sz=3*base64_sz;
+ if(buf_sz<32)return OP_ENOTFORMAT;
+ if(_tag[tag_length-1]=='=')buf_sz--;
+ if(_tag[tag_length-2]=='=')buf_sz--;
+ if(buf_sz<32)return OP_ENOTFORMAT;
+ /*Allocate an extra byte to allow appending a terminating NUL to URL data.*/
+ buf=(unsigned char *)_ogg_malloc(sizeof(*buf)*(buf_sz+1));
+ if(buf==NULL)return OP_EFAULT;
+ opus_picture_tag_init(&pic);
+ ret=opus_picture_tag_parse_impl(&pic,_tag,buf,buf_sz,base64_sz);
+ if(ret<0){
+ opus_picture_tag_clear(&pic);
+ _ogg_free(buf);
+ }
+ else *_pic=*&pic;
+ return ret;
+}
+
+void opus_picture_tag_init(OpusPictureTag *_pic){
+ memset(_pic,0,sizeof(*_pic));
+}
+
+void opus_picture_tag_clear(OpusPictureTag *_pic){
+ _ogg_free(_pic->description);
+ _ogg_free(_pic->mime_type);
+ _ogg_free(_pic->data);
+}
diff --git a/opusfile/internal.c b/opusfile/internal.c
new file mode 100644
index 0000000..bd14cf6
--- /dev/null
+++ b/opusfile/internal.c
@@ -0,0 +1,42 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 2012 *
+ * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
+ * *
+ ********************************************************************/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "internal.h"
+
+#if defined(OP_ENABLE_ASSERTIONS)
+void op_fatal_impl(const char *_str,const char *_file,int _line){
+ fprintf(stderr,"Fatal (internal) error in %s, line %i: %s\n",
+ _file,_line,_str);
+ abort();
+}
+#endif
+
+/*A version of strncasecmp() that is guaranteed to only ignore the case of
+ ASCII characters.*/
+int op_strncasecmp(const char *_a,const char *_b,int _n){
+ int i;
+ for(i=0;i<_n;i++){
+ int a;
+ int b;
+ int d;
+ a=_a[i];
+ b=_b[i];
+ if(a>='a'&&a<='z')a-='a'-'A';
+ if(b>='a'&&b<='z')b-='a'-'A';
+ d=a-b;
+ if(d)return d;
+ }
+ return 0;
+} \ No newline at end of file
diff --git a/opusfile/internal.h b/opusfile/internal.h
new file mode 100644
index 0000000..bb77fe1
--- /dev/null
+++ b/opusfile/internal.h
@@ -0,0 +1,259 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 2012 *
+ * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
+ * *
+ ********************************************************************/
+#if !defined(_opusfile_internal_h)
+# define _opusfile_internal_h (1)
+
+# if !defined(_REENTRANT)
+# define _REENTRANT
+# endif
+# if !defined(_GNU_SOURCE)
+# define _GNU_SOURCE
+# endif
+# if !defined(_LARGEFILE_SOURCE)
+# define _LARGEFILE_SOURCE
+# endif
+# if !defined(_LARGEFILE64_SOURCE)
+# define _LARGEFILE64_SOURCE
+# endif
+# if !defined(_FILE_OFFSET_BITS)
+# define _FILE_OFFSET_BITS 64
+# endif
+
+# include <stdlib.h>
+# include "opusfile.h"
+
+typedef struct OggOpusLink OggOpusLink;
+
+# if defined(OP_FIXED_POINT)
+
+typedef opus_int16 op_sample;
+
+# else
+
+typedef float op_sample;
+
+/*We're using this define to test for libopus 1.1 or later until libopus
+ provides a better mechanism.*/
+# if defined(OPUS_GET_EXPERT_FRAME_DURATION_REQUEST)
+/*Enable soft clipping prevention in 16-bit decodes.*/
+# define OP_SOFT_CLIP (1)
+# endif
+
+# endif
+
+# if OP_GNUC_PREREQ(4,2)
+/*Disable excessive warnings about the order of operations.*/
+# pragma GCC diagnostic ignored "-Wparentheses"
+# elif defined(_MSC_VER)
+/*Disable excessive warnings about the order of operations.*/
+# pragma warning(disable:4554)
+/*Disable warnings about "deprecated" POSIX functions.*/
+# pragma warning(disable:4996)
+# endif
+
+# if OP_GNUC_PREREQ(3,0)
+/*Another alternative is
+ (__builtin_constant_p(_x)?!!(_x):__builtin_expect(!!(_x),1))
+ but that evaluates _x multiple times, which may be bad.*/
+# define OP_LIKELY(_x) (__builtin_expect(!!(_x),1))
+# define OP_UNLIKELY(_x) (__builtin_expect(!!(_x),0))
+# else
+# define OP_LIKELY(_x) (!!(_x))
+# define OP_UNLIKELY(_x) (!!(_x))
+# endif
+
+# if defined(OP_ENABLE_ASSERTIONS)
+# if OP_GNUC_PREREQ(2,5)||__SUNPRO_C>=0x590
+__attribute__((noreturn))
+# endif
+void op_fatal_impl(const char *_str,const char *_file,int _line);
+
+# define OP_FATAL(_str) (op_fatal_impl(_str,__FILE__,__LINE__))
+
+# define OP_ASSERT(_cond) \
+ do{ \
+ if(OP_UNLIKELY(!(_cond)))OP_FATAL("assertion failed: " #_cond); \
+ } \
+ while(0)
+# define OP_ALWAYS_TRUE(_cond) OP_ASSERT(_cond)
+
+# else
+# define OP_FATAL(_str) abort()
+# define OP_ASSERT(_cond)
+# define OP_ALWAYS_TRUE(_cond) ((void)(_cond))
+# endif
+
+# define OP_INT64_MAX (2*(((ogg_int64_t)1<<62)-1)|1)
+# define OP_INT64_MIN (-OP_INT64_MAX-1)
+# define OP_INT32_MAX (2*(((ogg_int32_t)1<<30)-1)|1)
+# define OP_INT32_MIN (-OP_INT32_MAX-1)
+
+# define OP_MIN(_a,_b) ((_a)<(_b)?(_a):(_b))
+# define OP_MAX(_a,_b) ((_a)>(_b)?(_a):(_b))
+# define OP_CLAMP(_lo,_x,_hi) (OP_MAX(_lo,OP_MIN(_x,_hi)))
+
+/*Advance a file offset by the given amount, clamping against OP_INT64_MAX.
+ This is used to advance a known offset by things like OP_CHUNK_SIZE or
+ OP_PAGE_SIZE_MAX, while making sure to avoid signed overflow.
+ It assumes that both _offset and _amount are non-negative.*/
+#define OP_ADV_OFFSET(_offset,_amount) \
+ (OP_MIN(_offset,OP_INT64_MAX-(_amount))+(_amount))
+
+/*The maximum channel count for any mapping we'll actually decode.*/
+# define OP_NCHANNELS_MAX (8)
+
+/*Initial state.*/
+# define OP_NOTOPEN (0)
+/*We've found the first Opus stream in the first link.*/
+# define OP_PARTOPEN (1)
+# define OP_OPENED (2)
+/*We've found the first Opus stream in the current link.*/
+# define OP_STREAMSET (3)
+/*We've initialized the decoder for the chosen Opus stream in the current
+ link.*/
+# define OP_INITSET (4)
+
+/*Information cached for a single link in a chained Ogg Opus file.
+ We choose the first Opus stream encountered in each link to play back (and
+ require at least one).*/
+struct OggOpusLink{
+ /*The byte offset of the first header page in this link.*/
+ opus_int64 offset;
+ /*The byte offset of the first data page from the chosen Opus stream in this
+ link (after the headers).*/
+ opus_int64 data_offset;
+ /*The byte offset of the last page from the chosen Opus stream in this link.
+ This is used when seeking to ensure we find a page before the last one, so
+ that end-trimming calculations work properly.
+ This is only valid for seekable sources.*/
+ opus_int64 end_offset;
+ /*The total duration of all prior links.
+ This is always zero for non-seekable sources.*/
+ ogg_int64_t pcm_file_offset;
+ /*The granule position of the last sample.
+ This is only valid for seekable sources.*/
+ ogg_int64_t pcm_end;
+ /*The granule position before the first sample.*/
+ ogg_int64_t pcm_start;
+ /*The serial number.*/
+ ogg_uint32_t serialno;
+ /*The contents of the info header.*/
+ OpusHead head;
+ /*The contents of the comment header.*/
+ OpusTags tags;
+};
+
+struct OggOpusFile{
+ /*The callbacks used to access the stream.*/
+ OpusFileCallbacks callbacks;
+ /*A FILE *, memory buffer, etc.*/
+ void *stream;
+ /*Whether or not we can seek with this stream.*/
+ int seekable;
+ /*The number of links in this chained Ogg Opus file.*/
+ int nlinks;
+ /*The cached information from each link in a chained Ogg Opus file.
+ If stream isn't seekable (e.g., it's a pipe), only the current link
+ appears.*/
+ OggOpusLink *links;
+ /*The number of serial numbers from a single link.*/
+ int nserialnos;
+ /*The capacity of the list of serial numbers from a single link.*/
+ int cserialnos;
+ /*Storage for the list of serial numbers from a single link.
+ This is a scratch buffer used when scanning the BOS pages at the start of
+ each link.*/
+ ogg_uint32_t *serialnos;
+ /*This is the current offset of the data processed by the ogg_sync_state.
+ After a seek, this should be set to the target offset so that we can track
+ the byte offsets of subsequent pages.
+ After a call to op_get_next_page(), this will point to the first byte after
+ that page.*/
+ opus_int64 offset;
+ /*The total size of this stream, or -1 if it's unseekable.*/
+ opus_int64 end;
+ /*Used to locate pages in the stream.*/
+ ogg_sync_state oy;
+ /*One of OP_NOTOPEN, OP_PARTOPEN, OP_OPENED, OP_STREAMSET, OP_INITSET.*/
+ int ready_state;
+ /*The current link being played back.*/
+ int cur_link;
+ /*The number of decoded samples to discard from the start of decoding.*/
+ opus_int32 cur_discard_count;
+ /*The granule position of the previous packet (current packet start time).*/
+ ogg_int64_t prev_packet_gp;
+ /*The stream offset of the most recent page with completed packets, or -1.
+ This is only needed to recover continued packet data in the seeking logic,
+ when we use the current position as one of our bounds, only to later
+ discover it was the correct starting point.*/
+ opus_int64 prev_page_offset;
+ /*The number of bytes read since the last bitrate query, including framing.*/
+ opus_int64 bytes_tracked;
+ /*The number of samples decoded since the last bitrate query.*/
+ ogg_int64_t samples_tracked;
+ /*Takes physical pages and welds them into a logical stream of packets.*/
+ ogg_stream_state os;
+ /*Re-timestamped packets from a single page.
+ Buffering these relies on the undocumented libogg behavior that ogg_packet
+ pointers remain valid until the next page is submitted to the
+ ogg_stream_state they came from.*/
+ ogg_packet op[255];
+ /*The index of the next packet to return.*/
+ int op_pos;
+ /*The total number of packets available.*/
+ int op_count;
+ /*Central working state for the packet-to-PCM decoder.*/
+ OpusMSDecoder *od;
+ /*The application-provided packet decode callback.*/
+ op_decode_cb_func decode_cb;
+ /*The application-provided packet decode callback context.*/
+ void *decode_cb_ctx;
+ /*The stream count used to initialize the decoder.*/
+ int od_stream_count;
+ /*The coupled stream count used to initialize the decoder.*/
+ int od_coupled_count;
+ /*The channel count used to initialize the decoder.*/
+ int od_channel_count;
+ /*The channel mapping used to initialize the decoder.*/
+ unsigned char od_mapping[OP_NCHANNELS_MAX];
+ /*The buffered data for one decoded packet.*/
+ op_sample *od_buffer;
+ /*The current position in the decoded buffer.*/
+ int od_buffer_pos;
+ /*The number of valid samples in the decoded buffer.*/
+ int od_buffer_size;
+ /*The type of gain offset to apply.
+ One of OP_HEADER_GAIN, OP_ALBUM_GAIN, OP_TRACK_GAIN, or OP_ABSOLUTE_GAIN.*/
+ int gain_type;
+ /*The offset to apply to the gain.*/
+ opus_int32 gain_offset_q8;
+ /*Internal state for soft clipping and dithering float->short output.*/
+#if !defined(OP_FIXED_POINT)
+# if defined(OP_SOFT_CLIP)
+ float clip_state[OP_NCHANNELS_MAX];
+# endif
+ float dither_a[OP_NCHANNELS_MAX*4];
+ float dither_b[OP_NCHANNELS_MAX*4];
+ opus_uint32 dither_seed;
+ int dither_mute;
+ int dither_disabled;
+ /*The number of channels represented by the internal state.
+ This gets set to 0 whenever anything that would prevent state propagation
+ occurs (switching between the float/short APIs, or between the
+ stereo/multistream APIs).*/
+ int state_channel_count;
+#endif
+};
+
+int op_strncasecmp(const char *_a,const char *_b,int _n);
+
+#endif
diff --git a/opusfile/opusfile.c b/opusfile/opusfile.c
new file mode 100644
index 0000000..3894ffd
--- /dev/null
+++ b/opusfile/opusfile.c
@@ -0,0 +1,3326 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 1994-2012 *
+ * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: stdio-based convenience library for opening/seeking/decoding
+ last mod: $Id: vorbisfile.c 17573 2010-10-27 14:53:59Z xiphmont $
+
+ ********************************************************************/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "internal.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <limits.h>
+#include <string.h>
+#include <math.h>
+
+#include "opusfile.h"
+
+/*This implementation is largely based off of libvorbisfile.
+ All of the Ogg bits work roughly the same, though I have made some
+ "improvements" that have not been folded back there, yet.*/
+
+/*A 'chained bitstream' is an Ogg Opus bitstream that contains more than one
+ logical bitstream arranged end to end (the only form of Ogg multiplexing
+ supported by this library.
+ Grouping (parallel multiplexing) is not supported, except to the extent that
+ if there are multiple logical Ogg streams in a single link of the chain, we
+ will ignore all but the first Opus stream we find.*/
+
+/*An Ogg Opus file can be played beginning to end (streamed) without worrying
+ ahead of time about chaining (see opusdec from the opus-tools package).
+ If we have the whole file, however, and want random access
+ (seeking/scrubbing) or desire to know the total length/time of a file, we
+ need to account for the possibility of chaining.*/
+
+/*We can handle things a number of ways.
+ We can determine the entire bitstream structure right off the bat, or find
+ pieces on demand.
+ This library determines and caches structure for the entire bitstream, but
+ builds a virtual decoder on the fly when moving between links in the chain.*/
+
+/*There are also different ways to implement seeking.
+ Enough information exists in an Ogg bitstream to seek to sample-granularity
+ positions in the output.
+ Or, one can seek by picking some portion of the stream roughly in the desired
+ area if we only want coarse navigation through the stream.
+ We implement and expose both strategies.*/
+
+/*The maximum number of bytes in a page (including the page headers).*/
+#define OP_PAGE_SIZE_MAX (65307)
+/*The default amount to seek backwards per step when trying to find the
+ previous page.
+ This must be at least as large as the maximum size of a page.*/
+#define OP_CHUNK_SIZE (65536)
+/*The maximum amount to seek backwards per step when trying to find the
+ previous page.*/
+#define OP_CHUNK_SIZE_MAX (1024*(opus_int32)1024)
+/*A smaller read size is needed for low-rate streaming.*/
+#define OP_READ_SIZE (2048)
+
+int op_test(OpusHead *_head,
+ const unsigned char *_initial_data,size_t _initial_bytes){
+ ogg_sync_state oy;
+ char *data;
+ int err;
+ /*The first page of a normal Opus file will be at most 57 bytes (27 Ogg
+ page header bytes + 1 lacing value + 21 Opus header bytes + 8 channel
+ mapping bytes).
+ It will be at least 47 bytes (27 Ogg page header bytes + 1 lacing value +
+ 19 Opus header bytes using channel mapping family 0).
+ If we don't have at least that much data, give up now.*/
+ if(_initial_bytes<47)return OP_FALSE;
+ /*Only proceed if we start with the magic OggS string.
+ This is to prevent us spending a lot of time allocating memory and looking
+ for Ogg pages in non-Ogg files.*/
+ if(memcmp(_initial_data,"OggS",4)!=0)return OP_ENOTFORMAT;
+ if(OP_UNLIKELY(_initial_bytes>(size_t)LONG_MAX))return OP_EFAULT;
+ ogg_sync_init(&oy);
+ data=ogg_sync_buffer(&oy,(long)_initial_bytes);
+ if(data!=NULL){
+ ogg_stream_state os;
+ ogg_page og;
+ int ret;
+ memcpy(data,_initial_data,_initial_bytes);
+ ogg_sync_wrote(&oy,(long)_initial_bytes);
+ ogg_stream_init(&os,-1);
+ err=OP_FALSE;
+ do{
+ ogg_packet op;
+ ret=ogg_sync_pageout(&oy,&og);
+ /*Ignore holes.*/
+ if(ret<0)continue;
+ /*Stop if we run out of data.*/
+ if(!ret)break;
+ ogg_stream_reset_serialno(&os,ogg_page_serialno(&og));
+ ogg_stream_pagein(&os,&og);
+ /*Only process the first packet on this page (if it's a BOS packet,
+ it's required to be the only one).*/
+ if(ogg_stream_packetout(&os,&op)==1){
+ if(op.b_o_s){
+ ret=opus_head_parse(_head,op.packet,op.bytes);
+ /*If this didn't look like Opus, keep going.*/
+ if(ret==OP_ENOTFORMAT)continue;
+ /*Otherwise we're done, one way or another.*/
+ err=ret;
+ }
+ /*We finished parsing the headers.
+ There is no Opus to be found.*/
+ else err=OP_ENOTFORMAT;
+ }
+ }
+ while(err==OP_FALSE);
+ ogg_stream_clear(&os);
+ }
+ else err=OP_EFAULT;
+ ogg_sync_clear(&oy);
+ return err;
+}
+
+/*Many, many internal helpers.
+ The intention is not to be confusing.
+ Rampant duplication and monolithic function implementation (though we do have
+ some large, omnibus functions still) would be harder to understand anyway.
+ The high level functions are last.
+ Begin grokking near the end of the file if you prefer to read things
+ top-down.*/
+
+/*The read/seek functions track absolute position within the stream.*/
+
+/*Read a little more data from the file/pipe into the ogg_sync framer.
+ _nbytes: The maximum number of bytes to read.
+ Return: A positive number of bytes read on success, 0 on end-of-file, or a
+ negative value on failure.*/
+static int op_get_data(OggOpusFile *_of,int _nbytes){
+ unsigned char *buffer;
+ int nbytes;
+ OP_ASSERT(_nbytes>0);
+ buffer=(unsigned char *)ogg_sync_buffer(&_of->oy,_nbytes);
+ nbytes=(int)(*_of->callbacks.read)(_of->stream,buffer,_nbytes);
+ OP_ASSERT(nbytes<=_nbytes);
+ if(OP_LIKELY(nbytes>0))ogg_sync_wrote(&_of->oy,nbytes);
+ return nbytes;
+}
+
+/*Save a tiny smidge of verbosity to make the code more readable.*/
+static int op_seek_helper(OggOpusFile *_of,opus_int64 _offset){
+ if(_offset==_of->offset)return 0;
+ if(_of->callbacks.seek==NULL
+ ||(*_of->callbacks.seek)(_of->stream,_offset,SEEK_SET)){
+ return OP_EREAD;
+ }
+ _of->offset=_offset;
+ ogg_sync_reset(&_of->oy);
+ return 0;
+}
+
+/*Get the current position indicator of the underlying stream.
+ This should be the same as the value reported by tell().*/
+static opus_int64 op_position(const OggOpusFile *_of){
+ /*The current position indicator is _not_ simply offset.
+ We may also have unprocessed, buffered data in the sync state.*/
+ return _of->offset+_of->oy.fill-_of->oy.returned;
+}
+
+/*From the head of the stream, get the next page.
+ _boundary specifies if the function is allowed to fetch more data from the
+ stream (and how much) or only use internally buffered data.
+ _boundary: -1: Unbounded search.
+ 0: Read no additional data.
+ Use only cached data.
+ n: Search for the start of a new page up to file position n.
+ Return: n>=0: Found a page at absolute offset n.
+ OP_FALSE: Hit the _boundary limit.
+ OP_EREAD: An underlying read operation failed.
+ OP_BADLINK: We hit end-of-file before reaching _boundary.*/
+static opus_int64 op_get_next_page(OggOpusFile *_of,ogg_page *_og,
+ opus_int64 _boundary){
+ while(_boundary<=0||_of->offset<_boundary){
+ int more;
+ more=ogg_sync_pageseek(&_of->oy,_og);
+ /*Skipped (-more) bytes.*/
+ if(OP_UNLIKELY(more<0))_of->offset-=more;
+ else if(more==0){
+ int read_nbytes;
+ int ret;
+ /*Send more paramedics.*/
+ if(!_boundary)return OP_FALSE;
+ if(_boundary<0)read_nbytes=OP_READ_SIZE;
+ else{
+ opus_int64 position;
+ position=op_position(_of);
+ if(position>=_boundary)return OP_FALSE;
+ read_nbytes=(int)OP_MIN(_boundary-position,OP_READ_SIZE);
+ }
+ ret=op_get_data(_of,read_nbytes);
+ if(OP_UNLIKELY(ret<0))return OP_EREAD;
+ if(OP_UNLIKELY(ret==0)){
+ /*Only fail cleanly on EOF if we didn't have a known boundary.
+ Otherwise, we should have been able to reach that boundary, and this
+ is a fatal error.*/
+ return OP_UNLIKELY(_boundary<0)?OP_FALSE:OP_EBADLINK;
+ }
+ }
+ else{
+ /*Got a page.
+ Return the page start offset and advance the internal offset past the
+ page end.*/
+ opus_int64 page_offset;
+ page_offset=_of->offset;
+ _of->offset+=more;
+ OP_ASSERT(page_offset>=0);
+ return page_offset;
+ }
+ }
+ return OP_FALSE;
+}
+
+static int op_add_serialno(const ogg_page *_og,
+ ogg_uint32_t **_serialnos,int *_nserialnos,int *_cserialnos){
+ ogg_uint32_t *serialnos;
+ int nserialnos;
+ int cserialnos;
+ ogg_uint32_t s;
+ s=ogg_page_serialno(_og);
+ serialnos=*_serialnos;
+ nserialnos=*_nserialnos;
+ cserialnos=*_cserialnos;
+ if(OP_UNLIKELY(nserialnos>=cserialnos)){
+ if(OP_UNLIKELY(cserialnos>INT_MAX/(int)sizeof(*serialnos)-1>>1)){
+ return OP_EFAULT;
+ }
+ cserialnos=2*cserialnos+1;
+ OP_ASSERT(nserialnos<cserialnos);
+ serialnos=(ogg_uint32_t *)_ogg_realloc(serialnos,
+ sizeof(*serialnos)*cserialnos);
+ if(OP_UNLIKELY(serialnos==NULL))return OP_EFAULT;
+ }
+ serialnos[nserialnos++]=s;
+ *_serialnos=serialnos;
+ *_nserialnos=nserialnos;
+ *_cserialnos=cserialnos;
+ return 0;
+}
+
+/*Returns nonzero if found.*/
+static int op_lookup_serialno(ogg_uint32_t _s,
+ const ogg_uint32_t *_serialnos,int _nserialnos){
+ int i;
+ for(i=0;i<_nserialnos&&_serialnos[i]!=_s;i++);
+ return i<_nserialnos;
+}
+
+static int op_lookup_page_serialno(const ogg_page *_og,
+ const ogg_uint32_t *_serialnos,int _nserialnos){
+ return op_lookup_serialno(ogg_page_serialno(_og),_serialnos,_nserialnos);
+}
+
+typedef struct OpusSeekRecord OpusSeekRecord;
+
+/*We use this to remember the pages we found while enumerating the links of a
+ chained stream.
+ We keep track of the starting and ending offsets, as well as the point we
+ started searching from, so we know where to bisect.
+ We also keep the serial number, so we can tell if the page belonged to the
+ current link or not, as well as the granule position, to aid in estimating
+ the start of the link.*/
+struct OpusSeekRecord{
+ /*The earliest byte we know of such that reading forward from it causes
+ capture to be regained at this page.*/
+ opus_int64 search_start;
+ /*The offset of this page.*/
+ opus_int64 offset;
+ /*The size of this page.*/
+ opus_int32 size;
+ /*The serial number of this page.*/
+ ogg_uint32_t serialno;
+ /*The granule position of this page.*/
+ ogg_int64_t gp;
+};
+
+/*Find the last page beginning before _offset with a valid granule position.
+ There is no '_boundary' parameter as it will always have to read more data.
+ This is much dirtier than the above, as Ogg doesn't have any backward search
+ linkage.
+ This search prefers pages of the specified serial number.
+ If a page of the specified serial number is spotted during the
+ seek-back-and-read-forward, it will return the info of last page of the
+ matching serial number, instead of the very last page, unless the very last
+ page belongs to a different link than preferred serial number.
+ If no page of the specified serial number is seen, it will return the info of
+ the last page.
+ [out] _sr: Returns information about the page that was found on success.
+ _offset: The _offset before which to find a page.
+ Any page returned will consist of data entirely before _offset.
+ _serialno: The preferred serial number.
+ If a page with this serial number is found, it will be returned
+ even if another page in the same link is found closer to
+ _offset.
+ This is purely opportunistic: there is no guarantee such a page
+ will be found if it exists.
+ _serialnos: The list of serial numbers in the link that contains the
+ preferred serial number.
+ _nserialnos: The number of serial numbers in the current link.
+ Return: 0 on success, or a negative value on failure.
+ OP_EREAD: Failed to read more data (error or EOF).
+ OP_EBADLINK: We couldn't find a page even after seeking back to the
+ start of the stream.*/
+static int op_get_prev_page_serial(OggOpusFile *_of,OpusSeekRecord *_sr,
+ opus_int64 _offset,ogg_uint32_t _serialno,
+ const ogg_uint32_t *_serialnos,int _nserialnos){
+ OpusSeekRecord preferred_sr;
+ ogg_page og;
+ opus_int64 begin;
+ opus_int64 end;
+ opus_int64 original_end;
+ opus_int32 chunk_size;
+ int preferred_found;
+ original_end=end=begin=_offset;
+ preferred_found=0;
+ _offset=-1;
+ chunk_size=OP_CHUNK_SIZE;
+ do{
+ opus_int64 search_start;
+ int ret;
+ OP_ASSERT(chunk_size>=OP_PAGE_SIZE_MAX);
+ begin=OP_MAX(begin-chunk_size,0);
+ ret=op_seek_helper(_of,begin);
+ if(OP_UNLIKELY(ret<0))return ret;
+ search_start=begin;
+ while(_of->offset<end){
+ opus_int64 llret;
+ ogg_uint32_t serialno;
+ llret=op_get_next_page(_of,&og,end);
+ if(OP_UNLIKELY(llret<OP_FALSE))return (int)llret;
+ else if(llret==OP_FALSE)break;
+ serialno=ogg_page_serialno(&og);
+ /*Save the information for this page.
+ We're not interested in the page itself... just the serial number, byte
+ offset, page size, and granule position.*/
+ _sr->search_start=search_start;
+ _sr->offset=_offset=llret;
+ _sr->serialno=serialno;
+ OP_ASSERT(_of->offset-_offset>=0);
+ OP_ASSERT(_of->offset-_offset<=OP_PAGE_SIZE_MAX);
+ _sr->size=(opus_int32)(_of->offset-_offset);
+ _sr->gp=ogg_page_granulepos(&og);
+ /*If this page is from the stream we're looking for, remember it.*/
+ if(serialno==_serialno){
+ preferred_found=1;
+ *&preferred_sr=*_sr;
+ }
+ if(!op_lookup_serialno(serialno,_serialnos,_nserialnos)){
+ /*We fell off the end of the link, which means we seeked back too far
+ and shouldn't have been looking in that link to begin with.
+ If we found the preferred serial number, forget that we saw it.*/
+ preferred_found=0;
+ }
+ search_start=llret+1;
+ }
+ /*We started from the beginning of the stream and found nothing.
+ This should be impossible unless the contents of the stream changed out
+ from under us after we read from it.*/
+ if(OP_UNLIKELY(!begin)&&OP_UNLIKELY(_offset<0))return OP_EBADLINK;
+ /*Bump up the chunk size.
+ This is mildly helpful when seeks are very expensive (http).*/
+ chunk_size=OP_MIN(2*chunk_size,OP_CHUNK_SIZE_MAX);
+ /*Avoid quadratic complexity if we hit an invalid patch of the file.*/
+ end=OP_MIN(begin+OP_PAGE_SIZE_MAX-1,original_end);
+ }
+ while(_offset<0);
+ if(preferred_found)*_sr=*&preferred_sr;
+ return 0;
+}
+
+/*Find the last page beginning before _offset with the given serial number and
+ a valid granule position.
+ Unlike the above search, this continues until it finds such a page, but does
+ not stray outside the current link.
+ We could implement it (inefficiently) by calling op_get_prev_page_serial()
+ repeatedly until it returned a page that had both our preferred serial
+ number and a valid granule position, but doing it with a separate function
+ allows us to avoid repeatedly re-scanning valid pages from other streams as
+ we seek-back-and-read-forward.
+ [out] _gp: Returns the granule position of the page that was found on
+ success.
+ _offset: The _offset before which to find a page.
+ Any page returned will consist of data entirely before _offset.
+ _serialno: The target serial number.
+ _serialnos: The list of serial numbers in the link that contains the
+ preferred serial number.
+ _nserialnos: The number of serial numbers in the current link.
+ Return: The offset of the page on success, or a negative value on failure.
+ OP_EREAD: Failed to read more data (error or EOF).
+ OP_EBADLINK: We couldn't find a page even after seeking back past the
+ beginning of the link.*/
+static opus_int64 op_get_last_page(OggOpusFile *_of,ogg_int64_t *_gp,
+ opus_int64 _offset,ogg_uint32_t _serialno,
+ const ogg_uint32_t *_serialnos,int _nserialnos){
+ ogg_page og;
+ ogg_int64_t gp;
+ opus_int64 begin;
+ opus_int64 end;
+ opus_int64 original_end;
+ opus_int32 chunk_size;
+ /*The target serial number must belong to the current link.*/
+ OP_ASSERT(op_lookup_serialno(_serialno,_serialnos,_nserialnos));
+ original_end=end=begin=_offset;
+ _offset=-1;
+ /*We shouldn't have to initialize gp, but gcc is too dumb to figure out that
+ ret>=0 implies we entered the if(page_gp!=-1) block at least once.*/
+ gp=-1;
+ chunk_size=OP_CHUNK_SIZE;
+ do{
+ int left_link;
+ int ret;
+ OP_ASSERT(chunk_size>=OP_PAGE_SIZE_MAX);
+ begin=OP_MAX(begin-chunk_size,0);
+ ret=op_seek_helper(_of,begin);
+ if(OP_UNLIKELY(ret<0))return ret;
+ left_link=0;
+ while(_of->offset<end){
+ opus_int64 llret;
+ ogg_uint32_t serialno;
+ llret=op_get_next_page(_of,&og,end);
+ if(OP_UNLIKELY(llret<OP_FALSE))return llret;
+ else if(llret==OP_FALSE)break;
+ serialno=ogg_page_serialno(&og);
+ if(serialno==_serialno){
+ ogg_int64_t page_gp;
+ /*The page is from the right stream...*/
+ page_gp=ogg_page_granulepos(&og);
+ if(page_gp!=-1){
+ /*And has a valid granule position.
+ Let's remember it.*/
+ _offset=llret;
+ gp=page_gp;
+ }
+ }
+ else if(OP_UNLIKELY(!op_lookup_serialno(serialno,
+ _serialnos,_nserialnos))){
+ /*We fell off the start of the link, which means we don't need to keep
+ seeking any farther back.*/
+ left_link=1;
+ }
+ }
+ /*We started from at or before the beginning of the link and found nothing.
+ This should be impossible unless the contents of the stream changed out
+ from under us after we read from it.*/
+ if((OP_UNLIKELY(left_link)||OP_UNLIKELY(!begin))&&OP_UNLIKELY(_offset<0)){
+ return OP_EBADLINK;
+ }
+ /*Bump up the chunk size.
+ This is mildly helpful when seeks are very expensive (http).*/
+ chunk_size=OP_MIN(2*chunk_size,OP_CHUNK_SIZE_MAX);
+ /*Avoid quadratic complexity if we hit an invalid patch of the file.*/
+ end=OP_MIN(begin+OP_PAGE_SIZE_MAX-1,original_end);
+ }
+ while(_offset<0);
+ *_gp=gp;
+ return _offset;
+}
+
+/*Uses the local ogg_stream storage in _of.
+ This is important for non-streaming input sources.*/
+static int op_fetch_headers_impl(OggOpusFile *_of,OpusHead *_head,
+ OpusTags *_tags,ogg_uint32_t **_serialnos,int *_nserialnos,
+ int *_cserialnos,ogg_page *_og){
+ ogg_packet op;
+ int ret;
+ if(_serialnos!=NULL)*_nserialnos=0;
+ /*Extract the serialnos of all BOS pages plus the first set of Opus headers
+ we see in the link.*/
+ while(ogg_page_bos(_og)){
+ if(_serialnos!=NULL){
+ if(OP_UNLIKELY(op_lookup_page_serialno(_og,*_serialnos,*_nserialnos))){
+ /*A dupe serialnumber in an initial header packet set==invalid stream.*/
+ return OP_EBADHEADER;
+ }
+ ret=op_add_serialno(_og,_serialnos,_nserialnos,_cserialnos);
+ if(OP_UNLIKELY(ret<0))return ret;
+ }
+ if(_of->ready_state<OP_STREAMSET){
+ /*We don't have an Opus stream in this link yet, so begin prospective
+ stream setup.
+ We need a stream to get packets.*/
+ ogg_stream_reset_serialno(&_of->os,ogg_page_serialno(_og));
+ ogg_stream_pagein(&_of->os,_og);
+ if(OP_LIKELY(ogg_stream_packetout(&_of->os,&op)>0)){
+ ret=opus_head_parse(_head,op.packet,op.bytes);
+ /*Found a valid Opus header.
+ Continue setup.*/
+ if(OP_LIKELY(ret>=0))_of->ready_state=OP_STREAMSET;
+ /*If it's just a stream type we don't recognize, ignore it.
+ Everything else is fatal.*/
+ else if(ret!=OP_ENOTFORMAT)return ret;
+ }
+ /*TODO: Should a BOS page with no packets be an error?*/
+ }
+ /*Get the next page.
+ No need to clamp the boundary offset against _of->end, as all errors
+ become OP_ENOTFORMAT or OP_EBADHEADER.*/
+ if(OP_UNLIKELY(op_get_next_page(_of,_og,
+ OP_ADV_OFFSET(_of->offset,OP_CHUNK_SIZE))<0)){
+ return _of->ready_state<OP_STREAMSET?OP_ENOTFORMAT:OP_EBADHEADER;
+ }
+ }
+ if(OP_UNLIKELY(_of->ready_state!=OP_STREAMSET))return OP_ENOTFORMAT;
+ /*If the first non-header page belonged to our Opus stream, submit it.*/
+ if(_of->os.serialno==ogg_page_serialno(_og))ogg_stream_pagein(&_of->os,_og);
+ /*Loop getting packets.*/
+ for(;;){
+ switch(ogg_stream_packetout(&_of->os,&op)){
+ case 0:{
+ /*Loop getting pages.*/
+ for(;;){
+ /*No need to clamp the boundary offset against _of->end, as all
+ errors become OP_EBADHEADER.*/
+ if(OP_UNLIKELY(op_get_next_page(_of,_og,
+ OP_ADV_OFFSET(_of->offset,OP_CHUNK_SIZE))<0)){
+ return OP_EBADHEADER;
+ }
+ /*If this page belongs to the correct stream, go parse it.*/
+ if(_of->os.serialno==ogg_page_serialno(_og)){
+ ogg_stream_pagein(&_of->os,_og);
+ break;
+ }
+ /*If the link ends before we see the Opus comment header, abort.*/
+ if(OP_UNLIKELY(ogg_page_bos(_og)))return OP_EBADHEADER;
+ /*Otherwise, keep looking.*/
+ }
+ }break;
+ /*We shouldn't get a hole in the headers!*/
+ case -1:return OP_EBADHEADER;
+ default:{
+ /*Got a packet.
+ It should be the comment header.*/
+ ret=opus_tags_parse(_tags,op.packet,op.bytes);
+ if(OP_UNLIKELY(ret<0))return ret;
+ /*Make sure the page terminated at the end of the comment header.
+ If there is another packet on the page, or part of a packet, then
+ reject the stream.
+ Otherwise seekable sources won't be able to seek back to the start
+ properly.*/
+ ret=ogg_stream_packetout(&_of->os,&op);
+ if(OP_UNLIKELY(ret!=0)
+ ||OP_UNLIKELY(_og->header[_og->header_len-1]==255)){
+ /*If we fail, the caller assumes our tags are uninitialized.*/
+ opus_tags_clear(_tags);
+ return OP_EBADHEADER;
+ }
+ return 0;
+ }
+ }
+ }
+}
+
+static int op_fetch_headers(OggOpusFile *_of,OpusHead *_head,
+ OpusTags *_tags,ogg_uint32_t **_serialnos,int *_nserialnos,
+ int *_cserialnos,ogg_page *_og){
+ ogg_page og;
+ int ret;
+ if(!_og){
+ /*No need to clamp the boundary offset against _of->end, as all errors
+ become OP_ENOTFORMAT.*/
+ if(OP_UNLIKELY(op_get_next_page(_of,&og,
+ OP_ADV_OFFSET(_of->offset,OP_CHUNK_SIZE))<0)){
+ return OP_ENOTFORMAT;
+ }
+ _og=&og;
+ }
+ _of->ready_state=OP_OPENED;
+ ret=op_fetch_headers_impl(_of,_head,_tags,_serialnos,_nserialnos,
+ _cserialnos,_og);
+ /*Revert back from OP_STREAMSET to OP_OPENED on failure, to prevent
+ double-free of the tags in an unseekable stream.*/
+ if(OP_UNLIKELY(ret<0))_of->ready_state=OP_OPENED;
+ return ret;
+}
+
+/*Granule position manipulation routines.
+ A granule position is defined to be an unsigned 64-bit integer, with the
+ special value -1 in two's complement indicating an unset or invalid granule
+ position.
+ We are not guaranteed to have an unsigned 64-bit type, so we construct the
+ following routines that
+ a) Properly order negative numbers as larger than positive numbers, and
+ b) Check for underflow or overflow past the special -1 value.
+ This lets us operate on the full, valid range of granule positions in a
+ consistent and safe manner.
+ This full range is organized into distinct regions:
+ [ -1 (invalid) ][ 0 ... OP_INT64_MAX ][ OP_INT64_MIN ... -2 ][-1 (invalid) ]
+
+ No one should actually use granule positions so large that they're negative,
+ even if they are technically valid, as very little software handles them
+ correctly (including most of Xiph.Org's).
+ This library also refuses to support durations so large they won't fit in a
+ signed 64-bit integer (to avoid exposing this mess to the application, and
+ to simplify a good deal of internal arithmetic), so the only way to use them
+ successfully is if pcm_start is very large.
+ This means there isn't anything you can do with negative granule positions
+ that you couldn't have done with purely non-negative ones.
+ The main purpose of these routines is to allow us to think very explicitly
+ about the possible failure cases of all granule position manipulations.*/
+
+/*Safely adds a small signed integer to a valid (not -1) granule position.
+ The result can use the full 64-bit range of values (both positive and
+ negative), but will fail on overflow (wrapping past -1; wrapping past
+ OP_INT64_MAX is explicitly okay).
+ [out] _dst_gp: The resulting granule position.
+ Only modified on success.
+ _src_gp: The granule position to add to.
+ This must not be -1.
+ _delta: The amount to add.
+ This is allowed to be up to 32 bits to support the maximum
+ duration of a single Ogg page (255 packets * 120 ms per
+ packet == 1,468,800 samples at 48 kHz).
+ Return: 0 on success, or OP_EINVAL if the result would wrap around past -1.*/
+static int op_granpos_add(ogg_int64_t *_dst_gp,ogg_int64_t _src_gp,
+ opus_int32 _delta){
+ /*The code below handles this case correctly, but there's no reason we
+ should ever be called with these values, so make sure we aren't.*/
+ OP_ASSERT(_src_gp!=-1);
+ if(_delta>0){
+ /*Adding this amount to the granule position would overflow its 64-bit
+ range.*/
+ if(OP_UNLIKELY(_src_gp<0)&&OP_UNLIKELY(_src_gp>=-1-_delta))return OP_EINVAL;
+ if(OP_UNLIKELY(_src_gp>OP_INT64_MAX-_delta)){
+ /*Adding this amount to the granule position would overflow the positive
+ half of its 64-bit range.
+ Since signed overflow is undefined in C, do it in a way the compiler
+ isn't allowed to screw up.*/
+ _delta-=(opus_int32)(OP_INT64_MAX-_src_gp)+1;
+ _src_gp=OP_INT64_MIN;
+ }
+ }
+ else if(_delta<0){
+ /*Subtracting this amount from the granule position would underflow its
+ 64-bit range.*/
+ if(_src_gp>=0&&OP_UNLIKELY(_src_gp<-_delta))return OP_EINVAL;
+ if(OP_UNLIKELY(_src_gp<OP_INT64_MIN-_delta)){
+ /*Subtracting this amount from the granule position would underflow the
+ negative half of its 64-bit range.
+ Since signed underflow is undefined in C, do it in a way the compiler
+ isn't allowed to screw up.*/
+ _delta+=(opus_int32)(_src_gp-OP_INT64_MIN)+1;
+ _src_gp=OP_INT64_MAX;
+ }
+ }
+ *_dst_gp=_src_gp+_delta;
+ return 0;
+}
+
+/*Safely computes the difference between two granule positions.
+ The difference must fit in a signed 64-bit integer, or the function fails.
+ It correctly handles the case where the granule position has wrapped around
+ from positive values to negative ones.
+ [out] _delta: The difference between the granule positions.
+ Only modified on success.
+ _gp_a: The granule position to subtract from.
+ This must not be -1.
+ _gp_b: The granule position to subtract.
+ This must not be -1.
+ Return: 0 on success, or OP_EINVAL if the result would not fit in a signed
+ 64-bit integer.*/
+static int op_granpos_diff(ogg_int64_t *_delta,
+ ogg_int64_t _gp_a,ogg_int64_t _gp_b){
+ int gp_a_negative;
+ int gp_b_negative;
+ /*The code below handles these cases correctly, but there's no reason we
+ should ever be called with these values, so make sure we aren't.*/
+ OP_ASSERT(_gp_a!=-1);
+ OP_ASSERT(_gp_b!=-1);
+ gp_a_negative=OP_UNLIKELY(_gp_a<0);
+ gp_b_negative=OP_UNLIKELY(_gp_b<0);
+ if(OP_UNLIKELY(gp_a_negative^gp_b_negative)){
+ ogg_int64_t da;
+ ogg_int64_t db;
+ if(gp_a_negative){
+ /*_gp_a has wrapped to a negative value but _gp_b hasn't: the difference
+ should be positive.*/
+ /*Step 1: Handle wrapping.*/
+ /*_gp_a < 0 => da < 0.*/
+ da=(OP_INT64_MIN-_gp_a)-1;
+ /*_gp_b >= 0 => db >= 0.*/
+ db=OP_INT64_MAX-_gp_b;
+ /*Step 2: Check for overflow.*/
+ if(OP_UNLIKELY(OP_INT64_MAX+da<db))return OP_EINVAL;
+ *_delta=db-da;
+ }
+ else{
+ /*_gp_b has wrapped to a negative value but _gp_a hasn't: the difference
+ should be negative.*/
+ /*Step 1: Handle wrapping.*/
+ /*_gp_a >= 0 => da <= 0*/
+ da=_gp_a+OP_INT64_MIN;
+ /*_gp_b < 0 => db <= 0*/
+ db=OP_INT64_MIN-_gp_b;
+ /*Step 2: Check for overflow.*/
+ if(OP_UNLIKELY(da<OP_INT64_MIN-db))return OP_EINVAL;
+ *_delta=da+db;
+ }
+ }
+ else *_delta=_gp_a-_gp_b;
+ return 0;
+}
+
+static int op_granpos_cmp(ogg_int64_t _gp_a,ogg_int64_t _gp_b){
+ /*The invalid granule position -1 should behave like NaN: neither greater
+ than nor less than any other granule position, nor equal to any other
+ granule position, including itself.
+ However, that means there isn't anything we could sensibly return from this
+ function for it.*/
+ OP_ASSERT(_gp_a!=-1);
+ OP_ASSERT(_gp_b!=-1);
+ /*Handle the wrapping cases.*/
+ if(OP_UNLIKELY(_gp_a<0)){
+ if(_gp_b>=0)return 1;
+ /*Else fall through.*/
+ }
+ else if(OP_UNLIKELY(_gp_b<0))return -1;
+ /*No wrapping case.*/
+ return (_gp_a>_gp_b)-(_gp_b>_gp_a);
+}
+
+/*Returns the duration of the packet (in samples at 48 kHz), or a negative
+ value on error.*/
+static int op_get_packet_duration(const unsigned char *_data,int _len){
+ int nframes;
+ int frame_size;
+ int nsamples;
+ nframes=opus_packet_get_nb_frames(_data,_len);
+ if(OP_UNLIKELY(nframes<0))return OP_EBADPACKET;
+ frame_size=opus_packet_get_samples_per_frame(_data,48000);
+ nsamples=nframes*frame_size;
+ if(OP_UNLIKELY(nsamples>120*48))return OP_EBADPACKET;
+ return nsamples;
+}
+
+/*This function more properly belongs in info.c, but we define it here to allow
+ the static granule position manipulation functions to remain static.*/
+ogg_int64_t opus_granule_sample(const OpusHead *_head,ogg_int64_t _gp){
+ opus_int32 pre_skip;
+ pre_skip=_head->pre_skip;
+ if(_gp!=-1&&op_granpos_add(&_gp,_gp,-pre_skip))_gp=-1;
+ return _gp;
+}
+
+/*Grab all the packets currently in the stream state, and compute their
+ durations.
+ _of->op_count is set to the number of packets collected.
+ [out] _durations: Returns the durations of the individual packets.
+ Return: The total duration of all packets, or OP_HOLE if there was a hole.*/
+static opus_int32 op_collect_audio_packets(OggOpusFile *_of,
+ int _durations[255]){
+ opus_int32 total_duration;
+ int op_count;
+ /*Count the durations of all packets in the page.*/
+ op_count=0;
+ total_duration=0;
+ for(;;){
+ int ret;
+ /*This takes advantage of undocumented libogg behavior that returned
+ ogg_packet buffers are valid at least until the next page is
+ submitted.
+ Relying on this is not too terrible, as _none_ of the Ogg memory
+ ownership/lifetime rules are well-documented.
+ But I can read its code and know this will work.*/
+ ret=ogg_stream_packetout(&_of->os,_of->op+op_count);
+ if(!ret)break;
+ if(OP_UNLIKELY(ret<0)){
+ /*We shouldn't get holes in the middle of pages.*/
+ OP_ASSERT(op_count==0);
+ /*Set the return value and break out of the loop.
+ We want to make sure op_count gets set to 0, because we've ingested a
+ page, so any previously loaded packets are now invalid.*/
+ total_duration=OP_HOLE;
+ break;
+ }
+ /*Unless libogg is broken, we can't get more than 255 packets from a
+ single page.*/
+ OP_ASSERT(op_count<255);
+ _durations[op_count]=op_get_packet_duration(_of->op[op_count].packet,
+ _of->op[op_count].bytes);
+ if(OP_LIKELY(_durations[op_count]>0)){
+ /*With at most 255 packets on a page, this can't overflow.*/
+ total_duration+=_durations[op_count++];
+ }
+ /*Ignore packets with an invalid TOC sequence.*/
+ else if(op_count>0){
+ /*But save the granule position, if there was one.*/
+ _of->op[op_count-1].granulepos=_of->op[op_count].granulepos;
+ }
+ }
+ _of->op_pos=0;
+ _of->op_count=op_count;
+ return total_duration;
+}
+
+/*Starting from current cursor position, get the initial PCM offset of the next
+ page.
+ This also validates the granule position on the first page with a completed
+ audio data packet, as required by the spec.
+ If this link is completely empty (no pages with completed packets), then this
+ function sets pcm_start=pcm_end=0 and returns the BOS page of the next link
+ (if any).
+ In the seekable case, we initialize pcm_end=-1 before calling this function,
+ so that later we can detect that the link was empty before calling
+ op_find_final_pcm_offset().
+ [inout] _link: The link for which to find pcm_start.
+ [out] _og: Returns the BOS page of the next link if this link was empty.
+ In the unseekable case, we can then feed this to
+ op_fetch_headers() to start the next link.
+ The caller may pass NULL (e.g., for seekable streams), in
+ which case this page will be discarded.
+ Return: 0 on success, 1 if there is a buffered BOS page available, or a
+ negative value on unrecoverable error.*/
+static int op_find_initial_pcm_offset(OggOpusFile *_of,
+ OggOpusLink *_link,ogg_page *_og){
+ ogg_page og;
+ opus_int64 page_offset;
+ ogg_int64_t pcm_start;
+ ogg_int64_t prev_packet_gp;
+ ogg_int64_t cur_page_gp;
+ ogg_uint32_t serialno;
+ opus_int32 total_duration;
+ int durations[255];
+ int cur_page_eos;
+ int op_count;
+ int pi;
+ if(_og==NULL)_og=&og;
+ serialno=_of->os.serialno;
+ op_count=0;
+ /*We shouldn't have to initialize total_duration, but gcc is too dumb to
+ figure out that op_count>0 implies we've been through the whole loop at
+ least once.*/
+ total_duration=0;
+ do{
+ page_offset=op_get_next_page(_of,_og,_of->end);
+ /*We should get a page unless the file is truncated or mangled.
+ Otherwise there are no audio data packets in the whole logical stream.*/
+ if(OP_UNLIKELY(page_offset<0)){
+ /*Fail if there was a read error.*/
+ if(page_offset<OP_FALSE)return (int)page_offset;
+ /*Fail if the pre-skip is non-zero, since it's asking us to skip more
+ samples than exist.*/
+ if(_link->head.pre_skip>0)return OP_EBADTIMESTAMP;
+ _link->pcm_file_offset=0;
+ /*Set pcm_end and end_offset so we can skip the call to
+ op_find_final_pcm_offset().*/
+ _link->pcm_start=_link->pcm_end=0;
+ _link->end_offset=_link->data_offset;
+ return 0;
+ }
+ /*Similarly, if we hit the next link in the chain, we've gone too far.*/
+ if(OP_UNLIKELY(ogg_page_bos(_og))){
+ if(_link->head.pre_skip>0)return OP_EBADTIMESTAMP;
+ /*Set pcm_end and end_offset so we can skip the call to
+ op_find_final_pcm_offset().*/
+ _link->pcm_file_offset=0;
+ _link->pcm_start=_link->pcm_end=0;
+ _link->end_offset=_link->data_offset;
+ /*Tell the caller we've got a buffered page for them.*/
+ return 1;
+ }
+ /*Ignore pages from other streams (not strictly necessary, because of the
+ checks in ogg_stream_pagein(), but saves some work).*/
+ if(serialno!=(ogg_uint32_t)ogg_page_serialno(_og))continue;
+ ogg_stream_pagein(&_of->os,_og);
+ /*Bitrate tracking: add the header's bytes here.
+ The body bytes are counted when we consume the packets.*/
+ _of->bytes_tracked+=_og->header_len;
+ /*Count the durations of all packets in the page.*/
+ do total_duration=op_collect_audio_packets(_of,durations);
+ /*Ignore holes.*/
+ while(OP_UNLIKELY(total_duration<0));
+ op_count=_of->op_count;
+ }
+ while(op_count<=0);
+ /*We found the first page with a completed audio data packet: actually look
+ at the granule position.
+ RFC 3533 says, "A special value of -1 (in two's complement) indicates that
+ no packets finish on this page," which does not say that a granule
+ position that is NOT -1 indicates that some packets DO finish on that page
+ (even though this was the intention, libogg itself violated this intention
+ for years before we fixed it).
+ The Ogg Opus specification only imposes its start-time requirements
+ on the granule position of the first page with completed packets,
+ so we ignore any set granule positions until then.*/
+ cur_page_gp=_of->op[op_count-1].granulepos;
+ /*But getting a packet without a valid granule position on the page is not
+ okay.*/
+ if(cur_page_gp==-1)return OP_EBADTIMESTAMP;
+ cur_page_eos=_of->op[op_count-1].e_o_s;
+ if(OP_LIKELY(!cur_page_eos)){
+ /*The EOS flag wasn't set.
+ Work backwards from the provided granule position to get the starting PCM
+ offset.*/
+ if(OP_UNLIKELY(op_granpos_add(&pcm_start,cur_page_gp,-total_duration)<0)){
+ /*The starting granule position MUST not be smaller than the amount of
+ audio on the first page with completed packets.*/
+ return OP_EBADTIMESTAMP;
+ }
+ }
+ else{
+ /*The first page with completed packets was also the last.*/
+ if(OP_LIKELY(op_granpos_add(&pcm_start,cur_page_gp,-total_duration)<0)){
+ /*If there's less audio on the page than indicated by the granule
+ position, then we're doing end-trimming, and the starting PCM offset
+ is zero by spec mandate.*/
+ pcm_start=0;
+ /*However, the end-trimming MUST not ask us to trim more samples than
+ exist after applying the pre-skip.*/
+ if(OP_UNLIKELY(op_granpos_cmp(cur_page_gp,_link->head.pre_skip)<0)){
+ return OP_EBADTIMESTAMP;
+ }
+ }
+ }
+ /*Timestamp the individual packets.*/
+ prev_packet_gp=pcm_start;
+ for(pi=0;pi<op_count;pi++){
+ if(cur_page_eos){
+ ogg_int64_t diff;
+ OP_ALWAYS_TRUE(!op_granpos_diff(&diff,cur_page_gp,prev_packet_gp));
+ diff=durations[pi]-diff;
+ /*If we have samples to trim...*/
+ if(diff>0){
+ /*If we trimmed the entire packet, stop (the spec says encoders
+ shouldn't do this, but we support it anyway).*/
+ if(OP_UNLIKELY(diff>durations[pi]))break;
+ _of->op[pi].granulepos=prev_packet_gp=cur_page_gp;
+ /*Move the EOS flag to this packet, if necessary, so we'll trim the
+ samples.*/
+ _of->op[pi].e_o_s=1;
+ continue;
+ }
+ }
+ /*Update the granule position as normal.*/
+ OP_ALWAYS_TRUE(!op_granpos_add(&_of->op[pi].granulepos,
+ prev_packet_gp,durations[pi]));
+ prev_packet_gp=_of->op[pi].granulepos;
+ }
+ /*Update the packet count after end-trimming.*/
+ _of->op_count=pi;
+ _of->cur_discard_count=_link->head.pre_skip;
+ _link->pcm_file_offset=0;
+ _of->prev_packet_gp=_link->pcm_start=pcm_start;
+ _of->prev_page_offset=page_offset;
+ return 0;
+}
+
+/*Starting from current cursor position, get the final PCM offset of the
+ previous page.
+ This also validates the duration of the link, which, while not strictly
+ required by the spec, we need to ensure duration calculations don't
+ overflow.
+ This is only done for seekable sources.
+ We must validate that op_find_initial_pcm_offset() succeeded for this link
+ before calling this function, otherwise it will scan the entire stream
+ backwards until it reaches the start, and then fail.*/
+static int op_find_final_pcm_offset(OggOpusFile *_of,
+ const ogg_uint32_t *_serialnos,int _nserialnos,OggOpusLink *_link,
+ opus_int64 _offset,ogg_uint32_t _end_serialno,ogg_int64_t _end_gp,
+ ogg_int64_t *_total_duration){
+ ogg_int64_t total_duration;
+ ogg_int64_t duration;
+ ogg_uint32_t cur_serialno;
+ /*For the time being, fetch end PCM offset the simple way.*/
+ cur_serialno=_link->serialno;
+ if(_end_serialno!=cur_serialno||_end_gp==-1){
+ _offset=op_get_last_page(_of,&_end_gp,_offset,
+ cur_serialno,_serialnos,_nserialnos);
+ if(OP_UNLIKELY(_offset<0))return (int)_offset;
+ }
+ /*At worst we should have found the first page with completed packets.*/
+ if(OP_UNLIKELY(_offset<_link->data_offset))return OP_EBADLINK;
+ /*This implementation requires that the difference between the first and last
+ granule positions in each link be representable in a signed, 64-bit
+ number, and that each link also have at least as many samples as the
+ pre-skip requires.*/
+ if(OP_UNLIKELY(op_granpos_diff(&duration,_end_gp,_link->pcm_start)<0)
+ ||OP_UNLIKELY(duration<_link->head.pre_skip)){
+ return OP_EBADTIMESTAMP;
+ }
+ /*We also require that the total duration be representable in a signed,
+ 64-bit number.*/
+ duration-=_link->head.pre_skip;
+ total_duration=*_total_duration;
+ if(OP_UNLIKELY(OP_INT64_MAX-duration<total_duration))return OP_EBADTIMESTAMP;
+ *_total_duration=total_duration+duration;
+ _link->pcm_end=_end_gp;
+ _link->end_offset=_offset;
+ return 0;
+}
+
+/*Rescale the number _x from the range [0,_from] to [0,_to].
+ _from and _to must be positive.*/
+static opus_int64 op_rescale64(opus_int64 _x,opus_int64 _from,opus_int64 _to){
+ opus_int64 frac;
+ opus_int64 ret;
+ int i;
+ if(_x>=_from)return _to;
+ if(_x<=0)return 0;
+ frac=0;
+ for(i=0;i<63;i++){
+ frac<<=1;
+ OP_ASSERT(_x<=_from);
+ if(_x>=_from>>1){
+ _x-=_from-_x;
+ frac|=1;
+ }
+ else _x<<=1;
+ }
+ ret=0;
+ for(i=0;i<63;i++){
+ if(frac&1)ret=(ret&_to&1)+(ret>>1)+(_to>>1);
+ else ret>>=1;
+ frac>>=1;
+ }
+ return ret;
+}
+
+/*The minimum granule position spacing allowed for making predictions.
+ This corresponds to about 1 second of audio at 48 kHz for both Opus and
+ Vorbis, or one keyframe interval in Theora with the default keyframe spacing
+ of 256.*/
+#define OP_GP_SPACING_MIN (48000)
+
+/*Try to estimate the location of the next link using the current seek
+ records, assuming the initial granule position of any streams we've found is
+ 0.*/
+static opus_int64 op_predict_link_start(const OpusSeekRecord *_sr,int _nsr,
+ opus_int64 _searched,opus_int64 _end_searched,opus_int32 _bias){
+ opus_int64 bisect;
+ int sri;
+ int srj;
+ /*Require that we be at least OP_CHUNK_SIZE from the end.
+ We don't require that we be at least OP_CHUNK_SIZE from the beginning,
+ because if we are we'll just scan forward without seeking.*/
+ _end_searched-=OP_CHUNK_SIZE;
+ if(_searched>=_end_searched)return -1;
+ bisect=_end_searched;
+ for(sri=0;sri<_nsr;sri++){
+ ogg_int64_t gp1;
+ ogg_int64_t gp2_min;
+ ogg_uint32_t serialno1;
+ opus_int64 offset1;
+ /*If the granule position is negative, either it's invalid or we'd cause
+ overflow.*/
+ gp1=_sr[sri].gp;
+ if(gp1<0)continue;
+ /*We require some minimum distance between granule positions to make an
+ estimate.
+ We don't actually know what granule position scheme is being used,
+ because we have no idea what kind of stream these came from.
+ Therefore we require a minimum spacing between them, with the
+ expectation that while bitrates and granule position increments might
+ vary locally in quite complex ways, they are globally smooth.*/
+ if(OP_UNLIKELY(op_granpos_add(&gp2_min,gp1,OP_GP_SPACING_MIN)<0)){
+ /*No granule position would satisfy us.*/
+ continue;
+ }
+ offset1=_sr[sri].offset;
+ serialno1=_sr[sri].serialno;
+ for(srj=sri;srj-->0;){
+ ogg_int64_t gp2;
+ opus_int64 offset2;
+ opus_int64 num;
+ ogg_int64_t den;
+ ogg_int64_t ipart;
+ gp2=_sr[srj].gp;
+ if(gp2<gp2_min)continue;
+ /*Oh, and also make sure these came from the same stream.*/
+ if(_sr[srj].serialno!=serialno1)continue;
+ offset2=_sr[srj].offset;
+ /*For once, we can subtract with impunity.*/
+ den=gp2-gp1;
+ ipart=gp2/den;
+ num=offset2-offset1;
+ OP_ASSERT(num>0);
+ if(ipart>0&&(offset2-_searched)/ipart<num)continue;
+ offset2-=ipart*num;
+ gp2-=ipart*den;
+ offset2-=op_rescale64(gp2,den,num)-_bias;
+ if(offset2<_searched)continue;
+ bisect=OP_MIN(bisect,offset2);
+ break;
+ }
+ }
+ return bisect>=_end_searched?-1:bisect;
+}
+
+/*Finds each bitstream link, one at a time, using a bisection search.
+ This has to begin by knowing the offset of the first link's initial page.*/
+static int op_bisect_forward_serialno(OggOpusFile *_of,
+ opus_int64 _searched,OpusSeekRecord *_sr,int _csr,
+ ogg_uint32_t **_serialnos,int *_nserialnos,int *_cserialnos){
+ ogg_page og;
+ OggOpusLink *links;
+ int nlinks;
+ int clinks;
+ ogg_uint32_t *serialnos;
+ int nserialnos;
+ ogg_int64_t total_duration;
+ int nsr;
+ int ret;
+ links=_of->links;
+ nlinks=clinks=_of->nlinks;
+ total_duration=0;
+ /*We start with one seek record, for the last page in the file.
+ We build up a list of records for places we seek to during link
+ enumeration.
+ This list is kept sorted in reverse order.
+ We only care about seek locations that were _not_ in the current link,
+ therefore we can add them one at a time to the end of the list as we
+ improve the lower bound on the location where the next link starts.*/
+ nsr=1;
+ for(;;){
+ opus_int64 end_searched;
+ opus_int64 bisect;
+ opus_int64 next;
+ opus_int64 last;
+ ogg_int64_t end_offset;
+ ogg_int64_t end_gp;
+ int sri;
+ serialnos=*_serialnos;
+ nserialnos=*_nserialnos;
+ if(OP_UNLIKELY(nlinks>=clinks)){
+ if(OP_UNLIKELY(clinks>INT_MAX-1>>1))return OP_EFAULT;
+ clinks=2*clinks+1;
+ OP_ASSERT(nlinks<clinks);
+ links=(OggOpusLink *)_ogg_realloc(links,sizeof(*links)*clinks);
+ if(OP_UNLIKELY(links==NULL))return OP_EFAULT;
+ _of->links=links;
+ }
+ /*Invariants:
+ We have the headers and serial numbers for the link beginning at 'begin'.
+ We have the offset and granule position of the last page in the file
+ (potentially not a page we care about).*/
+ /*Scan the seek records we already have to save us some bisection.*/
+ for(sri=0;sri<nsr;sri++){
+ if(op_lookup_serialno(_sr[sri].serialno,serialnos,nserialnos))break;
+ }
+ /*Is the last page in our current list of serial numbers?*/
+ if(sri<=0)break;
+ /*Last page wasn't found.
+ We have at least one more link.*/
+ last=-1;
+ end_searched=_sr[sri-1].search_start;
+ next=_sr[sri-1].offset;
+ end_gp=-1;
+ if(sri<nsr){
+ _searched=_sr[sri].offset+_sr[sri].size;
+ if(_sr[sri].serialno==links[nlinks-1].serialno){
+ end_gp=_sr[sri].gp;
+ end_offset=_sr[sri].offset;
+ }
+ }
+ nsr=sri;
+ bisect=-1;
+ /*If we've already found the end of at least one link, try to pick the
+ first bisection point at twice the average link size.
+ This is a good choice for files with lots of links that are all about the
+ same size.*/
+ if(nlinks>1){
+ opus_int64 last_offset;
+ opus_int64 avg_link_size;
+ opus_int64 upper_limit;
+ last_offset=links[nlinks-1].offset;
+ avg_link_size=last_offset/(nlinks-1);
+ upper_limit=end_searched-OP_CHUNK_SIZE-avg_link_size;
+ if(OP_LIKELY(last_offset>_searched-avg_link_size)
+ &&OP_LIKELY(last_offset<upper_limit)){
+ bisect=last_offset+avg_link_size;
+ if(OP_LIKELY(bisect<upper_limit))bisect+=avg_link_size;
+ }
+ }
+ /*We guard against garbage separating the last and first pages of two
+ links below.*/
+ while(_searched<end_searched){
+ opus_int32 next_bias;
+ /*If we don't have a better estimate, use simple bisection.*/
+ if(bisect==-1)bisect=_searched+(end_searched-_searched>>1);
+ /*If we're within OP_CHUNK_SIZE of the start, scan forward.*/
+ if(bisect-_searched<OP_CHUNK_SIZE)bisect=_searched;
+ /*Otherwise we're skipping data.
+ Forget the end page, if we saw one, as we might miss a later one.*/
+ else end_gp=-1;
+ ret=op_seek_helper(_of,bisect);
+ if(OP_UNLIKELY(ret<0))return ret;
+ last=op_get_next_page(_of,&og,_sr[nsr-1].offset);
+ if(OP_UNLIKELY(last<OP_FALSE))return (int)last;
+ next_bias=0;
+ if(last==OP_FALSE)end_searched=bisect;
+ else{
+ ogg_uint32_t serialno;
+ ogg_int64_t gp;
+ serialno=ogg_page_serialno(&og);
+ gp=ogg_page_granulepos(&og);
+ if(!op_lookup_serialno(serialno,serialnos,nserialnos)){
+ end_searched=bisect;
+ next=last;
+ /*In reality we should always have enough room, but be paranoid.*/
+ if(OP_LIKELY(nsr<_csr)){
+ _sr[nsr].search_start=bisect;
+ _sr[nsr].offset=last;
+ OP_ASSERT(_of->offset-last>=0);
+ OP_ASSERT(_of->offset-last<=OP_PAGE_SIZE_MAX);
+ _sr[nsr].size=(opus_int32)(_of->offset-last);
+ _sr[nsr].serialno=serialno;
+ _sr[nsr].gp=gp;
+ nsr++;
+ }
+ }
+ else{
+ _searched=_of->offset;
+ next_bias=OP_CHUNK_SIZE;
+ if(serialno==links[nlinks-1].serialno){
+ /*This page was from the stream we want, remember it.
+ If it's the last such page in the link, we won't have to go back
+ looking for it later.*/
+ end_gp=gp;
+ end_offset=last;
+ }
+ }
+ }
+ bisect=op_predict_link_start(_sr,nsr,_searched,end_searched,next_bias);
+ }
+ /*Bisection point found.
+ Get the final granule position of the previous link, assuming
+ op_find_initial_pcm_offset() didn't already determine the link was
+ empty.*/
+ if(OP_LIKELY(links[nlinks-1].pcm_end==-1)){
+ if(end_gp==-1){
+ /*If we don't know where the end page is, we'll have to seek back and
+ look for it, starting from the end of the link.*/
+ end_offset=next;
+ /*Also forget the last page we read.
+ It won't be available after the seek.*/
+ last=-1;
+ }
+ ret=op_find_final_pcm_offset(_of,serialnos,nserialnos,
+ links+nlinks-1,end_offset,links[nlinks-1].serialno,end_gp,
+ &total_duration);
+ if(OP_UNLIKELY(ret<0))return ret;
+ }
+ if(last!=next){
+ /*The last page we read was not the first page the next link.
+ Move the cursor position to the offset of that first page.
+ This only performs an actual seek if the first page of the next link
+ does not start at the end of the last page from the current Opus
+ stream with a valid granule position.*/
+ ret=op_seek_helper(_of,next);
+ if(OP_UNLIKELY(ret<0))return ret;
+ }
+ ret=op_fetch_headers(_of,&links[nlinks].head,&links[nlinks].tags,
+ _serialnos,_nserialnos,_cserialnos,last!=next?NULL:&og);
+ if(OP_UNLIKELY(ret<0))return ret;
+ links[nlinks].offset=next;
+ links[nlinks].data_offset=_of->offset;
+ links[nlinks].serialno=_of->os.serialno;
+ links[nlinks].pcm_end=-1;
+ /*This might consume a page from the next link, however the next bisection
+ always starts with a seek.*/
+ ret=op_find_initial_pcm_offset(_of,links+nlinks,NULL);
+ if(OP_UNLIKELY(ret<0))return ret;
+ links[nlinks].pcm_file_offset=total_duration;
+ _searched=_of->offset;
+ /*Mark the current link count so it can be cleaned up on error.*/
+ _of->nlinks=++nlinks;
+ }
+ /*Last page is in the starting serialno list, so we've reached the last link.
+ Now find the last granule position for it (if we didn't the first time we
+ looked at the end of the stream, and if op_find_initial_pcm_offset()
+ didn't already determine the link was empty).*/
+ if(OP_LIKELY(links[nlinks-1].pcm_end==-1)){
+ ret=op_find_final_pcm_offset(_of,serialnos,nserialnos,
+ links+nlinks-1,_sr[0].offset,_sr[0].serialno,_sr[0].gp,&total_duration);
+ if(OP_UNLIKELY(ret<0))return ret;
+ }
+ /*Trim back the links array if necessary.*/
+ links=(OggOpusLink *)_ogg_realloc(links,sizeof(*links)*nlinks);
+ if(OP_LIKELY(links!=NULL))_of->links=links;
+ /*We also don't need these anymore.*/
+ _ogg_free(*_serialnos);
+ *_serialnos=NULL;
+ *_cserialnos=*_nserialnos=0;
+ return 0;
+}
+
+static void op_update_gain(OggOpusFile *_of){
+ OpusHead *head;
+ opus_int32 gain_q8;
+ int li;
+ /*If decode isn't ready, then we'll apply the gain when we initialize the
+ decoder.*/
+ if(_of->ready_state<OP_INITSET)return;
+ gain_q8=_of->gain_offset_q8;
+ li=_of->seekable?_of->cur_link:0;
+ head=&_of->links[li].head;
+ /*We don't have to worry about overflow here because the header gain and
+ track gain must lie in the range [-32768,32767], and the user-supplied
+ offset has been pre-clamped to [-98302,98303].*/
+ switch(_of->gain_type){
+ case OP_ALBUM_GAIN:{
+ int album_gain_q8;
+ album_gain_q8=0;
+ opus_tags_get_album_gain(&_of->links[li].tags,&album_gain_q8);
+ gain_q8+=album_gain_q8;
+ gain_q8+=head->output_gain;
+ }break;
+ case OP_TRACK_GAIN:{
+ int track_gain_q8;
+ track_gain_q8=0;
+ opus_tags_get_track_gain(&_of->links[li].tags,&track_gain_q8);
+ gain_q8+=track_gain_q8;
+ gain_q8+=head->output_gain;
+ }break;
+ case OP_HEADER_GAIN:gain_q8+=head->output_gain;break;
+ case OP_ABSOLUTE_GAIN:break;
+ default:OP_ASSERT(0);
+ }
+ gain_q8=OP_CLAMP(-32768,gain_q8,32767);
+ OP_ASSERT(_of->od!=NULL);
+#if defined(OPUS_SET_GAIN)
+ opus_multistream_decoder_ctl(_of->od,OPUS_SET_GAIN(gain_q8));
+#else
+/*A fallback that works with both float and fixed-point is a bunch of work,
+ so just force people to use a sufficiently new version.
+ This is deployed well enough at this point that this shouldn't be a burden.*/
+# error "libopus 1.0.1 or later required"
+#endif
+}
+
+static int op_make_decode_ready(OggOpusFile *_of){
+ const OpusHead *head;
+ int li;
+ int stream_count;
+ int coupled_count;
+ int channel_count;
+ if(_of->ready_state>OP_STREAMSET)return 0;
+ if(OP_UNLIKELY(_of->ready_state<OP_STREAMSET))return OP_EFAULT;
+ li=_of->seekable?_of->cur_link:0;
+ head=&_of->links[li].head;
+ stream_count=head->stream_count;
+ coupled_count=head->coupled_count;
+ channel_count=head->channel_count;
+ /*Check to see if the current decoder is compatible with the current link.*/
+ if(_of->od!=NULL&&_of->od_stream_count==stream_count
+ &&_of->od_coupled_count==coupled_count&&_of->od_channel_count==channel_count
+ &&memcmp(_of->od_mapping,head->mapping,
+ sizeof(*head->mapping)*channel_count)==0){
+ opus_multistream_decoder_ctl(_of->od,OPUS_RESET_STATE);
+ }
+ else{
+ int err;
+ opus_multistream_decoder_destroy(_of->od);
+ _of->od=opus_multistream_decoder_create(48000,channel_count,
+ stream_count,coupled_count,head->mapping,&err);
+ if(_of->od==NULL)return OP_EFAULT;
+ _of->od_stream_count=stream_count;
+ _of->od_coupled_count=coupled_count;
+ _of->od_channel_count=channel_count;
+ memcpy(_of->od_mapping,head->mapping,sizeof(*head->mapping)*channel_count);
+ }
+ _of->ready_state=OP_INITSET;
+ _of->bytes_tracked=0;
+ _of->samples_tracked=0;
+#if !defined(OP_FIXED_POINT)
+ _of->state_channel_count=0;
+ /*Use the serial number for the PRNG seed to get repeatable output for
+ straight play-throughs.*/
+ _of->dither_seed=_of->links[li].serialno;
+#endif
+ op_update_gain(_of);
+ return 0;
+}
+
+static int op_open_seekable2_impl(OggOpusFile *_of){
+ /*64 seek records should be enough for anybody.
+ Actually, with a bisection search in a 63-bit range down to OP_CHUNK_SIZE
+ granularity, much more than enough.*/
+ OpusSeekRecord sr[64];
+ opus_int64 data_offset;
+ int ret;
+ /*We can seek, so set out learning all about this file.*/
+ (*_of->callbacks.seek)(_of->stream,0,SEEK_END);
+ _of->offset=_of->end=(*_of->callbacks.tell)(_of->stream);
+ if(OP_UNLIKELY(_of->end<0))return OP_EREAD;
+ data_offset=_of->links[0].data_offset;
+ if(OP_UNLIKELY(_of->end<data_offset))return OP_EBADLINK;
+ /*Get the offset of the last page of the physical bitstream, or, if we're
+ lucky, the last Opus page of the first link, as most Ogg Opus files will
+ contain a single logical bitstream.*/
+ ret=op_get_prev_page_serial(_of,sr,_of->end,
+ _of->links[0].serialno,_of->serialnos,_of->nserialnos);
+ if(OP_UNLIKELY(ret<0))return ret;
+ /*If there's any trailing junk, forget about it.*/
+ _of->end=sr[0].offset+sr[0].size;
+ if(OP_UNLIKELY(_of->end<data_offset))return OP_EBADLINK;
+ /*Now enumerate the bitstream structure.*/
+ return op_bisect_forward_serialno(_of,data_offset,sr,sizeof(sr)/sizeof(*sr),
+ &_of->serialnos,&_of->nserialnos,&_of->cserialnos);
+}
+
+static int op_open_seekable2(OggOpusFile *_of){
+ ogg_sync_state oy_start;
+ ogg_stream_state os_start;
+ ogg_packet *op_start;
+ opus_int64 prev_page_offset;
+ opus_int64 start_offset;
+ int start_op_count;
+ int ret;
+ /*We're partially open and have a first link header state in storage in _of.
+ Save off that stream state so we can come back to it.
+ It would be simpler to just dump all this state and seek back to
+ links[0].data_offset when we're done.
+ But we do the extra work to allow us to seek back to _exactly_ the same
+ stream position we're at now.
+ This allows, e.g., the HTTP backend to continue reading from the original
+ connection (if it's still available), instead of opening a new one.
+ This means we can open and start playing a normal Opus file with a single
+ link and reasonable packet sizes using only two HTTP requests.*/
+ start_op_count=_of->op_count;
+ /*This is a bit too large to put on the stack unconditionally.*/
+ op_start=(ogg_packet *)_ogg_malloc(sizeof(*op_start)*start_op_count);
+ if(op_start==NULL)return OP_EFAULT;
+ *&oy_start=_of->oy;
+ *&os_start=_of->os;
+ prev_page_offset=_of->prev_page_offset;
+ start_offset=_of->offset;
+ memcpy(op_start,_of->op,sizeof(*op_start)*start_op_count);
+ OP_ASSERT((*_of->callbacks.tell)(_of->stream)==op_position(_of));
+ ogg_sync_init(&_of->oy);
+ ogg_stream_init(&_of->os,-1);
+ ret=op_open_seekable2_impl(_of);
+ /*Restore the old stream state.*/
+ ogg_stream_clear(&_of->os);
+ ogg_sync_clear(&_of->oy);
+ *&_of->oy=*&oy_start;
+ *&_of->os=*&os_start;
+ _of->offset=start_offset;
+ _of->op_count=start_op_count;
+ memcpy(_of->op,op_start,sizeof(*_of->op)*start_op_count);
+ _ogg_free(op_start);
+ _of->prev_packet_gp=_of->links[0].pcm_start;
+ _of->prev_page_offset=prev_page_offset;
+ _of->cur_discard_count=_of->links[0].head.pre_skip;
+ if(OP_UNLIKELY(ret<0))return ret;
+ /*And restore the position indicator.*/
+ ret=(*_of->callbacks.seek)(_of->stream,op_position(_of),SEEK_SET);
+ return OP_UNLIKELY(ret<0)?OP_EREAD:0;
+}
+
+/*Clear out the current logical bitstream decoder.*/
+static void op_decode_clear(OggOpusFile *_of){
+ /*We don't actually free the decoder.
+ We might be able to re-use it for the next link.*/
+ _of->op_count=0;
+ _of->od_buffer_size=0;
+ _of->prev_packet_gp=-1;
+ _of->prev_page_offset=-1;
+ if(!_of->seekable){
+ OP_ASSERT(_of->ready_state>=OP_INITSET);
+ opus_tags_clear(&_of->links[0].tags);
+ }
+ _of->ready_state=OP_OPENED;
+}
+
+static void op_clear(OggOpusFile *_of){
+ OggOpusLink *links;
+ _ogg_free(_of->od_buffer);
+ if(_of->od!=NULL)opus_multistream_decoder_destroy(_of->od);
+ links=_of->links;
+ if(!_of->seekable){
+ if(_of->ready_state>OP_OPENED||_of->ready_state==OP_PARTOPEN){
+ opus_tags_clear(&links[0].tags);
+ }
+ }
+ else if(OP_LIKELY(links!=NULL)){
+ int nlinks;
+ int link;
+ nlinks=_of->nlinks;
+ for(link=0;link<nlinks;link++)opus_tags_clear(&links[link].tags);
+ }
+ _ogg_free(links);
+ _ogg_free(_of->serialnos);
+ ogg_stream_clear(&_of->os);
+ ogg_sync_clear(&_of->oy);
+ if(_of->callbacks.close!=NULL)(*_of->callbacks.close)(_of->stream);
+}
+
+static int op_open1(OggOpusFile *_of,
+ void *_stream,const OpusFileCallbacks *_cb,
+ const unsigned char *_initial_data,size_t _initial_bytes){
+ ogg_page og;
+ ogg_page *pog;
+ int seekable;
+ int ret;
+ memset(_of,0,sizeof(*_of));
+ if(OP_UNLIKELY(_initial_bytes>(size_t)LONG_MAX))return OP_EFAULT;
+ _of->end=-1;
+ _of->stream=_stream;
+ *&_of->callbacks=*_cb;
+ /*At a minimum, we need to be able to read data.*/
+ if(OP_UNLIKELY(_of->callbacks.read==NULL))return OP_EREAD;
+ /*Initialize the framing state.*/
+ ogg_sync_init(&_of->oy);
+ /*Perhaps some data was previously read into a buffer for testing against
+ other stream types.
+ Allow initialization from this previously read data (especially as we may
+ be reading from a non-seekable stream).
+ This requires copying it into a buffer allocated by ogg_sync_buffer() and
+ doesn't support seeking, so this is not a good mechanism to use for
+ decoding entire files from RAM.*/
+ if(_initial_bytes>0){
+ char *buffer;
+ buffer=ogg_sync_buffer(&_of->oy,(long)_initial_bytes);
+ memcpy(buffer,_initial_data,_initial_bytes*sizeof(*buffer));
+ ogg_sync_wrote(&_of->oy,(long)_initial_bytes);
+ }
+ /*Can we seek?
+ Stevens suggests the seek test is portable.*/
+ seekable=_cb->seek!=NULL&&(*_cb->seek)(_stream,0,SEEK_CUR)!=-1;
+ /*If seek is implemented, tell must also be implemented.*/
+ if(seekable){
+ opus_int64 pos;
+ if(OP_UNLIKELY(_of->callbacks.tell==NULL))return OP_EINVAL;
+ pos=(*_of->callbacks.tell)(_of->stream);
+ /*If the current position is not equal to the initial bytes consumed,
+ absolute seeking will not work.*/
+ if(OP_UNLIKELY(pos!=(opus_int64)_initial_bytes))return OP_EINVAL;
+ }
+ _of->seekable=seekable;
+ /*Don't seek yet.
+ Set up a 'single' (current) logical bitstream entry for partial open.*/
+ _of->links=(OggOpusLink *)_ogg_malloc(sizeof(*_of->links));
+ /*The serialno gets filled in later by op_fetch_headers().*/
+ ogg_stream_init(&_of->os,-1);
+ pog=NULL;
+ for(;;){
+ /*Fetch all BOS pages, store the Opus header and all seen serial numbers,
+ and load subsequent Opus setup headers.*/
+ ret=op_fetch_headers(_of,&_of->links[0].head,&_of->links[0].tags,
+ &_of->serialnos,&_of->nserialnos,&_of->cserialnos,pog);
+ if(OP_UNLIKELY(ret<0))break;
+ _of->nlinks=1;
+ _of->links[0].offset=0;
+ _of->links[0].data_offset=_of->offset;
+ _of->links[0].pcm_end=-1;
+ _of->links[0].serialno=_of->os.serialno;
+ /*Fetch the initial PCM offset.*/
+ ret=op_find_initial_pcm_offset(_of,_of->links,&og);
+ if(seekable||OP_LIKELY(ret<=0))break;
+ /*This link was empty, but we already have the BOS page for the next one in
+ og.
+ We can't seek, so start processing the next link right now.*/
+ opus_tags_clear(&_of->links[0].tags);
+ _of->nlinks=0;
+ if(!seekable)_of->cur_link++;
+ pog=&og;
+ }
+ if(OP_LIKELY(ret>=0))_of->ready_state=OP_PARTOPEN;
+ return ret;
+}
+
+static int op_open2(OggOpusFile *_of){
+ int ret;
+ OP_ASSERT(_of->ready_state==OP_PARTOPEN);
+ if(_of->seekable){
+ _of->ready_state=OP_OPENED;
+ ret=op_open_seekable2(_of);
+ }
+ else ret=0;
+ if(OP_LIKELY(ret>=0)){
+ /*We have buffered packets from op_find_initial_pcm_offset().
+ Move to OP_INITSET so we can use them.*/
+ _of->ready_state=OP_STREAMSET;
+ ret=op_make_decode_ready(_of);
+ if(OP_LIKELY(ret>=0))return 0;
+ }
+ /*Don't auto-close the stream on failure.*/
+ _of->callbacks.close=NULL;
+ op_clear(_of);
+ return ret;
+}
+
+OggOpusFile *op_test_callbacks(void *_stream,const OpusFileCallbacks *_cb,
+ const unsigned char *_initial_data,size_t _initial_bytes,int *_error){
+ OggOpusFile *of;
+ int ret;
+ of=(OggOpusFile *)_ogg_malloc(sizeof(*of));
+ ret=OP_EFAULT;
+ if(OP_LIKELY(of!=NULL)){
+ ret=op_open1(of,_stream,_cb,_initial_data,_initial_bytes);
+ if(OP_LIKELY(ret>=0)){
+ if(_error!=NULL)*_error=0;
+ return of;
+ }
+ /*Don't auto-close the stream on failure.*/
+ of->callbacks.close=NULL;
+ op_clear(of);
+ _ogg_free(of);
+ }
+ if(_error!=NULL)*_error=ret;
+ return NULL;
+}
+
+OggOpusFile *op_open_callbacks(void *_stream,const OpusFileCallbacks *_cb,
+ const unsigned char *_initial_data,size_t _initial_bytes,int *_error){
+ OggOpusFile *of;
+ of=op_test_callbacks(_stream,_cb,_initial_data,_initial_bytes,_error);
+ if(OP_LIKELY(of!=NULL)){
+ int ret;
+ ret=op_open2(of);
+ if(OP_LIKELY(ret>=0))return of;
+ if(_error!=NULL)*_error=ret;
+ _ogg_free(of);
+ }
+ return NULL;
+}
+
+/*Convenience routine to clean up from failure for the open functions that
+ create their own streams.*/
+static OggOpusFile *op_open_close_on_failure(void *_stream,
+ const OpusFileCallbacks *_cb,int *_error){
+ OggOpusFile *of;
+ if(OP_UNLIKELY(_stream==NULL)){
+ if(_error!=NULL)*_error=OP_EFAULT;
+ return NULL;
+ }
+ of=op_open_callbacks(_stream,_cb,NULL,0,_error);
+ if(OP_UNLIKELY(of==NULL))(*_cb->close)(_stream);
+ return of;
+}
+
+OggOpusFile *op_open_file(const char *_path,int *_error){
+ OpusFileCallbacks cb;
+ return op_open_close_on_failure(op_fopen(&cb,_path,"rb"),&cb,_error);
+}
+
+OggOpusFile *op_open_memory(const unsigned char *_data,size_t _size,
+ int *_error){
+ OpusFileCallbacks cb;
+ return op_open_close_on_failure(op_mem_stream_create(&cb,_data,_size),&cb,
+ _error);
+}
+
+/*Convenience routine to clean up from failure for the open functions that
+ create their own streams.*/
+static OggOpusFile *op_test_close_on_failure(void *_stream,
+ const OpusFileCallbacks *_cb,int *_error){
+ OggOpusFile *of;
+ if(OP_UNLIKELY(_stream==NULL)){
+ if(_error!=NULL)*_error=OP_EFAULT;
+ return NULL;
+ }
+ of=op_test_callbacks(_stream,_cb,NULL,0,_error);
+ if(OP_UNLIKELY(of==NULL))(*_cb->close)(_stream);
+ return of;
+}
+
+OggOpusFile *op_test_file(const char *_path,int *_error){
+ OpusFileCallbacks cb;
+ return op_test_close_on_failure(op_fopen(&cb,_path,"rb"),&cb,_error);
+}
+
+OggOpusFile *op_test_memory(const unsigned char *_data,size_t _size,
+ int *_error){
+ OpusFileCallbacks cb;
+ return op_test_close_on_failure(op_mem_stream_create(&cb,_data,_size),&cb,
+ _error);
+}
+
+int op_test_open(OggOpusFile *_of){
+ int ret;
+ if(OP_UNLIKELY(_of->ready_state!=OP_PARTOPEN))return OP_EINVAL;
+ ret=op_open2(_of);
+ /*op_open2() will clear this structure on failure.
+ Reset its contents to prevent double-frees in op_free().*/
+ if(OP_UNLIKELY(ret<0))memset(_of,0,sizeof(*_of));
+ return ret;
+}
+
+void op_free(OggOpusFile *_of){
+ if(OP_LIKELY(_of!=NULL)){
+ op_clear(_of);
+ _ogg_free(_of);
+ }
+}
+
+int op_seekable(const OggOpusFile *_of){
+ return _of->seekable;
+}
+
+int op_link_count(const OggOpusFile *_of){
+ return _of->nlinks;
+}
+
+opus_uint32 op_serialno(const OggOpusFile *_of,int _li){
+ if(OP_UNLIKELY(_li>=_of->nlinks))_li=_of->nlinks-1;
+ if(!_of->seekable)_li=0;
+ return _of->links[_li<0?_of->cur_link:_li].serialno;
+}
+
+int op_channel_count(const OggOpusFile *_of,int _li){
+ return op_head(_of,_li)->channel_count;
+}
+
+opus_int64 op_raw_total(const OggOpusFile *_of,int _li){
+ if(OP_UNLIKELY(_of->ready_state<OP_OPENED)
+ ||OP_UNLIKELY(!_of->seekable)
+ ||OP_UNLIKELY(_li>=_of->nlinks)){
+ return OP_EINVAL;
+ }
+ if(_li<0)return _of->end;
+ return (_li+1>=_of->nlinks?_of->end:_of->links[_li+1].offset)
+ -(_li>0?_of->links[_li].offset:0);
+}
+
+ogg_int64_t op_pcm_total(const OggOpusFile *_of,int _li){
+ OggOpusLink *links;
+ ogg_int64_t pcm_total;
+ ogg_int64_t diff;
+ int nlinks;
+ nlinks=_of->nlinks;
+ if(OP_UNLIKELY(_of->ready_state<OP_OPENED)
+ ||OP_UNLIKELY(!_of->seekable)
+ ||OP_UNLIKELY(_li>=nlinks)){
+ return OP_EINVAL;
+ }
+ links=_of->links;
+ /*We verify that the granule position differences are larger than the
+ pre-skip and that the total duration does not overflow during link
+ enumeration, so we don't have to check here.*/
+ pcm_total=0;
+ if(_li<0){
+ pcm_total=links[nlinks-1].pcm_file_offset;
+ _li=nlinks-1;
+ }
+ OP_ALWAYS_TRUE(!op_granpos_diff(&diff,
+ links[_li].pcm_end,links[_li].pcm_start));
+ return pcm_total+diff-links[_li].head.pre_skip;
+}
+
+const OpusHead *op_head(const OggOpusFile *_of,int _li){
+ if(OP_UNLIKELY(_li>=_of->nlinks))_li=_of->nlinks-1;
+ if(!_of->seekable)_li=0;
+ return &_of->links[_li<0?_of->cur_link:_li].head;
+}
+
+const OpusTags *op_tags(const OggOpusFile *_of,int _li){
+ if(OP_UNLIKELY(_li>=_of->nlinks))_li=_of->nlinks-1;
+ if(!_of->seekable){
+ if(_of->ready_state<OP_STREAMSET&&_of->ready_state!=OP_PARTOPEN){
+ return NULL;
+ }
+ _li=0;
+ }
+ else if(_li<0)_li=_of->ready_state>=OP_STREAMSET?_of->cur_link:0;
+ return &_of->links[_li].tags;
+}
+
+int op_current_link(const OggOpusFile *_of){
+ if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
+ return _of->cur_link;
+}
+
+/*Compute an average bitrate given a byte and sample count.
+ Return: The bitrate in bits per second.*/
+static opus_int32 op_calc_bitrate(opus_int64 _bytes,ogg_int64_t _samples){
+ /*These rates are absurd, but let's handle them anyway.*/
+ if(OP_UNLIKELY(_bytes>(OP_INT64_MAX-(_samples>>1))/(48000*8))){
+ ogg_int64_t den;
+ if(OP_UNLIKELY(_bytes/(OP_INT32_MAX/(48000*8))>=_samples)){
+ return OP_INT32_MAX;
+ }
+ den=_samples/(48000*8);
+ return (opus_int32)((_bytes+(den>>1))/den);
+ }
+ if(OP_UNLIKELY(_samples<=0))return OP_INT32_MAX;
+ /*This can't actually overflow in normal operation: even with a pre-skip of
+ 545 2.5 ms frames with 8 streams running at 1282*8+1 bytes per packet
+ (1275 byte frames + Opus framing overhead + Ogg lacing values), that all
+ produce a single sample of decoded output, we still don't top 45 Mbps.
+ The only way to get bitrates larger than that is with excessive Opus
+ padding, more encoded streams than output channels, or lots and lots of
+ Ogg pages with no packets on them.*/
+ return (opus_int32)OP_MIN((_bytes*48000*8+(_samples>>1))/_samples,
+ OP_INT32_MAX);
+}
+
+opus_int32 op_bitrate(const OggOpusFile *_of,int _li){
+ if(OP_UNLIKELY(_of->ready_state<OP_OPENED)||OP_UNLIKELY(!_of->seekable)
+ ||OP_UNLIKELY(_li>=_of->nlinks)){
+ return OP_EINVAL;
+ }
+ return op_calc_bitrate(op_raw_total(_of,_li),op_pcm_total(_of,_li));
+}
+
+opus_int32 op_bitrate_instant(OggOpusFile *_of){
+ ogg_int64_t samples_tracked;
+ opus_int32 ret;
+ if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
+ samples_tracked=_of->samples_tracked;
+ if(OP_UNLIKELY(samples_tracked==0))return OP_FALSE;
+ ret=op_calc_bitrate(_of->bytes_tracked,samples_tracked);
+ _of->bytes_tracked=0;
+ _of->samples_tracked=0;
+ return ret;
+}
+
+/*Given a serialno, find a link with a corresponding Opus stream, if it exists.
+ Return: The index of the link to which the page belongs, or a negative number
+ if it was not a desired Opus bitstream section.*/
+static int op_get_link_from_serialno(const OggOpusFile *_of,int _cur_link,
+ opus_int64 _page_offset,ogg_uint32_t _serialno){
+ const OggOpusLink *links;
+ int nlinks;
+ int li_lo;
+ int li_hi;
+ OP_ASSERT(_of->seekable);
+ links=_of->links;
+ nlinks=_of->nlinks;
+ li_lo=0;
+ /*Start off by guessing we're just a multiplexed page in the current link.*/
+ li_hi=_cur_link+1<nlinks&&_page_offset<links[_cur_link+1].offset?
+ _cur_link+1:nlinks;
+ do{
+ if(_page_offset>=links[_cur_link].offset)li_lo=_cur_link;
+ else li_hi=_cur_link;
+ _cur_link=li_lo+(li_hi-li_lo>>1);
+ }
+ while(li_hi-li_lo>1);
+ /*We've identified the link that should contain this page.
+ Make sure it's a page we care about.*/
+ if(links[_cur_link].serialno!=_serialno)return OP_FALSE;
+ return _cur_link;
+}
+
+/*Fetch and process a page.
+ This handles the case where we're at a bitstream boundary and dumps the
+ decoding machine.
+ If the decoding machine is unloaded, it loads it.
+ It also keeps prev_packet_gp up to date (seek and read both use this).
+ Return: <0) Error, OP_HOLE (lost packet), or OP_EOF.
+ 0) Got at least one audio data packet.*/
+static int op_fetch_and_process_page(OggOpusFile *_of,
+ ogg_page *_og,opus_int64 _page_offset,int _spanp,int _ignore_holes){
+ OggOpusLink *links;
+ ogg_uint32_t cur_serialno;
+ int seekable;
+ int cur_link;
+ int ret;
+ /*We shouldn't get here if we have unprocessed packets.*/
+ OP_ASSERT(_of->ready_state<OP_INITSET||_of->op_pos>=_of->op_count);
+ seekable=_of->seekable;
+ links=_of->links;
+ cur_link=seekable?_of->cur_link:0;
+ cur_serialno=links[cur_link].serialno;
+ /*Handle one page.*/
+ for(;;){
+ ogg_page og;
+ OP_ASSERT(_of->ready_state>=OP_OPENED);
+ /*If we were given a page to use, use it.*/
+ if(_og!=NULL){
+ *&og=*_og;
+ _og=NULL;
+ }
+ /*Keep reading until we get a page with the correct serialno.*/
+ else _page_offset=op_get_next_page(_of,&og,_of->end);
+ /*EOF: Leave uninitialized.*/
+ if(_page_offset<0)return _page_offset<OP_FALSE?(int)_page_offset:OP_EOF;
+ if(OP_LIKELY(_of->ready_state>=OP_STREAMSET)
+ &&cur_serialno!=(ogg_uint32_t)ogg_page_serialno(&og)){
+ /*Two possibilities:
+ 1) Another stream is multiplexed into this logical section, or*/
+ if(OP_LIKELY(!ogg_page_bos(&og)))continue;
+ /* 2) Our decoding just traversed a bitstream boundary.*/
+ if(!_spanp)return OP_EOF;
+ if(OP_LIKELY(_of->ready_state>=OP_INITSET))op_decode_clear(_of);
+ }
+ /*Bitrate tracking: add the header's bytes here.
+ The body bytes are counted when we consume the packets.*/
+ else _of->bytes_tracked+=og.header_len;
+ /*Do we need to load a new machine before submitting the page?
+ This is different in the seekable and non-seekable cases.
+ In the seekable case, we already have all the header information loaded
+ and cached.
+ We just initialize the machine with it and continue on our merry way.
+ In the non-seekable (streaming) case, we'll only be at a boundary if we
+ just left the previous logical bitstream, and we're now nominally at the
+ header of the next bitstream.*/
+ if(OP_UNLIKELY(_of->ready_state<OP_STREAMSET)){
+ if(seekable){
+ ogg_uint32_t serialno;
+ serialno=ogg_page_serialno(&og);
+ /*Match the serialno to bitstream section.*/
+ OP_ASSERT(cur_link>=0&&cur_link<_of->nlinks);
+ if(links[cur_link].serialno!=serialno){
+ /*It wasn't a page from the current link.
+ Is it from the next one?*/
+ if(OP_LIKELY(cur_link+1<_of->nlinks&&links[cur_link+1].serialno==
+ serialno)){
+ cur_link++;
+ }
+ else{
+ int new_link;
+ new_link=
+ op_get_link_from_serialno(_of,cur_link,_page_offset,serialno);
+ /*Not a desired Opus bitstream section.
+ Keep trying.*/
+ if(new_link<0)continue;
+ cur_link=new_link;
+ }
+ }
+ cur_serialno=serialno;
+ _of->cur_link=cur_link;
+ ogg_stream_reset_serialno(&_of->os,serialno);
+ _of->ready_state=OP_STREAMSET;
+ /*If we're at the start of this link, initialize the granule position
+ and pre-skip tracking.*/
+ if(_page_offset<=links[cur_link].data_offset){
+ _of->prev_packet_gp=links[cur_link].pcm_start;
+ _of->prev_page_offset=-1;
+ _of->cur_discard_count=links[cur_link].head.pre_skip;
+ /*Ignore a hole at the start of a new link (this is common for
+ streams joined in the middle) or after seeking.*/
+ _ignore_holes=1;
+ }
+ }
+ else{
+ do{
+ /*We're streaming.
+ Fetch the two header packets, build the info struct.*/
+ ret=op_fetch_headers(_of,&links[0].head,&links[0].tags,
+ NULL,NULL,NULL,&og);
+ if(OP_UNLIKELY(ret<0))return ret;
+ /*op_find_initial_pcm_offset() will suppress any initial hole for us,
+ so no need to set _ignore_holes.*/
+ ret=op_find_initial_pcm_offset(_of,links,&og);
+ if(OP_UNLIKELY(ret<0))return ret;
+ _of->links[0].serialno=cur_serialno=_of->os.serialno;
+ _of->cur_link++;
+ }
+ /*If the link was empty, keep going, because we already have the
+ BOS page of the next one in og.*/
+ while(OP_UNLIKELY(ret>0));
+ /*If we didn't get any packets out of op_find_initial_pcm_offset(),
+ keep going (this is possible if end-trimming trimmed them all).*/
+ if(_of->op_count<=0)continue;
+ /*Otherwise, we're done.
+ TODO: This resets bytes_tracked, which misses the header bytes
+ already processed by op_find_initial_pcm_offset().*/
+ ret=op_make_decode_ready(_of);
+ if(OP_UNLIKELY(ret<0))return ret;
+ return 0;
+ }
+ }
+ /*The buffered page is the data we want, and we're ready for it.
+ Add it to the stream state.*/
+ if(OP_UNLIKELY(_of->ready_state==OP_STREAMSET)){
+ ret=op_make_decode_ready(_of);
+ if(OP_UNLIKELY(ret<0))return ret;
+ }
+ /*Extract all the packets from the current page.*/
+ ogg_stream_pagein(&_of->os,&og);
+ if(OP_LIKELY(_of->ready_state>=OP_INITSET)){
+ opus_int32 total_duration;
+ int durations[255];
+ int op_count;
+ int report_hole;
+ report_hole=0;
+ total_duration=op_collect_audio_packets(_of,durations);
+ if(OP_UNLIKELY(total_duration<0)){
+ /*libogg reported a hole (a gap in the page sequence numbers).
+ Drain the packets from the page anyway.
+ If we don't, they'll still be there when we fetch the next page.
+ Then, when we go to pull out packets, we might get more than 255,
+ which would overrun our packet buffer.*/
+ total_duration=op_collect_audio_packets(_of,durations);
+ OP_ASSERT(total_duration>=0);
+ if(!_ignore_holes){
+ /*Report the hole to the caller after we finish timestamping the
+ packets.*/
+ report_hole=1;
+ /*We had lost or damaged pages, so reset our granule position
+ tracking.
+ This makes holes behave the same as a small raw seek.
+ If the next page is the EOS page, we'll discard it (because we
+ can't perform end trimming properly), and we'll always discard at
+ least 80 ms of audio (to allow decoder state to re-converge).
+ We could try to fill in the gap with PLC by looking at timestamps
+ in the non-EOS case, but that's complicated and error prone and we
+ can't rely on the timestamps being valid.*/
+ _of->prev_packet_gp=-1;
+ }
+ }
+ op_count=_of->op_count;
+ /*If we found at least one audio data packet, compute per-packet granule
+ positions for them.*/
+ if(op_count>0){
+ ogg_int64_t diff;
+ ogg_int64_t prev_packet_gp;
+ ogg_int64_t cur_packet_gp;
+ ogg_int64_t cur_page_gp;
+ int cur_page_eos;
+ int pi;
+ cur_page_gp=_of->op[op_count-1].granulepos;
+ cur_page_eos=_of->op[op_count-1].e_o_s;
+ prev_packet_gp=_of->prev_packet_gp;
+ if(OP_UNLIKELY(prev_packet_gp==-1)){
+ opus_int32 cur_discard_count;
+ /*This is the first call after a raw seek.
+ Try to reconstruct prev_packet_gp from scratch.*/
+ OP_ASSERT(seekable);
+ if(OP_UNLIKELY(cur_page_eos)){
+ /*If the first page we hit after our seek was the EOS page, and
+ we didn't start from data_offset or before, we don't have
+ enough information to do end-trimming.
+ Proceed to the next link, rather than risk playing back some
+ samples that shouldn't have been played.*/
+ _of->op_count=0;
+ if(report_hole)return OP_HOLE;
+ continue;
+ }
+ /*By default discard 80 ms of data after a seek, unless we seek
+ into the pre-skip region.*/
+ cur_discard_count=80*48;
+ cur_page_gp=_of->op[op_count-1].granulepos;
+ /*Try to initialize prev_packet_gp.
+ If the current page had packets but didn't have a granule
+ position, or the granule position it had was too small (both
+ illegal), just use the starting granule position for the link.*/
+ prev_packet_gp=links[cur_link].pcm_start;
+ if(OP_LIKELY(cur_page_gp!=-1)){
+ op_granpos_add(&prev_packet_gp,cur_page_gp,-total_duration);
+ }
+ if(OP_LIKELY(!op_granpos_diff(&diff,
+ prev_packet_gp,links[cur_link].pcm_start))){
+ opus_int32 pre_skip;
+ /*If we start at the beginning of the pre-skip region, or we're
+ at least 80 ms from the end of the pre-skip region, we discard
+ to the end of the pre-skip region.
+ Otherwise, we still use the 80 ms default, which will discard
+ past the end of the pre-skip region.*/
+ pre_skip=links[cur_link].head.pre_skip;
+ if(diff>=0&&diff<=OP_MAX(0,pre_skip-80*48)){
+ cur_discard_count=pre_skip-(int)diff;
+ }
+ }
+ _of->cur_discard_count=cur_discard_count;
+ }
+ if(OP_UNLIKELY(cur_page_gp==-1)){
+ /*This page had completed packets but didn't have a valid granule
+ position.
+ This is illegal, but we'll try to handle it by continuing to count
+ forwards from the previous page.*/
+ if(op_granpos_add(&cur_page_gp,prev_packet_gp,total_duration)<0){
+ /*The timestamp for this page overflowed.*/
+ cur_page_gp=links[cur_link].pcm_end;
+ }
+ }
+ /*If we hit the last page, handle end-trimming.*/
+ if(OP_UNLIKELY(cur_page_eos)
+ &&OP_LIKELY(!op_granpos_diff(&diff,cur_page_gp,prev_packet_gp))
+ &&OP_LIKELY(diff<total_duration)){
+ cur_packet_gp=prev_packet_gp;
+ for(pi=0;pi<op_count;pi++){
+ /*Check for overflow.*/
+ if(diff<0&&OP_UNLIKELY(OP_INT64_MAX+diff<durations[pi])){
+ diff=durations[pi]+1;
+ }
+ else diff=durations[pi]-diff;
+ /*If we have samples to trim...*/
+ if(diff>0){
+ /*If we trimmed the entire packet, stop (the spec says encoders
+ shouldn't do this, but we support it anyway).*/
+ if(OP_UNLIKELY(diff>durations[pi]))break;
+ cur_packet_gp=cur_page_gp;
+ /*Move the EOS flag to this packet, if necessary, so we'll trim
+ the samples during decode.*/
+ _of->op[pi].e_o_s=1;
+ }
+ else{
+ /*Update the granule position as normal.*/
+ OP_ALWAYS_TRUE(!op_granpos_add(&cur_packet_gp,
+ cur_packet_gp,durations[pi]));
+ }
+ _of->op[pi].granulepos=cur_packet_gp;
+ OP_ALWAYS_TRUE(!op_granpos_diff(&diff,cur_page_gp,cur_packet_gp));
+ }
+ }
+ else{
+ /*Propagate timestamps to earlier packets.
+ op_granpos_add(&prev_packet_gp,prev_packet_gp,total_duration)
+ should succeed and give prev_packet_gp==cur_page_gp.
+ But we don't bother to check that, as there isn't much we can do
+ if it's not true, and it actually will not be true on the first
+ page after a seek, if there was a continued packet.
+ The only thing we guarantee is that the start and end granule
+ positions of the packets are valid, and that they are monotonic
+ within a page.
+ They might be completely out of range for this link (we'll check
+ that elsewhere), or non-monotonic between pages.*/
+ if(OP_UNLIKELY(op_granpos_add(&prev_packet_gp,
+ cur_page_gp,-total_duration)<0)){
+ /*The starting timestamp for the first packet on this page
+ underflowed.
+ This is illegal, but we ignore it.*/
+ prev_packet_gp=0;
+ }
+ for(pi=0;pi<op_count;pi++){
+ if(OP_UNLIKELY(op_granpos_add(&cur_packet_gp,
+ cur_page_gp,-total_duration)<0)){
+ /*The start timestamp for this packet underflowed.
+ This is illegal, but we ignore it.*/
+ cur_packet_gp=0;
+ }
+ total_duration-=durations[pi];
+ OP_ASSERT(total_duration>=0);
+ OP_ALWAYS_TRUE(!op_granpos_add(&cur_packet_gp,
+ cur_packet_gp,durations[pi]));
+ _of->op[pi].granulepos=cur_packet_gp;
+ }
+ OP_ASSERT(total_duration==0);
+ }
+ _of->prev_packet_gp=prev_packet_gp;
+ _of->prev_page_offset=_page_offset;
+ _of->op_count=op_count=pi;
+ }
+ if(report_hole)return OP_HOLE;
+ /*If end-trimming didn't trim all the packets, we're done.*/
+ if(op_count>0)return 0;
+ }
+ }
+}
+
+int op_raw_seek(OggOpusFile *_of,opus_int64 _pos){
+ int ret;
+ if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
+ /*Don't dump the decoder state if we can't seek.*/
+ if(OP_UNLIKELY(!_of->seekable))return OP_ENOSEEK;
+ if(OP_UNLIKELY(_pos<0)||OP_UNLIKELY(_pos>_of->end))return OP_EINVAL;
+ /*Clear out any buffered, decoded data.*/
+ op_decode_clear(_of);
+ _of->bytes_tracked=0;
+ _of->samples_tracked=0;
+ ret=op_seek_helper(_of,_pos);
+ if(OP_UNLIKELY(ret<0))return OP_EREAD;
+ ret=op_fetch_and_process_page(_of,NULL,-1,1,1);
+ /*If we hit EOF, op_fetch_and_process_page() leaves us uninitialized.
+ Instead, jump to the end.*/
+ if(ret==OP_EOF){
+ int cur_link;
+ op_decode_clear(_of);
+ cur_link=_of->nlinks-1;
+ _of->cur_link=cur_link;
+ _of->prev_packet_gp=_of->links[cur_link].pcm_end;
+ _of->cur_discard_count=0;
+ ret=0;
+ }
+ return ret;
+}
+
+/*Convert a PCM offset relative to the start of the whole stream to a granule
+ position in an individual link.*/
+static ogg_int64_t op_get_granulepos(const OggOpusFile *_of,
+ ogg_int64_t _pcm_offset,int *_li){
+ const OggOpusLink *links;
+ ogg_int64_t duration;
+ ogg_int64_t pcm_start;
+ opus_int32 pre_skip;
+ int nlinks;
+ int li_lo;
+ int li_hi;
+ OP_ASSERT(_pcm_offset>=0);
+ nlinks=_of->nlinks;
+ links=_of->links;
+ li_lo=0;
+ li_hi=nlinks;
+ do{
+ int li;
+ li=li_lo+(li_hi-li_lo>>1);
+ if(links[li].pcm_file_offset<=_pcm_offset)li_lo=li;
+ else li_hi=li;
+ }
+ while(li_hi-li_lo>1);
+ _pcm_offset-=links[li_lo].pcm_file_offset;
+ pcm_start=links[li_lo].pcm_start;
+ pre_skip=links[li_lo].head.pre_skip;
+ OP_ALWAYS_TRUE(!op_granpos_diff(&duration,links[li_lo].pcm_end,pcm_start));
+ duration-=pre_skip;
+ if(_pcm_offset>=duration)return -1;
+ _pcm_offset+=pre_skip;
+ if(OP_UNLIKELY(pcm_start>OP_INT64_MAX-_pcm_offset)){
+ /*Adding this amount to the granule position would overflow the positive
+ half of its 64-bit range.
+ Since signed overflow is undefined in C, do it in a way the compiler
+ isn't allowed to screw up.*/
+ _pcm_offset-=OP_INT64_MAX-pcm_start+1;
+ pcm_start=OP_INT64_MIN;
+ }
+ pcm_start+=_pcm_offset;
+ *_li=li_lo;
+ return pcm_start;
+}
+
+/*A small helper to determine if an Ogg page contains data that continues onto
+ a subsequent page.*/
+static int op_page_continues(const ogg_page *_og){
+ int nlacing;
+ OP_ASSERT(_og->header_len>=27);
+ nlacing=_og->header[26];
+ OP_ASSERT(_og->header_len>=27+nlacing);
+ /*This also correctly handles the (unlikely) case of nlacing==0, because
+ 0!=255.*/
+ return _og->header[27+nlacing-1]==255;
+}
+
+/*A small helper to buffer the continued packet data from a page.*/
+static void op_buffer_continued_data(OggOpusFile *_of,ogg_page *_og){
+ ogg_packet op;
+ ogg_stream_pagein(&_of->os,_og);
+ /*Drain any packets that did end on this page (and ignore holes).
+ We only care about the continued packet data.*/
+ while(ogg_stream_packetout(&_of->os,&op));
+}
+
+/*This controls how close the target has to be to use the current stream
+ position to subdivide the initial range.
+ Two minutes seems to be a good default.*/
+#define OP_CUR_TIME_THRESH (120*48*(opus_int32)1000)
+
+/*Note: The OP_SMALL_FOOTPRINT #define doesn't (currently) save much code size,
+ but it's meant to serve as documentation for portions of the seeking
+ algorithm that are purely optional, to aid others learning from/porting this
+ code to other contexts.*/
+/*#define OP_SMALL_FOOTPRINT (1)*/
+
+/*Search within link _li for the page with the highest granule position
+ preceding (or equal to) _target_gp.
+ There is a danger here: missing pages or incorrect frame number information
+ in the bitstream could make our task impossible.
+ Account for that (and report it as an error condition).*/
+static int op_pcm_seek_page(OggOpusFile *_of,
+ ogg_int64_t _target_gp,int _li){
+ const OggOpusLink *link;
+ ogg_page og;
+ ogg_int64_t pcm_pre_skip;
+ ogg_int64_t pcm_start;
+ ogg_int64_t pcm_end;
+ ogg_int64_t best_gp;
+ ogg_int64_t diff;
+ ogg_uint32_t serialno;
+ opus_int32 pre_skip;
+ opus_int64 begin;
+ opus_int64 end;
+ opus_int64 boundary;
+ opus_int64 best;
+ opus_int64 best_start;
+ opus_int64 page_offset;
+ opus_int64 d0;
+ opus_int64 d1;
+ opus_int64 d2;
+ int force_bisect;
+ int buffering;
+ int ret;
+ _of->bytes_tracked=0;
+ _of->samples_tracked=0;
+ link=_of->links+_li;
+ best_gp=pcm_start=link->pcm_start;
+ pcm_end=link->pcm_end;
+ serialno=link->serialno;
+ best=best_start=begin=link->data_offset;
+ page_offset=-1;
+ buffering=0;
+ /*We discard the first 80 ms of data after a seek, so seek back that much
+ farther.
+ If we can't, simply seek to the beginning of the link.*/
+ if(OP_UNLIKELY(op_granpos_add(&_target_gp,_target_gp,-80*48)<0)
+ ||OP_UNLIKELY(op_granpos_cmp(_target_gp,pcm_start)<0)){
+ _target_gp=pcm_start;
+ }
+ /*Special case seeking to the start of the link.*/
+ pre_skip=link->head.pre_skip;
+ OP_ALWAYS_TRUE(!op_granpos_add(&pcm_pre_skip,pcm_start,pre_skip));
+ if(op_granpos_cmp(_target_gp,pcm_pre_skip)<0)end=boundary=begin;
+ else{
+ end=boundary=link->end_offset;
+#if !defined(OP_SMALL_FOOTPRINT)
+ /*If we were decoding from this link, we can narrow the range a bit.*/
+ if(_li==_of->cur_link&&_of->ready_state>=OP_INITSET){
+ opus_int64 offset;
+ int op_count;
+ op_count=_of->op_count;
+ /*The only way the offset can be invalid _and_ we can fail the granule
+ position checks below is if someone changed the contents of the last
+ page since we read it.
+ We'd be within our rights to just return OP_EBADLINK in that case, but
+ we'll simply ignore the current position instead.*/
+ offset=_of->offset;
+ if(op_count>0&&OP_LIKELY(offset<=end)){
+ ogg_int64_t gp;
+ /*Make sure the timestamp is valid.
+ The granule position might be -1 if we collected the packets from a
+ page without a granule position after reporting a hole.*/
+ gp=_of->op[op_count-1].granulepos;
+ if(OP_LIKELY(gp!=-1)&&OP_LIKELY(op_granpos_cmp(pcm_start,gp)<0)
+ &&OP_LIKELY(op_granpos_cmp(pcm_end,gp)>0)){
+ OP_ALWAYS_TRUE(!op_granpos_diff(&diff,gp,_target_gp));
+ /*We only actually use the current time if either
+ a) We can cut off at least half the range, or
+ b) We're seeking sufficiently close to the current position that
+ it's likely to be informative.
+ Otherwise it appears using the whole link range to estimate the
+ first seek location gives better results, on average.*/
+ if(diff<0){
+ OP_ASSERT(offset>=begin);
+ if(offset-begin>=end-begin>>1||diff>-OP_CUR_TIME_THRESH){
+ best=begin=offset;
+ best_gp=pcm_start=gp;
+ /*If we have buffered data from a continued packet, remember the
+ offset of the previous page's start, so that if we do wind up
+ having to seek back here later, we can prime the stream with
+ the continued packet data.
+ With no continued packet, we remember the end of the page.*/
+ best_start=_of->os.body_returned<_of->os.body_fill?
+ _of->prev_page_offset:best;
+ /*If there's completed packets and data in the stream state,
+ prev_page_offset should always be set.*/
+ OP_ASSERT(best_start>=0);
+ /*Buffer any continued packet data starting from here.*/
+ buffering=1;
+ }
+ }
+ else{
+ ogg_int64_t prev_page_gp;
+ /*We might get lucky and already have the packet with the target
+ buffered.
+ Worth checking.
+ For very small files (with all of the data in a single page,
+ generally 1 second or less), we can loop them continuously
+ without seeking at all.*/
+ OP_ALWAYS_TRUE(!op_granpos_add(&prev_page_gp,_of->op[0].granulepos,
+ -op_get_packet_duration(_of->op[0].packet,_of->op[0].bytes)));
+ if(op_granpos_cmp(prev_page_gp,_target_gp)<=0){
+ /*Don't call op_decode_clear(), because it will dump our
+ packets.*/
+ _of->op_pos=0;
+ _of->od_buffer_size=0;
+ _of->prev_packet_gp=prev_page_gp;
+ /*_of->prev_page_offset already points to the right place.*/
+ _of->ready_state=OP_STREAMSET;
+ return op_make_decode_ready(_of);
+ }
+ /*No such luck.
+ Check if we can cut off at least half the range, though.*/
+ if(offset-begin<=end-begin>>1||diff<OP_CUR_TIME_THRESH){
+ /*We really want the page start here, but this will do.*/
+ end=boundary=offset;
+ pcm_end=gp;
+ }
+ }
+ }
+ }
+ }
+#endif
+ }
+ /*This code was originally based on the "new search algorithm by HB (Nicholas
+ Vinen)" from libvorbisfile.
+ It has been modified substantially since.*/
+ op_decode_clear(_of);
+ if(!buffering)ogg_stream_reset_serialno(&_of->os,serialno);
+ _of->cur_link=_li;
+ _of->ready_state=OP_STREAMSET;
+ /*Initialize the interval size history.*/
+ d2=d1=d0=end-begin;
+ force_bisect=0;
+ while(begin<end){
+ opus_int64 bisect;
+ opus_int64 next_boundary;
+ opus_int32 chunk_size;
+ if(end-begin<OP_CHUNK_SIZE)bisect=begin;
+ else{
+ /*Update the interval size history.*/
+ d0=d1>>1;
+ d1=d2>>1;
+ d2=end-begin>>1;
+ if(force_bisect)bisect=begin+(end-begin>>1);
+ else{
+ ogg_int64_t diff2;
+ OP_ALWAYS_TRUE(!op_granpos_diff(&diff,_target_gp,pcm_start));
+ OP_ALWAYS_TRUE(!op_granpos_diff(&diff2,pcm_end,pcm_start));
+ /*Take a (pretty decent) guess.*/
+ bisect=begin+op_rescale64(diff,diff2,end-begin)-OP_CHUNK_SIZE;
+ }
+ if(bisect-OP_CHUNK_SIZE<begin)bisect=begin;
+ force_bisect=0;
+ }
+ if(bisect!=_of->offset){
+ /*Discard any buffered continued packet data.*/
+ if(buffering)ogg_stream_reset(&_of->os);
+ buffering=0;
+ page_offset=-1;
+ ret=op_seek_helper(_of,bisect);
+ if(OP_UNLIKELY(ret<0))return ret;
+ }
+ chunk_size=OP_CHUNK_SIZE;
+ next_boundary=boundary;
+ /*Now scan forward and figure out where we landed.
+ In the ideal case, we will see a page with a granule position at or
+ before our target, followed by a page with a granule position after our
+ target (or the end of the search interval).
+ Then we can just drop out and will have all of the data we need with no
+ additional seeking.
+ If we landed too far before, or after, we'll break out and do another
+ bisection.*/
+ while(begin<end){
+ page_offset=op_get_next_page(_of,&og,boundary);
+ if(page_offset<0){
+ if(page_offset<OP_FALSE)return (int)page_offset;
+ /*There are no more pages in our interval from our stream with a valid
+ timestamp that start at position bisect or later.*/
+ /*If we scanned the whole interval, we're done.*/
+ if(bisect<=begin+1)end=begin;
+ else{
+ /*Otherwise, back up one chunk.
+ First, discard any data from a continued packet.*/
+ if(buffering)ogg_stream_reset(&_of->os);
+ buffering=0;
+ bisect=OP_MAX(bisect-chunk_size,begin);
+ ret=op_seek_helper(_of,bisect);
+ if(OP_UNLIKELY(ret<0))return ret;
+ /*Bump up the chunk size.*/
+ chunk_size=OP_MIN(2*chunk_size,OP_CHUNK_SIZE_MAX);
+ /*If we did find a page from another stream or without a timestamp,
+ don't read past it.*/
+ boundary=next_boundary;
+ }
+ }
+ else{
+ ogg_int64_t gp;
+ int has_packets;
+ /*Save the offset of the first page we found after the seek, regardless
+ of the stream it came from or whether or not it has a timestamp.*/
+ next_boundary=OP_MIN(page_offset,next_boundary);
+ if(serialno!=(ogg_uint32_t)ogg_page_serialno(&og))continue;
+ has_packets=ogg_page_packets(&og)>0;
+ /*Force the gp to -1 (as it should be per spec) if no packets end on
+ this page.
+ Otherwise we might get confused when we try to pull out a packet
+ with that timestamp and can't find it.*/
+ gp=has_packets?ogg_page_granulepos(&og):-1;
+ if(gp==-1){
+ if(buffering){
+ if(OP_LIKELY(!has_packets))ogg_stream_pagein(&_of->os,&og);
+ else{
+ /*If packets did end on this page, but we still didn't have a
+ valid granule position (in violation of the spec!), stop
+ buffering continued packet data.
+ Otherwise we might continue past the packet we actually
+ wanted.*/
+ ogg_stream_reset(&_of->os);
+ buffering=0;
+ }
+ }
+ continue;
+ }
+ if(op_granpos_cmp(gp,_target_gp)<0){
+ /*We found a page that ends before our target.
+ Advance to the raw offset of the next page.*/
+ begin=_of->offset;
+ if(OP_UNLIKELY(op_granpos_cmp(pcm_start,gp)>0)
+ ||OP_UNLIKELY(op_granpos_cmp(pcm_end,gp)<0)){
+ /*Don't let pcm_start get out of range!
+ That could happen with an invalid timestamp.*/
+ break;
+ }
+ /*Save the byte offset of the end of the page with this granule
+ position.*/
+ best=best_start=begin;
+ /*Buffer any data from a continued packet, if necessary.
+ This avoids the need to seek back here if the next timestamp we
+ encounter while scanning forward lies after our target.*/
+ if(buffering)ogg_stream_reset(&_of->os);
+ if(op_page_continues(&og)){
+ op_buffer_continued_data(_of,&og);
+ /*If we have a continued packet, remember the offset of this
+ page's start, so that if we do wind up having to seek back here
+ later, we can prime the stream with the continued packet data.
+ With no continued packet, we remember the end of the page.*/
+ best_start=page_offset;
+ }
+ /*Then force buffering on, so that if a packet starts (but does not
+ end) on the next page, we still avoid the extra seek back.*/
+ buffering=1;
+ best_gp=pcm_start=gp;
+ OP_ALWAYS_TRUE(!op_granpos_diff(&diff,_target_gp,pcm_start));
+ /*If we're more than a second away from our target, break out and
+ do another bisection.*/
+ if(diff>48000)break;
+ /*Otherwise, keep scanning forward (do NOT use begin+1).*/
+ bisect=begin;
+ }
+ else{
+ /*We found a page that ends after our target.*/
+ /*If we scanned the whole interval before we found it, we're done.*/
+ if(bisect<=begin+1)end=begin;
+ else{
+ end=bisect;
+ /*In later iterations, don't read past the first page we found.*/
+ boundary=next_boundary;
+ /*If we're not making much progress shrinking the interval size,
+ start forcing straight bisection to limit the worst case.*/
+ force_bisect=end-begin>d0*2;
+ /*Don't let pcm_end get out of range!
+ That could happen with an invalid timestamp.*/
+ if(OP_LIKELY(op_granpos_cmp(pcm_end,gp)>0)
+ &&OP_LIKELY(op_granpos_cmp(pcm_start,gp)<=0)){
+ pcm_end=gp;
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ /*Found our page.*/
+ OP_ASSERT(op_granpos_cmp(best_gp,pcm_start)>=0);
+ /*Seek, if necessary.
+ If we were buffering data from a continued packet, we should be able to
+ continue to scan forward to get the rest of the data (even if
+ page_offset==-1).
+ Otherwise, we need to seek back to best_start.*/
+ if(!buffering){
+ if(best_start!=page_offset){
+ page_offset=-1;
+ ret=op_seek_helper(_of,best_start);
+ if(OP_UNLIKELY(ret<0))return ret;
+ }
+ if(best_start<best){
+ /*Retrieve the page at best_start, if we do not already have it.*/
+ if(page_offset<0){
+ page_offset=op_get_next_page(_of,&og,link->end_offset);
+ if(OP_UNLIKELY(page_offset<OP_FALSE))return (int)page_offset;
+ if(OP_UNLIKELY(page_offset!=best_start))return OP_EBADLINK;
+ }
+ op_buffer_continued_data(_of,&og);
+ page_offset=-1;
+ }
+ }
+ /*Update prev_packet_gp to allow per-packet granule position assignment.*/
+ _of->prev_packet_gp=best_gp;
+ _of->prev_page_offset=best_start;
+ ret=op_fetch_and_process_page(_of,page_offset<0?NULL:&og,page_offset,0,1);
+ if(OP_UNLIKELY(ret<0))return OP_EBADLINK;
+ /*Verify result.*/
+ if(OP_UNLIKELY(op_granpos_cmp(_of->prev_packet_gp,_target_gp)>0)){
+ return OP_EBADLINK;
+ }
+ /*Our caller will set cur_discard_count to handle pre-roll.*/
+ return 0;
+}
+
+int op_pcm_seek(OggOpusFile *_of,ogg_int64_t _pcm_offset){
+ const OggOpusLink *link;
+ ogg_int64_t pcm_start;
+ ogg_int64_t target_gp;
+ ogg_int64_t prev_packet_gp;
+ ogg_int64_t skip;
+ ogg_int64_t diff;
+ int op_count;
+ int op_pos;
+ int ret;
+ int li;
+ if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
+ if(OP_UNLIKELY(!_of->seekable))return OP_ENOSEEK;
+ if(OP_UNLIKELY(_pcm_offset<0))return OP_EINVAL;
+ target_gp=op_get_granulepos(_of,_pcm_offset,&li);
+ if(OP_UNLIKELY(target_gp==-1))return OP_EINVAL;
+ link=_of->links+li;
+ pcm_start=link->pcm_start;
+ OP_ALWAYS_TRUE(!op_granpos_diff(&_pcm_offset,target_gp,pcm_start));
+#if !defined(OP_SMALL_FOOTPRINT)
+ /*For small (90 ms or less) forward seeks within the same link, just decode
+ forward.
+ This also optimizes the case of seeking to the current position.*/
+ if(li==_of->cur_link&&_of->ready_state>=OP_INITSET){
+ ogg_int64_t gp;
+ gp=_of->prev_packet_gp;
+ if(OP_LIKELY(gp!=-1)){
+ ogg_int64_t discard_count;
+ int nbuffered;
+ nbuffered=OP_MAX(_of->od_buffer_size-_of->od_buffer_pos,0);
+ OP_ALWAYS_TRUE(!op_granpos_add(&gp,gp,-nbuffered));
+ /*We do _not_ add cur_discard_count to gp.
+ Otherwise the total amount to discard could grow without bound, and it
+ would be better just to do a full seek.*/
+ if(OP_LIKELY(!op_granpos_diff(&discard_count,target_gp,gp))){
+ /*We use a threshold of 90 ms instead of 80, since 80 ms is the
+ _minimum_ we would have discarded after a full seek.
+ Assuming 20 ms frames (the default), we'd discard 90 ms on average.*/
+ if(discard_count>=0&&OP_UNLIKELY(discard_count<90*48)){
+ _of->cur_discard_count=(opus_int32)discard_count;
+ return 0;
+ }
+ }
+ }
+ }
+#endif
+ ret=op_pcm_seek_page(_of,target_gp,li);
+ if(OP_UNLIKELY(ret<0))return ret;
+ /*Now skip samples until we actually get to our target.*/
+ /*Figure out where we should skip to.*/
+ if(_pcm_offset<=link->head.pre_skip)skip=0;
+ else skip=OP_MAX(_pcm_offset-80*48,0);
+ OP_ASSERT(_pcm_offset-skip>=0);
+ OP_ASSERT(_pcm_offset-skip<OP_INT32_MAX-120*48);
+ /*Skip packets until we find one with samples past our skip target.*/
+ for(;;){
+ op_count=_of->op_count;
+ prev_packet_gp=_of->prev_packet_gp;
+ for(op_pos=_of->op_pos;op_pos<op_count;op_pos++){
+ ogg_int64_t cur_packet_gp;
+ cur_packet_gp=_of->op[op_pos].granulepos;
+ if(OP_LIKELY(!op_granpos_diff(&diff,cur_packet_gp,pcm_start))
+ &&diff>skip){
+ break;
+ }
+ prev_packet_gp=cur_packet_gp;
+ }
+ _of->prev_packet_gp=prev_packet_gp;
+ _of->op_pos=op_pos;
+ if(op_pos<op_count)break;
+ /*We skipped all the packets on this page.
+ Fetch another.*/
+ ret=op_fetch_and_process_page(_of,NULL,-1,0,1);
+ if(OP_UNLIKELY(ret<0))return OP_EBADLINK;
+ }
+ OP_ALWAYS_TRUE(!op_granpos_diff(&diff,prev_packet_gp,pcm_start));
+ /*We skipped too far.
+ Either the timestamps were illegal or there was a hole in the data.*/
+ if(diff>skip)return OP_EBADLINK;
+ OP_ASSERT(_pcm_offset-diff<OP_INT32_MAX);
+ /*TODO: If there are further holes/illegal timestamps, we still won't decode
+ to the correct sample.
+ However, at least op_pcm_tell() will report the correct value immediately
+ after returning.*/
+ _of->cur_discard_count=(opus_int32)(_pcm_offset-diff);
+ return 0;
+}
+
+opus_int64 op_raw_tell(const OggOpusFile *_of){
+ if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
+ return _of->offset;
+}
+
+/*Convert a granule position from a given link to a PCM offset relative to the
+ start of the whole stream.
+ For unseekable sources, this gets reset to 0 at the beginning of each link.*/
+static ogg_int64_t op_get_pcm_offset(const OggOpusFile *_of,
+ ogg_int64_t _gp,int _li){
+ const OggOpusLink *links;
+ ogg_int64_t pcm_offset;
+ links=_of->links;
+ OP_ASSERT(_li>=0&&_li<_of->nlinks);
+ pcm_offset=links[_li].pcm_file_offset;
+ if(_of->seekable&&OP_UNLIKELY(op_granpos_cmp(_gp,links[_li].pcm_end)>0)){
+ _gp=links[_li].pcm_end;
+ }
+ if(OP_LIKELY(op_granpos_cmp(_gp,links[_li].pcm_start)>0)){
+ ogg_int64_t delta;
+ if(OP_UNLIKELY(op_granpos_diff(&delta,_gp,links[_li].pcm_start)<0)){
+ /*This means an unseekable stream claimed to have a page from more than
+ 2 billion days after we joined.*/
+ OP_ASSERT(!_of->seekable);
+ return OP_INT64_MAX;
+ }
+ if(delta<links[_li].head.pre_skip)delta=0;
+ else delta-=links[_li].head.pre_skip;
+ /*In the seekable case, _gp was limited by pcm_end.
+ In the unseekable case, pcm_offset should be 0.*/
+ OP_ASSERT(pcm_offset<=OP_INT64_MAX-delta);
+ pcm_offset+=delta;
+ }
+ return pcm_offset;
+}
+
+ogg_int64_t op_pcm_tell(const OggOpusFile *_of){
+ ogg_int64_t gp;
+ int nbuffered;
+ int li;
+ if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
+ gp=_of->prev_packet_gp;
+ if(gp==-1)return 0;
+ nbuffered=OP_MAX(_of->od_buffer_size-_of->od_buffer_pos,0);
+ OP_ALWAYS_TRUE(!op_granpos_add(&gp,gp,-nbuffered));
+ li=_of->seekable?_of->cur_link:0;
+ if(op_granpos_add(&gp,gp,_of->cur_discard_count)<0){
+ gp=_of->links[li].pcm_end;
+ }
+ return op_get_pcm_offset(_of,gp,li);
+}
+
+void op_set_decode_callback(OggOpusFile *_of,
+ op_decode_cb_func _decode_cb,void *_ctx){
+ _of->decode_cb=_decode_cb;
+ _of->decode_cb_ctx=_ctx;
+}
+
+int op_set_gain_offset(OggOpusFile *_of,
+ int _gain_type,opus_int32 _gain_offset_q8){
+ if(_gain_type!=OP_HEADER_GAIN&&_gain_type!=OP_ALBUM_GAIN
+ &&_gain_type!=OP_TRACK_GAIN&&_gain_type!=OP_ABSOLUTE_GAIN){
+ return OP_EINVAL;
+ }
+ _of->gain_type=_gain_type;
+ /*The sum of header gain and track gain lies in the range [-65536,65534].
+ These bounds allow the offset to set the final value to anywhere in the
+ range [-32768,32767], which is what we'll clamp it to before applying.*/
+ _of->gain_offset_q8=OP_CLAMP(-98302,_gain_offset_q8,98303);
+ op_update_gain(_of);
+ return 0;
+}
+
+void op_set_dither_enabled(OggOpusFile *_of,int _enabled){
+#if !defined(OP_FIXED_POINT)
+ _of->dither_disabled=!_enabled;
+ if(!_enabled)_of->dither_mute=65;
+#endif
+}
+
+/*Allocate the decoder scratch buffer.
+ This is done lazily, since if the user provides large enough buffers, we'll
+ never need it.*/
+static int op_init_buffer(OggOpusFile *_of){
+ int nchannels_max;
+ if(_of->seekable){
+ const OggOpusLink *links;
+ int nlinks;
+ int li;
+ links=_of->links;
+ nlinks=_of->nlinks;
+ nchannels_max=1;
+ for(li=0;li<nlinks;li++){
+ nchannels_max=OP_MAX(nchannels_max,links[li].head.channel_count);
+ }
+ }
+ else nchannels_max=OP_NCHANNELS_MAX;
+ _of->od_buffer=(op_sample *)_ogg_malloc(
+ sizeof(*_of->od_buffer)*nchannels_max*120*48);
+ if(_of->od_buffer==NULL)return OP_EFAULT;
+ return 0;
+}
+
+/*Decode a single packet into the target buffer.*/
+static int op_decode(OggOpusFile *_of,op_sample *_pcm,
+ const ogg_packet *_op,int _nsamples,int _nchannels){
+ int ret;
+ /*First we try using the application-provided decode callback.*/
+ if(_of->decode_cb!=NULL){
+#if defined(OP_FIXED_POINT)
+ ret=(*_of->decode_cb)(_of->decode_cb_ctx,_of->od,_pcm,_op,
+ _nsamples,_nchannels,OP_DEC_FORMAT_SHORT,_of->cur_link);
+#else
+ ret=(*_of->decode_cb)(_of->decode_cb_ctx,_of->od,_pcm,_op,
+ _nsamples,_nchannels,OP_DEC_FORMAT_FLOAT,_of->cur_link);
+#endif
+ }
+ else ret=OP_DEC_USE_DEFAULT;
+ /*If the application didn't want to handle decoding, do it ourselves.*/
+ if(ret==OP_DEC_USE_DEFAULT){
+#if defined(OP_FIXED_POINT)
+ ret=opus_multistream_decode(_of->od,
+ _op->packet,_op->bytes,_pcm,_nsamples,0);
+#else
+ ret=opus_multistream_decode_float(_of->od,
+ _op->packet,_op->bytes,_pcm,_nsamples,0);
+#endif
+ OP_ASSERT(ret<0||ret==_nsamples);
+ }
+ /*If the application returned a positive value other than 0 or
+ OP_DEC_USE_DEFAULT, fail.*/
+ else if(OP_UNLIKELY(ret>0))return OP_EBADPACKET;
+ if(OP_UNLIKELY(ret<0))return OP_EBADPACKET;
+ return ret;
+}
+
+/*Read more samples from the stream, using the same API as op_read() or
+ op_read_float().*/
+static int op_read_native(OggOpusFile *_of,
+ op_sample *_pcm,int _buf_size,int *_li){
+ if(OP_UNLIKELY(_of->ready_state<OP_OPENED))return OP_EINVAL;
+ for(;;){
+ int ret;
+ if(OP_LIKELY(_of->ready_state>=OP_INITSET)){
+ int nchannels;
+ int od_buffer_pos;
+ int nsamples;
+ int op_pos;
+ nchannels=_of->links[_of->seekable?_of->cur_link:0].head.channel_count;
+ od_buffer_pos=_of->od_buffer_pos;
+ nsamples=_of->od_buffer_size-od_buffer_pos;
+ /*If we have buffered samples, return them.*/
+ if(nsamples>0){
+ if(nsamples*nchannels>_buf_size)nsamples=_buf_size/nchannels;
+ memcpy(_pcm,_of->od_buffer+nchannels*od_buffer_pos,
+ sizeof(*_pcm)*nchannels*nsamples);
+ od_buffer_pos+=nsamples;
+ _of->od_buffer_pos=od_buffer_pos;
+ if(_li!=NULL)*_li=_of->cur_link;
+ return nsamples;
+ }
+ /*If we have buffered packets, decode one.*/
+ op_pos=_of->op_pos;
+ if(OP_LIKELY(op_pos<_of->op_count)){
+ const ogg_packet *pop;
+ ogg_int64_t diff;
+ opus_int32 cur_discard_count;
+ int duration;
+ int trimmed_duration;
+ pop=_of->op+op_pos++;
+ _of->op_pos=op_pos;
+ cur_discard_count=_of->cur_discard_count;
+ duration=op_get_packet_duration(pop->packet,pop->bytes);
+ /*We don't buffer packets with an invalid TOC sequence.*/
+ OP_ASSERT(duration>0);
+ trimmed_duration=duration;
+ /*Perform end-trimming.*/
+ if(OP_UNLIKELY(pop->e_o_s)){
+ if(OP_UNLIKELY(op_granpos_cmp(pop->granulepos,
+ _of->prev_packet_gp)<=0)){
+ trimmed_duration=0;
+ }
+ else if(OP_LIKELY(!op_granpos_diff(&diff,
+ pop->granulepos,_of->prev_packet_gp))){
+ trimmed_duration=(int)OP_MIN(diff,trimmed_duration);
+ }
+ }
+ _of->prev_packet_gp=pop->granulepos;
+ if(OP_UNLIKELY(duration*nchannels>_buf_size)){
+ op_sample *buf;
+ /*If the user's buffer is too small, decode into a scratch buffer.*/
+ buf=_of->od_buffer;
+ if(OP_UNLIKELY(buf==NULL)){
+ ret=op_init_buffer(_of);
+ if(OP_UNLIKELY(ret<0))return ret;
+ buf=_of->od_buffer;
+ }
+ ret=op_decode(_of,buf,pop,duration,nchannels);
+ if(OP_UNLIKELY(ret<0))return ret;
+ /*Perform pre-skip/pre-roll.*/
+ od_buffer_pos=(int)OP_MIN(trimmed_duration,cur_discard_count);
+ cur_discard_count-=od_buffer_pos;
+ _of->cur_discard_count=cur_discard_count;
+ _of->od_buffer_pos=od_buffer_pos;
+ _of->od_buffer_size=trimmed_duration;
+ /*Update bitrate tracking based on the actual samples we used from
+ what was decoded.*/
+ _of->bytes_tracked+=pop->bytes;
+ _of->samples_tracked+=trimmed_duration-od_buffer_pos;
+ }
+ else{
+ /*Otherwise decode directly into the user's buffer.*/
+ ret=op_decode(_of,_pcm,pop,duration,nchannels);
+ if(OP_UNLIKELY(ret<0))return ret;
+ if(OP_LIKELY(trimmed_duration>0)){
+ /*Perform pre-skip/pre-roll.*/
+ od_buffer_pos=(int)OP_MIN(trimmed_duration,cur_discard_count);
+ cur_discard_count-=od_buffer_pos;
+ _of->cur_discard_count=cur_discard_count;
+ trimmed_duration-=od_buffer_pos;
+ if(OP_LIKELY(trimmed_duration>0)
+ &&OP_UNLIKELY(od_buffer_pos>0)){
+ memmove(_pcm,_pcm+od_buffer_pos*nchannels,
+ sizeof(*_pcm)*trimmed_duration*nchannels);
+ }
+ /*Update bitrate tracking based on the actual samples we used from
+ what was decoded.*/
+ _of->bytes_tracked+=pop->bytes;
+ _of->samples_tracked+=trimmed_duration;
+ if(OP_LIKELY(trimmed_duration>0)){
+ if(_li!=NULL)*_li=_of->cur_link;
+ return trimmed_duration;
+ }
+ }
+ }
+ /*Don't grab another page yet.
+ This one might have more packets, or might have buffered data now.*/
+ continue;
+ }
+ }
+ /*Suck in another page.*/
+ ret=op_fetch_and_process_page(_of,NULL,-1,1,0);
+ if(OP_UNLIKELY(ret==OP_EOF)){
+ if(_li!=NULL)*_li=_of->cur_link;
+ return 0;
+ }
+ if(OP_UNLIKELY(ret<0))return ret;
+ }
+}
+
+/*A generic filter to apply to the decoded audio data.
+ _src is non-const because we will destructively modify the contents of the
+ source buffer that we consume in some cases.*/
+typedef int (*op_read_filter_func)(OggOpusFile *_of,void *_dst,int _dst_sz,
+ op_sample *_src,int _nsamples,int _nchannels);
+
+/*Decode some samples and then apply a custom filter to them.
+ This is used to convert to different output formats.*/
+static int op_filter_read_native(OggOpusFile *_of,void *_dst,int _dst_sz,
+ op_read_filter_func _filter,int *_li){
+ int ret;
+ /*Ensure we have some decoded samples in our buffer.*/
+ ret=op_read_native(_of,NULL,0,_li);
+ /*Now apply the filter to them.*/
+ if(OP_LIKELY(ret>=0)&&OP_LIKELY(_of->ready_state>=OP_INITSET)){
+ int od_buffer_pos;
+ od_buffer_pos=_of->od_buffer_pos;
+ ret=_of->od_buffer_size-od_buffer_pos;
+ if(OP_LIKELY(ret>0)){
+ int nchannels;
+ nchannels=_of->links[_of->seekable?_of->cur_link:0].head.channel_count;
+ ret=(*_filter)(_of,_dst,_dst_sz,
+ _of->od_buffer+nchannels*od_buffer_pos,ret,nchannels);
+ OP_ASSERT(ret>=0);
+ OP_ASSERT(ret<=_of->od_buffer_size-od_buffer_pos);
+ od_buffer_pos+=ret;
+ _of->od_buffer_pos=od_buffer_pos;
+ }
+ }
+ return ret;
+}
+
+#if !defined(OP_FIXED_POINT)||!defined(OP_DISABLE_FLOAT_API)
+
+/*Matrices for downmixing from the supported channel counts to stereo.
+ The matrices with 5 or more channels are normalized to a total volume of 2.0,
+ since most mixes sound too quiet if normalized to 1.0 (as there is generally
+ little volume in the side/rear channels).*/
+static const float OP_STEREO_DOWNMIX[OP_NCHANNELS_MAX-2][OP_NCHANNELS_MAX][2]={
+ /*3.0*/
+ {
+ {0.5858F,0.0F},{0.4142F,0.4142F},{0.0F,0.5858F}
+ },
+ /*quadrophonic*/
+ {
+ {0.4226F,0.0F},{0.0F,0.4226F},{0.366F,0.2114F},{0.2114F,0.336F}
+ },
+ /*5.0*/
+ {
+ {0.651F,0.0F},{0.46F,0.46F},{0.0F,0.651F},{0.5636F,0.3254F},
+ {0.3254F,0.5636F}
+ },
+ /*5.1*/
+ {
+ {0.529F,0.0F},{0.3741F,0.3741F},{0.0F,0.529F},{0.4582F,0.2645F},
+ {0.2645F,0.4582F},{0.3741F,0.3741F}
+ },
+ /*6.1*/
+ {
+ {0.4553F,0.0F},{0.322F,0.322F},{0.0F,0.4553F},{0.3943F,0.2277F},
+ {0.2277F,0.3943F},{0.2788F,0.2788F},{0.322F,0.322F}
+ },
+ /*7.1*/
+ {
+ {0.3886F,0.0F},{0.2748F,0.2748F},{0.0F,0.3886F},{0.3366F,0.1943F},
+ {0.1943F,0.3366F},{0.3366F,0.1943F},{0.1943F,0.3366F},{0.2748F,0.2748F}
+ }
+};
+
+#endif
+
+#if defined(OP_FIXED_POINT)
+
+/*Matrices for downmixing from the supported channel counts to stereo.
+ The matrices with 5 or more channels are normalized to a total volume of 2.0,
+ since most mixes sound too quiet if normalized to 1.0 (as there is generally
+ little volume in the side/rear channels).
+ Hence we keep the coefficients in Q14, so the downmix values won't overflow a
+ 32-bit number.*/
+static const opus_int16 OP_STEREO_DOWNMIX_Q14
+ [OP_NCHANNELS_MAX-2][OP_NCHANNELS_MAX][2]={
+ /*3.0*/
+ {
+ {9598,0},{6786,6786},{0,9598}
+ },
+ /*quadrophonic*/
+ {
+ {6924,0},{0,6924},{5996,3464},{3464,5996}
+ },
+ /*5.0*/
+ {
+ {10666,0},{7537,7537},{0,10666},{9234,5331},{5331,9234}
+ },
+ /*5.1*/
+ {
+ {8668,0},{6129,6129},{0,8668},{7507,4335},{4335,7507},{6129,6129}
+ },
+ /*6.1*/
+ {
+ {7459,0},{5275,5275},{0,7459},{6460,3731},{3731,6460},{4568,4568},
+ {5275,5275}
+ },
+ /*7.1*/
+ {
+ {6368,0},{4502,4502},{0,6368},{5515,3183},{3183,5515},{5515,3183},
+ {3183,5515},{4502,4502}
+ }
+};
+
+int op_read(OggOpusFile *_of,opus_int16 *_pcm,int _buf_size,int *_li){
+ return op_read_native(_of,_pcm,_buf_size,_li);
+}
+
+static int op_stereo_filter(OggOpusFile *_of,void *_dst,int _dst_sz,
+ op_sample *_src,int _nsamples,int _nchannels){
+ (void)_of;
+ _nsamples=OP_MIN(_nsamples,_dst_sz>>1);
+ if(_nchannels==2)memcpy(_dst,_src,_nsamples*2*sizeof(*_src));
+ else{
+ opus_int16 *dst;
+ int i;
+ dst=(opus_int16 *)_dst;
+ if(_nchannels==1){
+ for(i=0;i<_nsamples;i++)dst[2*i+0]=dst[2*i+1]=_src[i];
+ }
+ else{
+ for(i=0;i<_nsamples;i++){
+ opus_int32 l;
+ opus_int32 r;
+ int ci;
+ l=r=0;
+ for(ci=0;ci<_nchannels;ci++){
+ opus_int32 s;
+ s=_src[_nchannels*i+ci];
+ l+=OP_STEREO_DOWNMIX_Q14[_nchannels-3][ci][0]*s;
+ r+=OP_STEREO_DOWNMIX_Q14[_nchannels-3][ci][1]*s;
+ }
+ /*TODO: For 5 or more channels, we should do soft clipping here.*/
+ dst[2*i+0]=(opus_int16)OP_CLAMP(-32768,l+8192>>14,32767);
+ dst[2*i+1]=(opus_int16)OP_CLAMP(-32768,r+8192>>14,32767);
+ }
+ }
+ }
+ return _nsamples;
+}
+
+int op_read_stereo(OggOpusFile *_of,opus_int16 *_pcm,int _buf_size){
+ return op_filter_read_native(_of,_pcm,_buf_size,op_stereo_filter,NULL);
+}
+
+# if !defined(OP_DISABLE_FLOAT_API)
+
+static int op_short2float_filter(OggOpusFile *_of,void *_dst,int _dst_sz,
+ op_sample *_src,int _nsamples,int _nchannels){
+ float *dst;
+ int i;
+ (void)_of;
+ dst=(float *)_dst;
+ if(OP_UNLIKELY(_nsamples*_nchannels>_dst_sz))_nsamples=_dst_sz/_nchannels;
+ _dst_sz=_nsamples*_nchannels;
+ for(i=0;i<_dst_sz;i++)dst[i]=(1.0F/32768)*_src[i];
+ return _nsamples;
+}
+
+int op_read_float(OggOpusFile *_of,float *_pcm,int _buf_size,int *_li){
+ return op_filter_read_native(_of,_pcm,_buf_size,op_short2float_filter,_li);
+}
+
+static int op_short2float_stereo_filter(OggOpusFile *_of,
+ void *_dst,int _dst_sz,op_sample *_src,int _nsamples,int _nchannels){
+ float *dst;
+ int i;
+ dst=(float *)_dst;
+ _nsamples=OP_MIN(_nsamples,_dst_sz>>1);
+ if(_nchannels==1){
+ _nsamples=op_short2float_filter(_of,dst,_nsamples,_src,_nsamples,1);
+ for(i=_nsamples;i-->0;)dst[2*i+0]=dst[2*i+1]=dst[i];
+ }
+ else if(_nchannels<5){
+ /*For 3 or 4 channels, we can downmix in fixed point without risk of
+ clipping.*/
+ if(_nchannels>2){
+ _nsamples=op_stereo_filter(_of,_src,_nsamples*2,
+ _src,_nsamples,_nchannels);
+ }
+ return op_short2float_filter(_of,dst,_dst_sz,_src,_nsamples,2);
+ }
+ else{
+ /*For 5 or more channels, we convert to floats and then downmix (so that we
+ don't risk clipping).*/
+ for(i=0;i<_nsamples;i++){
+ float l;
+ float r;
+ int ci;
+ l=r=0;
+ for(ci=0;ci<_nchannels;ci++){
+ float s;
+ s=(1.0F/32768)*_src[_nchannels*i+ci];
+ l+=OP_STEREO_DOWNMIX[_nchannels-3][ci][0]*s;
+ r+=OP_STEREO_DOWNMIX[_nchannels-3][ci][1]*s;
+ }
+ dst[2*i+0]=l;
+ dst[2*i+1]=r;
+ }
+ }
+ return _nsamples;
+}
+
+int op_read_float_stereo(OggOpusFile *_of,float *_pcm,int _buf_size){
+ return op_filter_read_native(_of,_pcm,_buf_size,
+ op_short2float_stereo_filter,NULL);
+}
+
+# endif
+
+#else
+
+# if defined(OP_HAVE_LRINTF)
+# include <math.h>
+# define op_float2int(_x) (lrintf(_x))
+# else
+# define op_float2int(_x) ((int)((_x)+((_x)<0?-0.5F:0.5F)))
+# endif
+
+/*The dithering code here is adapted from opusdec, part of opus-tools.
+ It was originally written by Greg Maxwell.*/
+
+static opus_uint32 op_rand(opus_uint32 _seed){
+ return _seed*96314165+907633515&0xFFFFFFFFU;
+}
+
+/*This implements 16-bit quantization with full triangular dither and IIR noise
+ shaping.
+ The noise shaping filters were designed by Sebastian Gesemann, and are based
+ on the LAME ATH curves with flattening to limit their peak gain to 20 dB.
+ Everyone else's noise shaping filters are mildly crazy.
+ The 48 kHz version of this filter is just a warped version of the 44.1 kHz
+ filter and probably could be improved by shifting the HF shelf up in
+ frequency a little bit, since 48 kHz has a bit more room and being more
+ conservative against bat-ears is probably more important than more noise
+ suppression.
+ This process can increase the peak level of the signal (in theory by the peak
+ error of 1.5 +20 dB, though that is unobservably rare).
+ To avoid clipping, the signal is attenuated by a couple thousandths of a dB.
+ Initially, the approach taken here was to only attenuate by the 99.9th
+ percentile, making clipping rare but not impossible (like SoX), but the
+ limited gain of the filter means that the worst case was only two
+ thousandths of a dB more, so this just uses the worst case.
+ The attenuation is probably also helpful to prevent clipping in the DAC
+ reconstruction filters or downstream resampling, in any case.*/
+
+# define OP_GAIN (32753.0F)
+
+# define OP_PRNG_GAIN (1.0F/0xFFFFFFFF)
+
+/*48 kHz noise shaping filter, sd=2.34.*/
+
+static const float OP_FCOEF_B[4]={
+ 2.2374F,-0.7339F,-0.1251F,-0.6033F
+};
+
+static const float OP_FCOEF_A[4]={
+ 0.9030F,0.0116F,-0.5853F,-0.2571F
+};
+
+static int op_float2short_filter(OggOpusFile *_of,void *_dst,int _dst_sz,
+ float *_src,int _nsamples,int _nchannels){
+ opus_int16 *dst;
+ int ci;
+ int i;
+ dst=(opus_int16 *)_dst;
+ if(OP_UNLIKELY(_nsamples*_nchannels>_dst_sz))_nsamples=_dst_sz/_nchannels;
+# if defined(OP_SOFT_CLIP)
+ if(_of->state_channel_count!=_nchannels){
+ for(ci=0;ci<_nchannels;ci++)_of->clip_state[ci]=0;
+ }
+ opus_pcm_soft_clip(_src,_nsamples,_nchannels,_of->clip_state);
+# endif
+ if(_of->dither_disabled){
+ for(i=0;i<_nchannels*_nsamples;i++){
+ dst[i]=op_float2int(OP_CLAMP(-32768,32768.0F*_src[i],32767));
+ }
+ }
+ else{
+ opus_uint32 seed;
+ int mute;
+ seed=_of->dither_seed;
+ mute=_of->dither_mute;
+ if(_of->state_channel_count!=_nchannels)mute=65;
+ /*In order to avoid replacing digital silence with quiet dither noise, we
+ mute if the output has been silent for a while.*/
+ if(mute>64)memset(_of->dither_a,0,sizeof(*_of->dither_a)*4*_nchannels);
+ for(i=0;i<_nsamples;i++){
+ int silent;
+ silent=1;
+ for(ci=0;ci<_nchannels;ci++){
+ float r;
+ float s;
+ float err;
+ int si;
+ int j;
+ s=_src[_nchannels*i+ci];
+ silent&=s==0;
+ s*=OP_GAIN;
+ err=0;
+ for(j=0;j<4;j++){
+ err+=OP_FCOEF_B[j]*_of->dither_b[ci*4+j]
+ -OP_FCOEF_A[j]*_of->dither_a[ci*4+j];
+ }
+ for(j=3;j-->0;)_of->dither_a[ci*4+j+1]=_of->dither_a[ci*4+j];
+ for(j=3;j-->0;)_of->dither_b[ci*4+j+1]=_of->dither_b[ci*4+j];
+ _of->dither_a[ci*4]=err;
+ s-=err;
+ if(mute>16)r=0;
+ else{
+ seed=op_rand(seed);
+ r=seed*OP_PRNG_GAIN;
+ seed=op_rand(seed);
+ r-=seed*OP_PRNG_GAIN;
+ }
+ /*Clamp in float out of paranoia that the input will be > 96 dBFS and
+ wrap if the integer is clamped.*/
+ si=op_float2int(OP_CLAMP(-32768,s+r,32767));
+ dst[_nchannels*i+ci]=(opus_int16)si;
+ /*Including clipping in the noise shaping is generally disastrous: the
+ futile effort to restore the clipped energy results in more clipping.
+ However, small amounts---at the level which could normally be created
+ by dither and rounding---are harmless and can even reduce clipping
+ somewhat due to the clipping sometimes reducing the dither + rounding
+ error.*/
+ _of->dither_b[ci*4]=mute>16?0:OP_CLAMP(-1.5F,si-s,1.5F);
+ }
+ mute++;
+ if(!silent)mute=0;
+ }
+ _of->dither_mute=OP_MIN(mute,65);
+ _of->dither_seed=seed;
+ }
+ _of->state_channel_count=_nchannels;
+ return _nsamples;
+}
+
+int op_read(OggOpusFile *_of,opus_int16 *_pcm,int _buf_size,int *_li){
+ return op_filter_read_native(_of,_pcm,_buf_size,op_float2short_filter,_li);
+}
+
+int op_read_float(OggOpusFile *_of,float *_pcm,int _buf_size,int *_li){
+ _of->state_channel_count=0;
+ return op_read_native(_of,_pcm,_buf_size,_li);
+}
+
+static int op_stereo_filter(OggOpusFile *_of,void *_dst,int _dst_sz,
+ op_sample *_src,int _nsamples,int _nchannels){
+ (void)_of;
+ _nsamples=OP_MIN(_nsamples,_dst_sz>>1);
+ if(_nchannels==2)memcpy(_dst,_src,_nsamples*2*sizeof(*_src));
+ else{
+ float *dst;
+ int i;
+ dst=(float *)_dst;
+ if(_nchannels==1){
+ for(i=0;i<_nsamples;i++)dst[2*i+0]=dst[2*i+1]=_src[i];
+ }
+ else{
+ for(i=0;i<_nsamples;i++){
+ float l;
+ float r;
+ int ci;
+ l=r=0;
+ for(ci=0;ci<_nchannels;ci++){
+ l+=OP_STEREO_DOWNMIX[_nchannels-3][ci][0]*_src[_nchannels*i+ci];
+ r+=OP_STEREO_DOWNMIX[_nchannels-3][ci][1]*_src[_nchannels*i+ci];
+ }
+ dst[2*i+0]=l;
+ dst[2*i+1]=r;
+ }
+ }
+ }
+ return _nsamples;
+}
+
+static int op_float2short_stereo_filter(OggOpusFile *_of,
+ void *_dst,int _dst_sz,op_sample *_src,int _nsamples,int _nchannels){
+ opus_int16 *dst;
+ dst=(opus_int16 *)_dst;
+ if(_nchannels==1){
+ int i;
+ _nsamples=op_float2short_filter(_of,dst,_dst_sz>>1,_src,_nsamples,1);
+ for(i=_nsamples;i-->0;)dst[2*i+0]=dst[2*i+1]=dst[i];
+ }
+ else{
+ if(_nchannels>2){
+ _nsamples=OP_MIN(_nsamples,_dst_sz>>1);
+ _nsamples=op_stereo_filter(_of,_src,_nsamples*2,
+ _src,_nsamples,_nchannels);
+ }
+ _nsamples=op_float2short_filter(_of,dst,_dst_sz,_src,_nsamples,2);
+ }
+ return _nsamples;
+}
+
+int op_read_stereo(OggOpusFile *_of,opus_int16 *_pcm,int _buf_size){
+ return op_filter_read_native(_of,_pcm,_buf_size,
+ op_float2short_stereo_filter,NULL);
+}
+
+int op_read_float_stereo(OggOpusFile *_of,float *_pcm,int _buf_size){
+ _of->state_channel_count=0;
+ return op_filter_read_native(_of,_pcm,_buf_size,op_stereo_filter,NULL);
+}
+
+#endif \ No newline at end of file
diff --git a/opusfile/opusfile.h b/opusfile/opusfile.h
new file mode 100644
index 0000000..1e753fa
--- /dev/null
+++ b/opusfile/opusfile.h
@@ -0,0 +1,2164 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 1994-2012 *
+ * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: stdio-based convenience library for opening/seeking/decoding
+ last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $
+
+ ********************************************************************/
+#if !defined(_opusfile_h)
+# define _opusfile_h (1)
+
+/**\mainpage
+ \section Introduction
+
+ This is the documentation for the <tt>libopusfile</tt> C API.
+
+ The <tt>libopusfile</tt> package provides a convenient high-level API for
+ decoding and basic manipulation of all Ogg Opus audio streams.
+ <tt>libopusfile</tt> is implemented as a layer on top of Xiph.Org's
+ reference
+ <tt><a href="https://www.xiph.org/ogg/doc/libogg/reference.html">libogg</a></tt>
+ and
+ <tt><a href="https://mf4.xiph.org/jenkins/view/opus/job/opus/ws/doc/html/index.html">libopus</a></tt>
+ libraries.
+
+ <tt>libopusfile</tt> provides several sets of built-in routines for
+ file/stream access, and may also use custom stream I/O routines provided by
+ the embedded environment.
+ There are built-in I/O routines provided for ANSI-compliant
+ <code>stdio</code> (<code>FILE *</code>), memory buffers, and URLs
+ (including <file:> URLs, plus optionally <http:> and <https:> URLs).
+
+ \section Organization
+
+ The main API is divided into several sections:
+ - \ref stream_open_close
+ - \ref stream_info
+ - \ref stream_decoding
+ - \ref stream_seeking
+
+ Several additional sections are not tied to the main API.
+ - \ref stream_callbacks
+ - \ref header_info
+ - \ref error_codes
+
+ \section Overview
+
+ The <tt>libopusfile</tt> API always decodes files to 48&nbsp;kHz.
+ The original sample rate is not preserved by the lossy compression, though
+ it is stored in the header to allow you to resample to it after decoding
+ (the <tt>libopusfile</tt> API does not currently provide a resampler,
+ but the
+ <a href="http://www.speex.org/docs/manual/speex-manual/node7.html#SECTION00760000000000000000">the
+ Speex resampler</a> is a good choice if you need one).
+ In general, if you are playing back the audio, you should leave it at
+ 48&nbsp;kHz, provided your audio hardware supports it.
+ When decoding to a file, it may be worth resampling back to the original
+ sample rate, so as not to surprise users who might not expect the sample
+ rate to change after encoding to Opus and decoding.
+
+ Opus files can contain anywhere from 1 to 255 channels of audio.
+ The channel mappings for up to 8 channels are the same as the
+ <a href="http://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-800004.3.9">Vorbis
+ mappings</a>.
+ A special stereo API can convert everything to 2 channels, making it simple
+ to support multichannel files in an application which only has stereo
+ output.
+ Although the <tt>libopusfile</tt> ABI provides support for the theoretical
+ maximum number of channels, the current implementation does not support
+ files with more than 8 channels, as they do not have well-defined channel
+ mappings.
+
+ Like all Ogg files, Opus files may be "chained".
+ That is, multiple Opus files may be combined into a single, longer file just
+ by concatenating the original files.
+ This is commonly done in internet radio streaming, as it allows the title
+ and artist to be updated each time the song changes, since each link in the
+ chain includes its own set of metadata.
+
+ <tt>libopusfile</tt> fully supports chained files.
+ It will decode the first Opus stream found in each link of a chained file
+ (ignoring any other streams that might be concurrently multiplexed with it,
+ such as a video stream).
+
+ The channel count can also change between links.
+ If your application is not prepared to deal with this, it can use the stereo
+ API to ensure the audio from all links will always get decoded into a
+ common format.
+ Since <tt>libopusfile</tt> always decodes to 48&nbsp;kHz, you do not have to
+ worry about the sample rate changing between links (as was possible with
+ Vorbis).
+ This makes application support for chained files with <tt>libopusfile</tt>
+ very easy.*/
+
+# if defined(__cplusplus)
+extern "C" {
+# endif
+
+# include <stdarg.h>
+# include <stdio.h>
+# include "../libogg/ogg.h"
+# include <opus/opus_multistream.h>
+
+/**@cond PRIVATE*/
+
+/*Enable special features for gcc and gcc-compatible compilers.*/
+# if !defined(OP_GNUC_PREREQ)
+# if defined(__GNUC__)&&defined(__GNUC_MINOR__)
+# define OP_GNUC_PREREQ(_maj,_min) \
+ ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min))
+# else
+# define OP_GNUC_PREREQ(_maj,_min) 0
+# endif
+# endif
+
+# if OP_GNUC_PREREQ(4,0)
+# pragma GCC visibility push(default)
+# endif
+
+typedef struct OpusHead OpusHead;
+typedef struct OpusTags OpusTags;
+typedef struct OpusPictureTag OpusPictureTag;
+typedef struct OpusServerInfo OpusServerInfo;
+typedef struct OpusFileCallbacks OpusFileCallbacks;
+typedef struct OggOpusFile OggOpusFile;
+
+/*Warning attributes for libopusfile functions.*/
+# if OP_GNUC_PREREQ(3,4)
+# define OP_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__))
+# else
+# define OP_WARN_UNUSED_RESULT
+# endif
+# if OP_GNUC_PREREQ(3,4)
+# define OP_ARG_NONNULL(_x) __attribute__((__nonnull__(_x)))
+# else
+# define OP_ARG_NONNULL(_x)
+# endif
+
+/**@endcond*/
+
+/**\defgroup error_codes Error Codes*/
+/*@{*/
+/**\name List of possible error codes
+ Many of the functions in this library return a negative error code when a
+ function fails.
+ This list provides a brief explanation of the common errors.
+ See each individual function for more details on what a specific error code
+ means in that context.*/
+/*@{*/
+
+/**A request did not succeed.*/
+#define OP_FALSE (-1)
+/*Currently not used externally.*/
+#define OP_EOF (-2)
+/**There was a hole in the page sequence numbers (e.g., a page was corrupt or
+ missing).*/
+#define OP_HOLE (-3)
+/**An underlying read, seek, or tell operation failed when it should have
+ succeeded.*/
+#define OP_EREAD (-128)
+/**A <code>NULL</code> pointer was passed where one was unexpected, or an
+ internal memory allocation failed, or an internal library error was
+ encountered.*/
+#define OP_EFAULT (-129)
+/**The stream used a feature that is not implemented, such as an unsupported
+ channel family.*/
+#define OP_EIMPL (-130)
+/**One or more parameters to a function were invalid.*/
+#define OP_EINVAL (-131)
+/**A purported Ogg Opus stream did not begin with an Ogg page, a purported
+ header packet did not start with one of the required strings, "OpusHead" or
+ "OpusTags", or a link in a chained file was encountered that did not
+ contain any logical Opus streams.*/
+#define OP_ENOTFORMAT (-132)
+/**A required header packet was not properly formatted, contained illegal
+ values, or was missing altogether.*/
+#define OP_EBADHEADER (-133)
+/**The ID header contained an unrecognized version number.*/
+#define OP_EVERSION (-134)
+/*Currently not used at all.*/
+#define OP_ENOTAUDIO (-135)
+/**An audio packet failed to decode properly.
+ This is usually caused by a multistream Ogg packet where the durations of
+ the individual Opus packets contained in it are not all the same.*/
+#define OP_EBADPACKET (-136)
+/**We failed to find data we had seen before, or the bitstream structure was
+ sufficiently malformed that seeking to the target destination was
+ impossible.*/
+#define OP_EBADLINK (-137)
+/**An operation that requires seeking was requested on an unseekable stream.*/
+#define OP_ENOSEEK (-138)
+/**The first or last granule position of a link failed basic validity checks.*/
+#define OP_EBADTIMESTAMP (-139)
+
+/*@}*/
+/*@}*/
+
+/**\defgroup header_info Header Information*/
+/*@{*/
+
+/**The maximum number of channels in an Ogg Opus stream.*/
+#define OPUS_CHANNEL_COUNT_MAX (255)
+
+/**Ogg Opus bitstream information.
+ This contains the basic playback parameters for a stream, and corresponds to
+ the initial ID header packet of an Ogg Opus stream.*/
+struct OpusHead{
+ /**The Ogg Opus format version, in the range 0...255.
+ The top 4 bits represent a "major" version, and the bottom four bits
+ represent backwards-compatible "minor" revisions.
+ The current specification describes version 1.
+ This library will recognize versions up through 15 as backwards compatible
+ with the current specification.
+ An earlier draft of the specification described a version 0, but the only
+ difference between version 1 and version 0 is that version 0 did
+ not specify the semantics for handling the version field.*/
+ int version;
+ /**The number of channels, in the range 1...255.*/
+ int channel_count;
+ /**The number of samples that should be discarded from the beginning of the
+ stream.*/
+ unsigned pre_skip;
+ /**The sampling rate of the original input.
+ All Opus audio is coded at 48 kHz, and should also be decoded at 48 kHz
+ for playback (unless the target hardware does not support this sampling
+ rate).
+ However, this field may be used to resample the audio back to the original
+ sampling rate, for example, when saving the output to a file.*/
+ opus_uint32 input_sample_rate;
+ /**The gain to apply to the decoded output, in dB, as a Q8 value in the range
+ -32768...32767.
+ The <tt>libopusfile</tt> API will automatically apply this gain to the
+ decoded output before returning it, scaling it by
+ <code>pow(10,output_gain/(20.0*256))</code>.
+ You can adjust this behavior with op_set_gain_offset().*/
+ int output_gain;
+ /**The channel mapping family, in the range 0...255.
+ Channel mapping family 0 covers mono or stereo in a single stream.
+ Channel mapping family 1 covers 1 to 8 channels in one or more streams,
+ using the Vorbis speaker assignments.
+ Channel mapping family 255 covers 1 to 255 channels in one or more
+ streams, but without any defined speaker assignment.*/
+ int mapping_family;
+ /**The number of Opus streams in each Ogg packet, in the range 1...255.*/
+ int stream_count;
+ /**The number of coupled Opus streams in each Ogg packet, in the range
+ 0...127.
+ This must satisfy <code>0 <= coupled_count <= stream_count</code> and
+ <code>coupled_count + stream_count <= 255</code>.
+ The coupled streams appear first, before all uncoupled streams, in an Ogg
+ Opus packet.*/
+ int coupled_count;
+ /**The mapping from coded stream channels to output channels.
+ Let <code>index=mapping[k]</code> be the value for channel <code>k</code>.
+ If <code>index<2*coupled_count</code>, then it refers to the left channel
+ from stream <code>(index/2)</code> if even, and the right channel from
+ stream <code>(index/2)</code> if odd.
+ Otherwise, it refers to the output of the uncoupled stream
+ <code>(index-coupled_count)</code>.*/
+ unsigned char mapping[OPUS_CHANNEL_COUNT_MAX];
+};
+
+/**The metadata from an Ogg Opus stream.
+
+ This structure holds the in-stream metadata corresponding to the 'comment'
+ header packet of an Ogg Opus stream.
+ The comment header is meant to be used much like someone jotting a quick
+ note on the label of a CD.
+ It should be a short, to the point text note that can be more than a couple
+ words, but not more than a short paragraph.
+
+ The metadata is stored as a series of (tag, value) pairs, in length-encoded
+ string vectors, using the same format as Vorbis (without the final "framing
+ bit"), Theora, and Speex, except for the packet header.
+ The first occurrence of the '=' character delimits the tag and value.
+ A particular tag may occur more than once, and order is significant.
+ The character set encoding for the strings is always UTF-8, but the tag
+ names are limited to ASCII, and treated as case-insensitive.
+ See <a href="http://www.xiph.org/vorbis/doc/v-comment.html">the Vorbis
+ comment header specification</a> for details.
+
+ In filling in this structure, <tt>libopusfile</tt> will null-terminate the
+ #user_comments strings for safety.
+ However, the bitstream format itself treats them as 8-bit clean vectors,
+ possibly containing NUL characters, so the #comment_lengths array should be
+ treated as their authoritative length.
+
+ This structure is binary and source-compatible with a
+ <code>vorbis_comment</code>, and pointers to it may be freely cast to
+ <code>vorbis_comment</code> pointers, and vice versa.
+ It is provided as a separate type to avoid introducing a compile-time
+ dependency on the libvorbis headers.*/
+struct OpusTags{
+ /**The array of comment string vectors.*/
+ char **user_comments;
+ /**An array of the corresponding length of each vector, in bytes.*/
+ int *comment_lengths;
+ /**The total number of comment streams.*/
+ int comments;
+ /**The null-terminated vendor string.
+ This identifies the software used to encode the stream.*/
+ char *vendor;
+};
+
+/**\name Picture tag image formats*/
+/*@{*/
+
+/**The MIME type was not recognized, or the image data did not match the
+ declared MIME type.*/
+#define OP_PIC_FORMAT_UNKNOWN (-1)
+/**The MIME type indicates the image data is really a URL.*/
+#define OP_PIC_FORMAT_URL (0)
+/**The image is a JPEG.*/
+#define OP_PIC_FORMAT_JPEG (1)
+/**The image is a PNG.*/
+#define OP_PIC_FORMAT_PNG (2)
+/**The image is a GIF.*/
+#define OP_PIC_FORMAT_GIF (3)
+
+/*@}*/
+
+/**The contents of a METADATA_BLOCK_PICTURE tag.*/
+struct OpusPictureTag{
+ /**The picture type according to the ID3v2 APIC frame:
+ <ol start="0">
+ <li>Other</li>
+ <li>32x32 pixels 'file icon' (PNG only)</li>
+ <li>Other file icon</li>
+ <li>Cover (front)</li>
+ <li>Cover (back)</li>
+ <li>Leaflet page</li>
+ <li>Media (e.g. label side of CD)</li>
+ <li>Lead artist/lead performer/soloist</li>
+ <li>Artist/performer</li>
+ <li>Conductor</li>
+ <li>Band/Orchestra</li>
+ <li>Composer</li>
+ <li>Lyricist/text writer</li>
+ <li>Recording Location</li>
+ <li>During recording</li>
+ <li>During performance</li>
+ <li>Movie/video screen capture</li>
+ <li>A bright colored fish</li>
+ <li>Illustration</li>
+ <li>Band/artist logotype</li>
+ <li>Publisher/Studio logotype</li>
+ </ol>
+ Others are reserved and should not be used.
+ There may only be one each of picture type 1 and 2 in a file.*/
+ opus_int32 type;
+ /**The MIME type of the picture, in printable ASCII characters 0x20-0x7E.
+ The MIME type may also be <code>"-->"</code> to signify that the data part
+ is a URL pointing to the picture instead of the picture data itself.
+ In this case, a terminating NUL is appended to the URL string in #data,
+ but #data_length is set to the length of the string excluding that
+ terminating NUL.*/
+ char *mime_type;
+ /**The description of the picture, in UTF-8.*/
+ char *description;
+ /**The width of the picture in pixels.*/
+ opus_uint32 width;
+ /**The height of the picture in pixels.*/
+ opus_uint32 height;
+ /**The color depth of the picture in bits-per-pixel (<em>not</em>
+ bits-per-channel).*/
+ opus_uint32 depth;
+ /**For indexed-color pictures (e.g., GIF), the number of colors used, or 0
+ for non-indexed pictures.*/
+ opus_uint32 colors;
+ /**The length of the picture data in bytes.*/
+ opus_uint32 data_length;
+ /**The binary picture data.*/
+ unsigned char *data;
+ /**The format of the picture data, if known.
+ One of
+ <ul>
+ <li>#OP_PIC_FORMAT_UNKNOWN,</li>
+ <li>#OP_PIC_FORMAT_URL,</li>
+ <li>#OP_PIC_FORMAT_JPEG,</li>
+ <li>#OP_PIC_FORMAT_PNG, or</li>
+ <li>#OP_PIC_FORMAT_GIF.</li>
+ </ul>*/
+ int format;
+};
+
+/**\name Functions for manipulating header data
+
+ These functions manipulate the #OpusHead and #OpusTags structures,
+ which describe the audio parameters and tag-value metadata, respectively.
+ These can be used to query the headers returned by <tt>libopusfile</tt>, or
+ to parse Opus headers from sources other than an Ogg Opus stream, provided
+ they use the same format.*/
+/*@{*/
+
+/**Parses the contents of the ID header packet of an Ogg Opus stream.
+ \param[out] _head Returns the contents of the parsed packet.
+ The contents of this structure are untouched on error.
+ This may be <code>NULL</code> to merely test the header
+ for validity.
+ \param[in] _data The contents of the ID header packet.
+ \param _len The number of bytes of data in the ID header packet.
+ \return 0 on success or a negative value on error.
+ \retval #OP_ENOTFORMAT If the data does not start with the "OpusHead"
+ string.
+ \retval #OP_EVERSION If the version field signaled a version this library
+ does not know how to parse.
+ \retval #OP_EIMPL If the channel mapping family was 255, which general
+ purpose players should not attempt to play.
+ \retval #OP_EBADHEADER If the contents of the packet otherwise violate the
+ Ogg Opus specification:
+ <ul>
+ <li>Insufficient data,</li>
+ <li>Too much data for the known minor versions,</li>
+ <li>An unrecognized channel mapping family,</li>
+ <li>Zero channels or too many channels,</li>
+ <li>Zero coded streams,</li>
+ <li>Too many coupled streams, or</li>
+ <li>An invalid channel mapping index.</li>
+ </ul>*/
+OP_WARN_UNUSED_RESULT int opus_head_parse(OpusHead *_head,
+ const unsigned char *_data,size_t _len) OP_ARG_NONNULL(2);
+
+/**Converts a granule position to a sample offset for a given Ogg Opus stream.
+ The sample offset is simply <code>_gp-_head->pre_skip</code>.
+ Granule position values smaller than OpusHead#pre_skip correspond to audio
+ that should never be played, and thus have no associated sample offset.
+ This function returns -1 for such values.
+ This function also correctly handles extremely large granule positions,
+ which may have wrapped around to a negative number when stored in a signed
+ ogg_int64_t value.
+ \param _head The #OpusHead information from the ID header of the stream.
+ \param _gp The granule position to convert.
+ \return The sample offset associated with the given granule position
+ (counting at a 48 kHz sampling rate), or the special value -1 on
+ error (i.e., the granule position was smaller than the pre-skip
+ amount).*/
+ogg_int64_t opus_granule_sample(const OpusHead *_head,ogg_int64_t _gp)
+ OP_ARG_NONNULL(1);
+
+/**Parses the contents of the 'comment' header packet of an Ogg Opus stream.
+ \param[out] _tags An uninitialized #OpusTags structure.
+ This returns the contents of the parsed packet.
+ The contents of this structure are untouched on error.
+ This may be <code>NULL</code> to merely test the header
+ for validity.
+ \param[in] _data The contents of the 'comment' header packet.
+ \param _len The number of bytes of data in the 'info' header packet.
+ \retval 0 Success.
+ \retval #OP_ENOTFORMAT If the data does not start with the "OpusTags"
+ string.
+ \retval #OP_EBADHEADER If the contents of the packet otherwise violate the
+ Ogg Opus specification.
+ \retval #OP_EFAULT If there wasn't enough memory to store the tags.*/
+OP_WARN_UNUSED_RESULT int opus_tags_parse(OpusTags *_tags,
+ const unsigned char *_data,size_t _len) OP_ARG_NONNULL(2);
+
+/**Performs a deep copy of an #OpusTags structure.
+ \param _dst The #OpusTags structure to copy into.
+ If this function fails, the contents of this structure remain
+ untouched.
+ \param _src The #OpusTags structure to copy from.
+ \retval 0 Success.
+ \retval #OP_EFAULT If there wasn't enough memory to copy the tags.*/
+int opus_tags_copy(OpusTags *_dst,const OpusTags *_src) OP_ARG_NONNULL(1);
+
+/**Initializes an #OpusTags structure.
+ This should be called on a freshly allocated #OpusTags structure before
+ attempting to use it.
+ \param _tags The #OpusTags structure to initialize.*/
+void opus_tags_init(OpusTags *_tags) OP_ARG_NONNULL(1);
+
+/**Add a (tag, value) pair to an initialized #OpusTags structure.
+ \note Neither opus_tags_add() nor opus_tags_add_comment() support values
+ containing embedded NULs, although the bitstream format does support them.
+ To add such tags, you will need to manipulate the #OpusTags structure
+ directly.
+ \param _tags The #OpusTags structure to add the (tag, value) pair to.
+ \param _tag A NUL-terminated, case-insensitive, ASCII string containing
+ the tag to add (without an '=' character).
+ \param _value A NUL-terminated UTF-8 containing the corresponding value.
+ \return 0 on success, or a negative value on failure.
+ \retval #OP_EFAULT An internal memory allocation failed.*/
+int opus_tags_add(OpusTags *_tags,const char *_tag,const char *_value)
+ OP_ARG_NONNULL(1) OP_ARG_NONNULL(2) OP_ARG_NONNULL(3);
+
+/**Add a comment to an initialized #OpusTags structure.
+ \note Neither opus_tags_add_comment() nor opus_tags_add() support comments
+ containing embedded NULs, although the bitstream format does support them.
+ To add such tags, you will need to manipulate the #OpusTags structure
+ directly.
+ \param _tags The #OpusTags structure to add the comment to.
+ \param _comment A NUL-terminated UTF-8 string containing the comment in
+ "TAG=value" form.
+ \return 0 on success, or a negative value on failure.
+ \retval #OP_EFAULT An internal memory allocation failed.*/
+int opus_tags_add_comment(OpusTags *_tags,const char *_comment)
+ OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
+
+/**Replace the binary suffix data at the end of the packet (if any).
+ \param _tags An initialized #OpusTags structure.
+ \param _data A buffer of binary data to append after the encoded user
+ comments.
+ The least significant bit of the first byte of this data must
+ be set (to ensure the data is preserved by other editors).
+ \param _len The number of bytes of binary data to append.
+ This may be zero to remove any existing binary suffix data.
+ \return 0 on success, or a negative value on error.
+ \retval #OP_EINVAL \a _len was negative, or \a _len was positive but
+ \a _data was <code>NULL</code> or the least significant
+ bit of the first byte was not set.
+ \retval #OP_EFAULT An internal memory allocation failed.*/
+int opus_tags_set_binary_suffix(OpusTags *_tags,
+ const unsigned char *_data,int _len) OP_ARG_NONNULL(1);
+
+/**Look up a comment value by its tag.
+ \param _tags An initialized #OpusTags structure.
+ \param _tag The tag to look up.
+ \param _count The instance of the tag.
+ The same tag can appear multiple times, each with a distinct
+ value, so an index is required to retrieve them all.
+ The order in which these values appear is significant and
+ should be preserved.
+ Use opus_tags_query_count() to get the legal range for the
+ \a _count parameter.
+ \return A pointer to the queried tag's value.
+ This points directly to data in the #OpusTags structure.
+ It should not be modified or freed by the application, and
+ modifications to the structure may invalidate the pointer.
+ \retval NULL If no matching tag is found.*/
+const char *opus_tags_query(const OpusTags *_tags,const char *_tag,int _count)
+ OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
+
+/**Look up the number of instances of a tag.
+ Call this first when querying for a specific tag and then iterate over the
+ number of instances with separate calls to opus_tags_query() to retrieve
+ all the values for that tag in order.
+ \param _tags An initialized #OpusTags structure.
+ \param _tag The tag to look up.
+ \return The number of instances of this particular tag.*/
+int opus_tags_query_count(const OpusTags *_tags,const char *_tag)
+ OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
+
+/**Retrieve the binary suffix data at the end of the packet (if any).
+ \param _tags An initialized #OpusTags structure.
+ \param[out] _len Returns the number of bytes of binary suffix data returned.
+ \return A pointer to the binary suffix data, or <code>NULL</code> if none
+ was present.*/
+const unsigned char *opus_tags_get_binary_suffix(const OpusTags *_tags,
+ int *_len) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
+
+/**Get the album gain from an R128_ALBUM_GAIN tag, if one was specified.
+ This searches for the first R128_ALBUM_GAIN tag with a valid signed,
+ 16-bit decimal integer value and returns the value.
+ This routine is exposed merely for convenience for applications which wish
+ to do something special with the album gain (i.e., display it).
+ If you simply wish to apply the album gain instead of the header gain, you
+ can use op_set_gain_offset() with an #OP_ALBUM_GAIN type and no offset.
+ \param _tags An initialized #OpusTags structure.
+ \param[out] _gain_q8 The album gain, in 1/256ths of a dB.
+ This will lie in the range [-32768,32767], and should
+ be applied in <em>addition</em> to the header gain.
+ On error, no value is returned, and the previous
+ contents remain unchanged.
+ \return 0 on success, or a negative value on error.
+ \retval #OP_FALSE There was no album gain available in the given tags.*/
+int opus_tags_get_album_gain(const OpusTags *_tags,int *_gain_q8)
+ OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
+
+/**Get the track gain from an R128_TRACK_GAIN tag, if one was specified.
+ This searches for the first R128_TRACK_GAIN tag with a valid signed,
+ 16-bit decimal integer value and returns the value.
+ This routine is exposed merely for convenience for applications which wish
+ to do something special with the track gain (i.e., display it).
+ If you simply wish to apply the track gain instead of the header gain, you
+ can use op_set_gain_offset() with an #OP_TRACK_GAIN type and no offset.
+ \param _tags An initialized #OpusTags structure.
+ \param[out] _gain_q8 The track gain, in 1/256ths of a dB.
+ This will lie in the range [-32768,32767], and should
+ be applied in <em>addition</em> to the header gain.
+ On error, no value is returned, and the previous
+ contents remain unchanged.
+ \return 0 on success, or a negative value on error.
+ \retval #OP_FALSE There was no track gain available in the given tags.*/
+int opus_tags_get_track_gain(const OpusTags *_tags,int *_gain_q8)
+ OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
+
+/**Clears the #OpusTags structure.
+ This should be called on an #OpusTags structure after it is no longer
+ needed.
+ It will free all memory used by the structure members.
+ \param _tags The #OpusTags structure to clear.*/
+void opus_tags_clear(OpusTags *_tags) OP_ARG_NONNULL(1);
+
+/**Check if \a _comment is an instance of a \a _tag_name tag.
+ \see opus_tagncompare
+ \param _tag_name A NUL-terminated, case-insensitive, ASCII string containing
+ the name of the tag to check for (without the terminating
+ '=' character).
+ \param _comment The comment string to check.
+ \return An integer less than, equal to, or greater than zero if \a _comment
+ is found respectively, to be less than, to match, or be greater
+ than a "tag=value" string whose tag matches \a _tag_name.*/
+int opus_tagcompare(const char *_tag_name,const char *_comment);
+
+/**Check if \a _comment is an instance of a \a _tag_name tag.
+ This version is slightly more efficient than opus_tagcompare() if the length
+ of the tag name is already known (e.g., because it is a constant).
+ \see opus_tagcompare
+ \param _tag_name A case-insensitive ASCII string containing the name of the
+ tag to check for (without the terminating '=' character).
+ \param _tag_len The number of characters in the tag name.
+ This must be non-negative.
+ \param _comment The comment string to check.
+ \return An integer less than, equal to, or greater than zero if \a _comment
+ is found respectively, to be less than, to match, or be greater
+ than a "tag=value" string whose tag matches the first \a _tag_len
+ characters of \a _tag_name.*/
+int opus_tagncompare(const char *_tag_name,int _tag_len,const char *_comment);
+
+/**Parse a single METADATA_BLOCK_PICTURE tag.
+ This decodes the BASE64-encoded content of the tag and returns a structure
+ with the MIME type, description, image parameters (if known), and the
+ compressed image data.
+ If the MIME type indicates the presence of an image format we recognize
+ (JPEG, PNG, or GIF) and the actual image data contains the magic signature
+ associated with that format, then the OpusPictureTag::format field will be
+ set to the corresponding format.
+ This is provided as a convenience to avoid requiring applications to parse
+ the MIME type and/or do their own format detection for the commonly used
+ formats.
+ In this case, we also attempt to extract the image parameters directly from
+ the image data (overriding any that were present in the tag, which the
+ specification says applications are not meant to rely on).
+ The application must still provide its own support for actually decoding the
+ image data and, if applicable, retrieving that data from URLs.
+ \param[out] _pic Returns the parsed picture data.
+ No sanitation is done on the type, MIME type, or
+ description fields, so these might return invalid values.
+ The contents of this structure are left unmodified on
+ failure.
+ \param _tag The METADATA_BLOCK_PICTURE tag contents.
+ The leading "METADATA_BLOCK_PICTURE=" portion is optional,
+ to allow the function to be used on either directly on the
+ values in OpusTags::user_comments or on the return value
+ of opus_tags_query().
+ \return 0 on success or a negative value on error.
+ \retval #OP_ENOTFORMAT The METADATA_BLOCK_PICTURE contents were not valid.
+ \retval #OP_EFAULT There was not enough memory to store the picture tag
+ contents.*/
+OP_WARN_UNUSED_RESULT int opus_picture_tag_parse(OpusPictureTag *_pic,
+ const char *_tag) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
+
+/**Initializes an #OpusPictureTag structure.
+ This should be called on a freshly allocated #OpusPictureTag structure
+ before attempting to use it.
+ \param _pic The #OpusPictureTag structure to initialize.*/
+void opus_picture_tag_init(OpusPictureTag *_pic) OP_ARG_NONNULL(1);
+
+/**Clears the #OpusPictureTag structure.
+ This should be called on an #OpusPictureTag structure after it is no longer
+ needed.
+ It will free all memory used by the structure members.
+ \param _pic The #OpusPictureTag structure to clear.*/
+void opus_picture_tag_clear(OpusPictureTag *_pic) OP_ARG_NONNULL(1);
+
+/*@}*/
+
+/*@}*/
+
+/**\defgroup url_options URL Reading Options*/
+/*@{*/
+/**\name URL reading options
+ Options for op_url_stream_create() and associated functions.
+ These allow you to provide proxy configuration parameters, skip SSL
+ certificate checks, etc.
+ Options are processed in order, and if the same option is passed multiple
+ times, only the value specified by the last occurrence has an effect
+ (unless otherwise specified).
+ They may be expanded in the future.*/
+/*@{*/
+
+/**@cond PRIVATE*/
+
+/*These are the raw numbers used to define the request codes.
+ They should not be used directly.*/
+#define OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST (6464)
+#define OP_HTTP_PROXY_HOST_REQUEST (6528)
+#define OP_HTTP_PROXY_PORT_REQUEST (6592)
+#define OP_HTTP_PROXY_USER_REQUEST (6656)
+#define OP_HTTP_PROXY_PASS_REQUEST (6720)
+#define OP_GET_SERVER_INFO_REQUEST (6784)
+
+#define OP_URL_OPT(_request) ((_request)+(char *)0)
+
+/*These macros trigger compilation errors or warnings if the wrong types are
+ provided to one of the URL options.*/
+#define OP_CHECK_INT(_x) ((void)((_x)==(opus_int32)0),(opus_int32)(_x))
+#define OP_CHECK_CONST_CHAR_PTR(_x) ((_x)+((_x)-(const char *)(_x)))
+#define OP_CHECK_SERVER_INFO_PTR(_x) ((_x)+((_x)-(OpusServerInfo *)(_x)))
+
+/**@endcond*/
+
+/**HTTP/Shoutcast/Icecast server information associated with a URL.*/
+struct OpusServerInfo{
+ /**The name of the server (icy-name/ice-name).
+ This is <code>NULL</code> if there was no <code>icy-name</code> or
+ <code>ice-name</code> header.*/
+ char *name;
+ /**A short description of the server (icy-description/ice-description).
+ This is <code>NULL</code> if there was no <code>icy-description</code> or
+ <code>ice-description</code> header.*/
+ char *description;
+ /**The genre the server falls under (icy-genre/ice-genre).
+ This is <code>NULL</code> if there was no <code>icy-genre</code> or
+ <code>ice-genre</code> header.*/
+ char *genre;
+ /**The homepage for the server (icy-url/ice-url).
+ This is <code>NULL</code> if there was no <code>icy-url</code> or
+ <code>ice-url</code> header.*/
+ char *url;
+ /**The software used by the origin server (Server).
+ This is <code>NULL</code> if there was no <code>Server</code> header.*/
+ char *server;
+ /**The media type of the entity sent to the recepient (Content-Type).
+ This is <code>NULL</code> if there was no <code>Content-Type</code>
+ header.*/
+ char *content_type;
+ /**The nominal stream bitrate in kbps (icy-br/ice-bitrate).
+ This is <code>-1</code> if there was no <code>icy-br</code> or
+ <code>ice-bitrate</code> header.*/
+ opus_int32 bitrate_kbps;
+ /**Flag indicating whether the server is public (<code>1</code>) or not
+ (<code>0</code>) (icy-pub/ice-public).
+ This is <code>-1</code> if there was no <code>icy-pub</code> or
+ <code>ice-public</code> header.*/
+ int is_public;
+ /**Flag indicating whether the server is using HTTPS instead of HTTP.
+ This is <code>0</code> unless HTTPS is being used.
+ This may not match the protocol used in the original URL if there were
+ redirections.*/
+ int is_ssl;
+};
+
+/**Initializes an #OpusServerInfo structure.
+ All fields are set as if the corresponding header was not available.
+ \param _info The #OpusServerInfo structure to initialize.
+ \note If you use this function, you must link against <tt>libopusurl</tt>.*/
+void opus_server_info_init(OpusServerInfo *_info) OP_ARG_NONNULL(1);
+
+/**Clears the #OpusServerInfo structure.
+ This should be called on an #OpusServerInfo structure after it is no longer
+ needed.
+ It will free all memory used by the structure members.
+ \param _info The #OpusServerInfo structure to clear.
+ \note If you use this function, you must link against <tt>libopusurl</tt>.*/
+void opus_server_info_clear(OpusServerInfo *_info) OP_ARG_NONNULL(1);
+
+/**Skip the certificate check when connecting via TLS/SSL (https).
+ \param _b <code>opus_int32</code>: Whether or not to skip the certificate
+ check.
+ The check will be skipped if \a _b is non-zero, and will not be
+ skipped if \a _b is zero.
+ \hideinitializer*/
+#define OP_SSL_SKIP_CERTIFICATE_CHECK(_b) \
+ OP_URL_OPT(OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST),OP_CHECK_INT(_b)
+
+/**Proxy connections through the given host.
+ If no port is specified via #OP_HTTP_PROXY_PORT, the port number defaults
+ to 8080 (http-alt).
+ All proxy parameters are ignored for non-http and non-https URLs.
+ \param _host <code>const char *</code>: The proxy server hostname.
+ This may be <code>NULL</code> to disable the use of a proxy
+ server.
+ \hideinitializer*/
+#define OP_HTTP_PROXY_HOST(_host) \
+ OP_URL_OPT(OP_HTTP_PROXY_HOST_REQUEST),OP_CHECK_CONST_CHAR_PTR(_host)
+
+/**Use the given port when proxying connections.
+ This option only has an effect if #OP_HTTP_PROXY_HOST is specified with a
+ non-<code>NULL</code> \a _host.
+ If this option is not provided, the proxy port number defaults to 8080
+ (http-alt).
+ All proxy parameters are ignored for non-http and non-https URLs.
+ \param _port <code>opus_int32</code>: The proxy server port.
+ This must be in the range 0...65535 (inclusive), or the
+ URL function this is passed to will fail.
+ \hideinitializer*/
+#define OP_HTTP_PROXY_PORT(_port) \
+ OP_URL_OPT(OP_HTTP_PROXY_PORT_REQUEST),OP_CHECK_INT(_port)
+
+/**Use the given user name for authentication when proxying connections.
+ All proxy parameters are ignored for non-http and non-https URLs.
+ \param _user const char *: The proxy server user name.
+ This may be <code>NULL</code> to disable proxy
+ authentication.
+ A non-<code>NULL</code> value only has an effect
+ if #OP_HTTP_PROXY_HOST and #OP_HTTP_PROXY_PASS
+ are also specified with non-<code>NULL</code>
+ arguments.
+ \hideinitializer*/
+#define OP_HTTP_PROXY_USER(_user) \
+ OP_URL_OPT(OP_HTTP_PROXY_USER_REQUEST),OP_CHECK_CONST_CHAR_PTR(_user)
+
+/**Use the given password for authentication when proxying connections.
+ All proxy parameters are ignored for non-http and non-https URLs.
+ \param _pass const char *: The proxy server password.
+ This may be <code>NULL</code> to disable proxy
+ authentication.
+ A non-<code>NULL</code> value only has an effect
+ if #OP_HTTP_PROXY_HOST and #OP_HTTP_PROXY_USER
+ are also specified with non-<code>NULL</code>
+ arguments.
+ \hideinitializer*/
+#define OP_HTTP_PROXY_PASS(_pass) \
+ OP_URL_OPT(OP_HTTP_PROXY_PASS_REQUEST),OP_CHECK_CONST_CHAR_PTR(_pass)
+
+/**Parse information about the streaming server (if any) and return it.
+ Very little validation is done.
+ In particular, OpusServerInfo::url may not be a valid URL,
+ OpusServerInfo::bitrate_kbps may not really be in kbps, and
+ OpusServerInfo::content_type may not be a valid MIME type.
+ The character set of the string fields is not specified anywhere, and should
+ not be assumed to be valid UTF-8.
+ \param _info OpusServerInfo *: Returns information about the server.
+ If there is any error opening the stream, the
+ contents of this structure remain
+ unmodified.
+ On success, fills in the structure with the
+ server information that was available, if
+ any.
+ After a successful return, the contents of
+ this structure should be freed by calling
+ opus_server_info_clear().
+ \hideinitializer*/
+#define OP_GET_SERVER_INFO(_info) \
+ OP_URL_OPT(OP_GET_SERVER_INFO_REQUEST),OP_CHECK_SERVER_INFO_PTR(_info)
+
+/*@}*/
+/*@}*/
+
+/**\defgroup stream_callbacks Abstract Stream Reading Interface*/
+/*@{*/
+/**\name Functions for reading from streams
+ These functions define the interface used to read from and seek in a stream
+ of data.
+ A stream does not need to implement seeking, but the decoder will not be
+ able to seek if it does not do so.
+ These functions also include some convenience routines for working with
+ standard <code>FILE</code> pointers, complete streams stored in a single
+ block of memory, or URLs.*/
+/*@{*/
+
+/**Reads up to \a _nbytes bytes of data from \a _stream.
+ \param _stream The stream to read from.
+ \param[out] _ptr The buffer to store the data in.
+ \param _nbytes The maximum number of bytes to read.
+ This function may return fewer, though it will not
+ return zero unless it reaches end-of-file.
+ \return The number of bytes successfully read, or a negative value on
+ error.*/
+typedef int (*op_read_func)(void *_stream,unsigned char *_ptr,int _nbytes);
+
+/**Sets the position indicator for \a _stream.
+ The new position, measured in bytes, is obtained by adding \a _offset
+ bytes to the position specified by \a _whence.
+ If \a _whence is set to <code>SEEK_SET</code>, <code>SEEK_CUR</code>, or
+ <code>SEEK_END</code>, the offset is relative to the start of the stream,
+ the current position indicator, or end-of-file, respectively.
+ \retval 0 Success.
+ \retval -1 Seeking is not supported or an error occurred.
+ <code>errno</code> need not be set.*/
+typedef int (*op_seek_func)(void *_stream,opus_int64 _offset,int _whence);
+
+/**Obtains the current value of the position indicator for \a _stream.
+ \return The current position indicator.*/
+typedef opus_int64 (*op_tell_func)(void *_stream);
+
+/**Closes the underlying stream.
+ \retval 0 Success.
+ \retval EOF An error occurred.
+ <code>errno</code> need not be set.*/
+typedef int (*op_close_func)(void *_stream);
+
+/**The callbacks used to access non-<code>FILE</code> stream resources.
+ The function prototypes are basically the same as for the stdio functions
+ <code>fread()</code>, <code>fseek()</code>, <code>ftell()</code>, and
+ <code>fclose()</code>.
+ The differences are that the <code>FILE *</code> arguments have been
+ replaced with a <code>void *</code>, which is to be used as a pointer to
+ whatever internal data these functions might need, that #seek and #tell
+ take and return 64-bit offsets, and that #seek <em>must</em> return -1 if
+ the stream is unseekable.*/
+struct OpusFileCallbacks{
+ /**Used to read data from the stream.
+ This must not be <code>NULL</code>.*/
+ op_read_func read;
+ /**Used to seek in the stream.
+ This may be <code>NULL</code> if seeking is not implemented.*/
+ op_seek_func seek;
+ /**Used to return the current read position in the stream.
+ This may be <code>NULL</code> if seeking is not implemented.*/
+ op_tell_func tell;
+ /**Used to close the stream when the decoder is freed.
+ This may be <code>NULL</code> to leave the stream open.*/
+ op_close_func close;
+};
+
+/**Opens a stream with <code>fopen()</code> and fills in a set of callbacks
+ that can be used to access it.
+ This is useful to avoid writing your own portable 64-bit seeking wrappers,
+ and also avoids cross-module linking issues on Windows, where a
+ <code>FILE *</code> must be accessed by routines defined in the same module
+ that opened it.
+ \param[out] _cb The callbacks to use for this file.
+ If there is an error opening the file, nothing will be
+ filled in here.
+ \param _path The path to the file to open.
+ On Windows, this string must be UTF-8 (to allow access to
+ files whose names cannot be represented in the current
+ MBCS code page).
+ All other systems use the native character encoding.
+ \param _mode The mode to open the file in.
+ \return A stream handle to use with the callbacks, or <code>NULL</code> on
+ error.*/
+OP_WARN_UNUSED_RESULT void *op_fopen(OpusFileCallbacks *_cb,
+ const char *_path,const char *_mode) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2)
+ OP_ARG_NONNULL(3);
+
+/**Opens a stream with <code>fdopen()</code> and fills in a set of callbacks
+ that can be used to access it.
+ This is useful to avoid writing your own portable 64-bit seeking wrappers,
+ and also avoids cross-module linking issues on Windows, where a
+ <code>FILE *</code> must be accessed by routines defined in the same module
+ that opened it.
+ \param[out] _cb The callbacks to use for this file.
+ If there is an error opening the file, nothing will be
+ filled in here.
+ \param _fd The file descriptor to open.
+ \param _mode The mode to open the file in.
+ \return A stream handle to use with the callbacks, or <code>NULL</code> on
+ error.*/
+OP_WARN_UNUSED_RESULT void *op_fdopen(OpusFileCallbacks *_cb,
+ int _fd,const char *_mode) OP_ARG_NONNULL(1) OP_ARG_NONNULL(3);
+
+/**Opens a stream with <code>freopen()</code> and fills in a set of callbacks
+ that can be used to access it.
+ This is useful to avoid writing your own portable 64-bit seeking wrappers,
+ and also avoids cross-module linking issues on Windows, where a
+ <code>FILE *</code> must be accessed by routines defined in the same module
+ that opened it.
+ \param[out] _cb The callbacks to use for this file.
+ If there is an error opening the file, nothing will be
+ filled in here.
+ \param _path The path to the file to open.
+ On Windows, this string must be UTF-8 (to allow access
+ to files whose names cannot be represented in the
+ current MBCS code page).
+ All other systems use the native character encoding.
+ \param _mode The mode to open the file in.
+ \param _stream A stream previously returned by op_fopen(), op_fdopen(),
+ or op_freopen().
+ \return A stream handle to use with the callbacks, or <code>NULL</code> on
+ error.*/
+OP_WARN_UNUSED_RESULT void *op_freopen(OpusFileCallbacks *_cb,
+ const char *_path,const char *_mode,void *_stream) OP_ARG_NONNULL(1)
+ OP_ARG_NONNULL(2) OP_ARG_NONNULL(3) OP_ARG_NONNULL(4);
+
+/**Creates a stream that reads from the given block of memory.
+ This block of memory must contain the complete stream to decode.
+ This is useful for caching small streams (e.g., sound effects) in RAM.
+ \param[out] _cb The callbacks to use for this stream.
+ If there is an error creating the stream, nothing will be
+ filled in here.
+ \param _data The block of memory to read from.
+ \param _size The size of the block of memory.
+ \return A stream handle to use with the callbacks, or <code>NULL</code> on
+ error.*/
+OP_WARN_UNUSED_RESULT void *op_mem_stream_create(OpusFileCallbacks *_cb,
+ const unsigned char *_data,size_t _size) OP_ARG_NONNULL(1);
+
+/**Creates a stream that reads from the given URL.
+ This function behaves identically to op_url_stream_create(), except that it
+ takes a va_list instead of a variable number of arguments.
+ It does not call the <code>va_end</code> macro, and because it invokes the
+ <code>va_arg</code> macro, the value of \a _ap is undefined after the call.
+ \note If you use this function, you must link against <tt>libopusurl</tt>.
+ \param[out] _cb The callbacks to use for this stream.
+ If there is an error creating the stream, nothing will
+ be filled in here.
+ \param _url The URL to read from.
+ Currently only the <file:>, <http:>, and <https:>
+ schemes are supported.
+ Both <http:> and <https:> may be disabled at compile
+ time, in which case opening such URLs will always fail.
+ Currently this only supports URIs.
+ IRIs should be converted to UTF-8 and URL-escaped, with
+ internationalized domain names encoded in punycode,
+ before passing them to this function.
+ \param[in,out] _ap A list of the \ref url_options "optional flags" to use.
+ This is a variable-length list of options terminated
+ with <code>NULL</code>.
+ \return A stream handle to use with the callbacks, or <code>NULL</code> on
+ error.*/
+OP_WARN_UNUSED_RESULT void *op_url_stream_vcreate(OpusFileCallbacks *_cb,
+ const char *_url,va_list _ap) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
+
+/**Creates a stream that reads from the given URL.
+ \note If you use this function, you must link against <tt>libopusurl</tt>.
+ \param[out] _cb The callbacks to use for this stream.
+ If there is an error creating the stream, nothing will be
+ filled in here.
+ \param _url The URL to read from.
+ Currently only the <file:>, <http:>, and <https:> schemes
+ are supported.
+ Both <http:> and <https:> may be disabled at compile time,
+ in which case opening such URLs will always fail.
+ Currently this only supports URIs.
+ IRIs should be converted to UTF-8 and URL-escaped, with
+ internationalized domain names encoded in punycode, before
+ passing them to this function.
+ \param ... The \ref url_options "optional flags" to use.
+ This is a variable-length list of options terminated with
+ <code>NULL</code>.
+ \return A stream handle to use with the callbacks, or <code>NULL</code> on
+ error.*/
+OP_WARN_UNUSED_RESULT void *op_url_stream_create(OpusFileCallbacks *_cb,
+ const char *_url,...) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2);
+
+/*@}*/
+/*@}*/
+
+/**\defgroup stream_open_close Opening and Closing*/
+/*@{*/
+/**\name Functions for opening and closing streams
+
+ These functions allow you to test a stream to see if it is Opus, open it,
+ and close it.
+ Several flavors are provided for each of the built-in stream types, plus a
+ more general version which takes a set of application-provided callbacks.*/
+/*@{*/
+
+/**Test to see if this is an Opus stream.
+ For good results, you will need at least 57 bytes (for a pure Opus-only
+ stream).
+ Something like 512 bytes will give more reliable results for multiplexed
+ streams.
+ This function is meant to be a quick-rejection filter.
+ Its purpose is not to guarantee that a stream is a valid Opus stream, but to
+ ensure that it looks enough like Opus that it isn't going to be recognized
+ as some other format (except possibly an Opus stream that is also
+ multiplexed with other codecs, such as video).
+ \param[out] _head The parsed ID header contents.
+ You may pass <code>NULL</code> if you do not need
+ this information.
+ If the function fails, the contents of this structure
+ remain untouched.
+ \param _initial_data An initial buffer of data from the start of the
+ stream.
+ \param _initial_bytes The number of bytes in \a _initial_data.
+ \return 0 if the data appears to be Opus, or a negative value on error.
+ \retval #OP_FALSE There was not enough data to tell if this was an Opus
+ stream or not.
+ \retval #OP_EFAULT An internal memory allocation failed.
+ \retval #OP_EIMPL The stream used a feature that is not implemented,
+ such as an unsupported channel family.
+ \retval #OP_ENOTFORMAT If the data did not contain a recognizable ID
+ header for an Opus stream.
+ \retval #OP_EVERSION If the version field signaled a version this library
+ does not know how to parse.
+ \retval #OP_EBADHEADER The ID header was not properly formatted or contained
+ illegal values.*/
+int op_test(OpusHead *_head,
+ const unsigned char *_initial_data,size_t _initial_bytes);
+
+/**Open a stream from the given file path.
+ \param _path The path to the file to open.
+ \param[out] _error Returns 0 on success, or a failure code on error.
+ You may pass in <code>NULL</code> if you don't want the
+ failure code.
+ The failure code will be #OP_EFAULT if the file could not
+ be opened, or one of the other failure codes from
+ op_open_callbacks() otherwise.
+ \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.*/
+OP_WARN_UNUSED_RESULT OggOpusFile *op_open_file(const char *_path,int *_error)
+ OP_ARG_NONNULL(1);
+
+/**Open a stream from a memory buffer.
+ \param _data The memory buffer to open.
+ \param _size The number of bytes in the buffer.
+ \param[out] _error Returns 0 on success, or a failure code on error.
+ You may pass in <code>NULL</code> if you don't want the
+ failure code.
+ See op_open_callbacks() for a full list of failure codes.
+ \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.*/
+OP_WARN_UNUSED_RESULT OggOpusFile *op_open_memory(const unsigned char *_data,
+ size_t _size,int *_error);
+
+/**Open a stream from a URL.
+ This function behaves identically to op_open_url(), except that it
+ takes a va_list instead of a variable number of arguments.
+ It does not call the <code>va_end</code> macro, and because it invokes the
+ <code>va_arg</code> macro, the value of \a _ap is undefined after the call.
+ \note If you use this function, you must link against <tt>libopusurl</tt>.
+ \param _url The URL to open.
+ Currently only the <file:>, <http:>, and <https:>
+ schemes are supported.
+ Both <http:> and <https:> may be disabled at compile
+ time, in which case opening such URLs will always
+ fail.
+ Currently this only supports URIs.
+ IRIs should be converted to UTF-8 and URL-escaped,
+ with internationalized domain names encoded in
+ punycode, before passing them to this function.
+ \param[out] _error Returns 0 on success, or a failure code on error.
+ You may pass in <code>NULL</code> if you don't want
+ the failure code.
+ See op_open_callbacks() for a full list of failure
+ codes.
+ \param[in,out] _ap A list of the \ref url_options "optional flags" to
+ use.
+ This is a variable-length list of options terminated
+ with <code>NULL</code>.
+ \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.*/
+OP_WARN_UNUSED_RESULT OggOpusFile *op_vopen_url(const char *_url,
+ int *_error,va_list _ap) OP_ARG_NONNULL(1);
+
+/**Open a stream from a URL.
+ \note If you use this function, you must link against <tt>libopusurl</tt>.
+ \param _url The URL to open.
+ Currently only the <file:>, <http:>, and <https:> schemes
+ are supported.
+ Both <http:> and <https:> may be disabled at compile
+ time, in which case opening such URLs will always fail.
+ Currently this only supports URIs.
+ IRIs should be converted to UTF-8 and URL-escaped, with
+ internationalized domain names encoded in punycode,
+ before passing them to this function.
+ \param[out] _error Returns 0 on success, or a failure code on error.
+ You may pass in <code>NULL</code> if you don't want the
+ failure code.
+ See op_open_callbacks() for a full list of failure codes.
+ \param ... The \ref url_options "optional flags" to use.
+ This is a variable-length list of options terminated with
+ <code>NULL</code>.
+ \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.*/
+OP_WARN_UNUSED_RESULT OggOpusFile *op_open_url(const char *_url,
+ int *_error,...) OP_ARG_NONNULL(1);
+
+/**Open a stream using the given set of callbacks to access it.
+ \param _stream The stream to read from (e.g., a <code>FILE *</code>).
+ This value will be passed verbatim as the first
+ argument to all of the callbacks.
+ \param _cb The callbacks with which to access the stream.
+ <code><a href="#op_read_func">read()</a></code> must
+ be implemented.
+ <code><a href="#op_seek_func">seek()</a></code> and
+ <code><a href="#op_tell_func">tell()</a></code> may
+ be <code>NULL</code>, or may always return -1 to
+ indicate a stream is unseekable, but if
+ <code><a href="#op_seek_func">seek()</a></code> is
+ implemented and succeeds on a particular stream, then
+ <code><a href="#op_tell_func">tell()</a></code> must
+ also.
+ <code><a href="#op_close_func">close()</a></code> may
+ be <code>NULL</code>, but if it is not, it will be
+ called when the \c OggOpusFile is destroyed by
+ op_free().
+ It will not be called if op_open_callbacks() fails
+ with an error.
+ \param _initial_data An initial buffer of data from the start of the
+ stream.
+ Applications can read some number of bytes from the
+ start of the stream to help identify this as an Opus
+ stream, and then provide them here to allow the
+ stream to be opened, even if it is unseekable.
+ \param _initial_bytes The number of bytes in \a _initial_data.
+ If the stream is seekable, its current position (as
+ reported by
+ <code><a href="#opus_tell_func">tell()</a></code>
+ at the start of this function) must be equal to
+ \a _initial_bytes.
+ Otherwise, seeking to absolute positions will
+ generate inconsistent results.
+ \param[out] _error Returns 0 on success, or a failure code on error.
+ You may pass in <code>NULL</code> if you don't want
+ the failure code.
+ The failure code will be one of
+ <dl>
+ <dt>#OP_EREAD</dt>
+ <dd>An underlying read, seek, or tell operation
+ failed when it should have succeeded, or we failed
+ to find data in the stream we had seen before.</dd>
+ <dt>#OP_EFAULT</dt>
+ <dd>There was a memory allocation failure, or an
+ internal library error.</dd>
+ <dt>#OP_EIMPL</dt>
+ <dd>The stream used a feature that is not
+ implemented, such as an unsupported channel
+ family.</dd>
+ <dt>#OP_EINVAL</dt>
+ <dd><code><a href="#op_seek_func">seek()</a></code>
+ was implemented and succeeded on this source, but
+ <code><a href="#op_tell_func">tell()</a></code>
+ did not, or the starting position indicator was
+ not equal to \a _initial_bytes.</dd>
+ <dt>#OP_ENOTFORMAT</dt>
+ <dd>The stream contained a link that did not have
+ any logical Opus streams in it.</dd>
+ <dt>#OP_EBADHEADER</dt>
+ <dd>A required header packet was not properly
+ formatted, contained illegal values, or was missing
+ altogether.</dd>
+ <dt>#OP_EVERSION</dt>
+ <dd>An ID header contained an unrecognized version
+ number.</dd>
+ <dt>#OP_EBADLINK</dt>
+ <dd>We failed to find data we had seen before after
+ seeking.</dd>
+ <dt>#OP_EBADTIMESTAMP</dt>
+ <dd>The first or last timestamp in a link failed
+ basic validity checks.</dd>
+ </dl>
+ \return A freshly opened \c OggOpusFile, or <code>NULL</code> on error.
+ <tt>libopusfile</tt> does <em>not</em> take ownership of the stream
+ if the call fails.
+ The calling application is responsible for closing the stream if
+ this call returns an error.*/
+OP_WARN_UNUSED_RESULT OggOpusFile *op_open_callbacks(void *_stream,
+ const OpusFileCallbacks *_cb,const unsigned char *_initial_data,
+ size_t _initial_bytes,int *_error) OP_ARG_NONNULL(2);
+
+/**Partially open a stream from the given file path.
+ \see op_test_callbacks
+ \param _path The path to the file to open.
+ \param[out] _error Returns 0 on success, or a failure code on error.
+ You may pass in <code>NULL</code> if you don't want the
+ failure code.
+ The failure code will be #OP_EFAULT if the file could not
+ be opened, or one of the other failure codes from
+ op_open_callbacks() otherwise.
+ \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.*/
+OP_WARN_UNUSED_RESULT OggOpusFile *op_test_file(const char *_path,int *_error)
+ OP_ARG_NONNULL(1);
+
+/**Partially open a stream from a memory buffer.
+ \see op_test_callbacks
+ \param _data The memory buffer to open.
+ \param _size The number of bytes in the buffer.
+ \param[out] _error Returns 0 on success, or a failure code on error.
+ You may pass in <code>NULL</code> if you don't want the
+ failure code.
+ See op_open_callbacks() for a full list of failure codes.
+ \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.*/
+OP_WARN_UNUSED_RESULT OggOpusFile *op_test_memory(const unsigned char *_data,
+ size_t _size,int *_error);
+
+/**Partially open a stream from a URL.
+ This function behaves identically to op_test_url(), except that it
+ takes a va_list instead of a variable number of arguments.
+ It does not call the <code>va_end</code> macro, and because it invokes the
+ <code>va_arg</code> macro, the value of \a _ap is undefined after the call.
+ \note If you use this function, you must link against <tt>libopusurl</tt>.
+ \see op_test_url
+ \see op_test_callbacks
+ \param _url The URL to open.
+ Currently only the <file:>, <http:>, and <https:>
+ schemes are supported.
+ Both <http:> and <https:> may be disabled at compile
+ time, in which case opening such URLs will always
+ fail.
+ Currently this only supports URIs.
+ IRIs should be converted to UTF-8 and URL-escaped,
+ with internationalized domain names encoded in
+ punycode, before passing them to this function.
+ \param[out] _error Returns 0 on success, or a failure code on error.
+ You may pass in <code>NULL</code> if you don't want
+ the failure code.
+ See op_open_callbacks() for a full list of failure
+ codes.
+ \param[in,out] _ap A list of the \ref url_options "optional flags" to
+ use.
+ This is a variable-length list of options terminated
+ with <code>NULL</code>.
+ \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.*/
+OP_WARN_UNUSED_RESULT OggOpusFile *op_vtest_url(const char *_url,
+ int *_error,va_list _ap) OP_ARG_NONNULL(1);
+
+/**Partially open a stream from a URL.
+ \note If you use this function, you must link against <tt>libopusurl</tt>.
+ \see op_test_callbacks
+ \param _url The URL to open.
+ Currently only the <file:>, <http:>, and <https:>
+ schemes are supported.
+ Both <http:> and <https:> may be disabled at compile
+ time, in which case opening such URLs will always fail.
+ Currently this only supports URIs.
+ IRIs should be converted to UTF-8 and URL-escaped, with
+ internationalized domain names encoded in punycode,
+ before passing them to this function.
+ \param[out] _error Returns 0 on success, or a failure code on error.
+ You may pass in <code>NULL</code> if you don't want the
+ failure code.
+ See op_open_callbacks() for a full list of failure
+ codes.
+ \param ... The \ref url_options "optional flags" to use.
+ This is a variable-length list of options terminated
+ with <code>NULL</code>.
+ \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.*/
+OP_WARN_UNUSED_RESULT OggOpusFile *op_test_url(const char *_url,
+ int *_error,...) OP_ARG_NONNULL(1);
+
+/**Partially open a stream using the given set of callbacks to access it.
+ This tests for Opusness and loads the headers for the first link.
+ It does not seek (although it tests for seekability).
+ You can query a partially open stream for the few pieces of basic
+ information returned by op_serialno(), op_channel_count(), op_head(), and
+ op_tags() (but only for the first link).
+ You may also determine if it is seekable via a call to op_seekable().
+ You cannot read audio from the stream, seek, get the size or duration,
+ get information from links other than the first one, or even get the total
+ number of links until you finish opening the stream with op_test_open().
+ If you do not need to do any of these things, you can dispose of it with
+ op_free() instead.
+
+ This function is provided mostly to simplify porting existing code that used
+ <tt>libvorbisfile</tt>.
+ For new code, you are likely better off using op_test() instead, which
+ is less resource-intensive, requires less data to succeed, and imposes a
+ hard limit on the amount of data it examines (important for unseekable
+ streams, where all such data must be buffered until you are sure of the
+ stream type).
+ \param _stream The stream to read from (e.g., a <code>FILE *</code>).
+ This value will be passed verbatim as the first
+ argument to all of the callbacks.
+ \param _cb The callbacks with which to access the stream.
+ <code><a href="#op_read_func">read()</a></code> must
+ be implemented.
+ <code><a href="#op_seek_func">seek()</a></code> and
+ <code><a href="#op_tell_func">tell()</a></code> may
+ be <code>NULL</code>, or may always return -1 to
+ indicate a stream is unseekable, but if
+ <code><a href="#op_seek_func">seek()</a></code> is
+ implemented and succeeds on a particular stream, then
+ <code><a href="#op_tell_func">tell()</a></code> must
+ also.
+ <code><a href="#op_close_func">close()</a></code> may
+ be <code>NULL</code>, but if it is not, it will be
+ called when the \c OggOpusFile is destroyed by
+ op_free().
+ It will not be called if op_open_callbacks() fails
+ with an error.
+ \param _initial_data An initial buffer of data from the start of the
+ stream.
+ Applications can read some number of bytes from the
+ start of the stream to help identify this as an Opus
+ stream, and then provide them here to allow the
+ stream to be tested more thoroughly, even if it is
+ unseekable.
+ \param _initial_bytes The number of bytes in \a _initial_data.
+ If the stream is seekable, its current position (as
+ reported by
+ <code><a href="#opus_tell_func">tell()</a></code>
+ at the start of this function) must be equal to
+ \a _initial_bytes.
+ Otherwise, seeking to absolute positions will
+ generate inconsistent results.
+ \param[out] _error Returns 0 on success, or a failure code on error.
+ You may pass in <code>NULL</code> if you don't want
+ the failure code.
+ See op_open_callbacks() for a full list of failure
+ codes.
+ \return A partially opened \c OggOpusFile, or <code>NULL</code> on error.
+ <tt>libopusfile</tt> does <em>not</em> take ownership of the stream
+ if the call fails.
+ The calling application is responsible for closing the stream if
+ this call returns an error.*/
+OP_WARN_UNUSED_RESULT OggOpusFile *op_test_callbacks(void *_stream,
+ const OpusFileCallbacks *_cb,const unsigned char *_initial_data,
+ size_t _initial_bytes,int *_error) OP_ARG_NONNULL(2);
+
+/**Finish opening a stream partially opened with op_test_callbacks() or one of
+ the associated convenience functions.
+ If this function fails, you are still responsible for freeing the
+ \c OggOpusFile with op_free().
+ \param _of The \c OggOpusFile to finish opening.
+ \return 0 on success, or a negative value on error.
+ \retval #OP_EREAD An underlying read, seek, or tell operation failed
+ when it should have succeeded.
+ \retval #OP_EFAULT There was a memory allocation failure, or an
+ internal library error.
+ \retval #OP_EIMPL The stream used a feature that is not implemented,
+ such as an unsupported channel family.
+ \retval #OP_EINVAL The stream was not partially opened with
+ op_test_callbacks() or one of the associated
+ convenience functions.
+ \retval #OP_ENOTFORMAT The stream contained a link that did not have any
+ logical Opus streams in it.
+ \retval #OP_EBADHEADER A required header packet was not properly
+ formatted, contained illegal values, or was
+ missing altogether.
+ \retval #OP_EVERSION An ID header contained an unrecognized version
+ number.
+ \retval #OP_EBADLINK We failed to find data we had seen before after
+ seeking.
+ \retval #OP_EBADTIMESTAMP The first or last timestamp in a link failed basic
+ validity checks.*/
+int op_test_open(OggOpusFile *_of) OP_ARG_NONNULL(1);
+
+/**Release all memory used by an \c OggOpusFile.
+ \param _of The \c OggOpusFile to free.*/
+void op_free(OggOpusFile *_of);
+
+/*@}*/
+/*@}*/
+
+/**\defgroup stream_info Stream Information*/
+/*@{*/
+/**\name Functions for obtaining information about streams
+
+ These functions allow you to get basic information about a stream, including
+ seekability, the number of links (for chained streams), plus the size,
+ duration, bitrate, header parameters, and meta information for each link
+ (or, where available, the stream as a whole).
+ Some of these (size, duration) are only available for seekable streams.
+ You can also query the current stream position, link, and playback time,
+ and instantaneous bitrate during playback.
+
+ Some of these functions may be used successfully on the partially open
+ streams returned by op_test_callbacks() or one of the associated
+ convenience functions.
+ Their documention will indicate so explicitly.*/
+/*@{*/
+
+/**Returns whether or not the stream being read is seekable.
+ This is true if
+ <ol>
+ <li>The <code><a href="#op_seek_func">seek()</a></code> and
+ <code><a href="#op_tell_func">tell()</a></code> callbacks are both
+ non-<code>NULL</code>,</li>
+ <li>The <code><a href="#op_seek_func">seek()</a></code> callback was
+ successfully executed at least once, and</li>
+ <li>The <code><a href="#op_tell_func">tell()</a></code> callback was
+ successfully able to report the position indicator afterwards.</li>
+ </ol>
+ This function may be called on partially-opened streams.
+ \param _of The \c OggOpusFile whose seekable status is to be returned.
+ \return A non-zero value if seekable, and 0 if unseekable.*/
+int op_seekable(const OggOpusFile *_of) OP_ARG_NONNULL(1);
+
+/**Returns the number of links in this chained stream.
+ This function may be called on partially-opened streams, but it will always
+ return 1.
+ The actual number of links is not known until the stream is fully opened.
+ \param _of The \c OggOpusFile from which to retrieve the link count.
+ \return For fully-open seekable streams, this returns the total number of
+ links in the whole stream, which will be at least 1.
+ For partially-open or unseekable streams, this always returns 1.*/
+int op_link_count(const OggOpusFile *_of) OP_ARG_NONNULL(1);
+
+/**Get the serial number of the given link in a (possibly-chained) Ogg Opus
+ stream.
+ This function may be called on partially-opened streams, but it will always
+ return the serial number of the Opus stream in the first link.
+ \param _of The \c OggOpusFile from which to retrieve the serial number.
+ \param _li The index of the link whose serial number should be retrieved.
+ Use a negative number to get the serial number of the current
+ link.
+ \return The serial number of the given link.
+ If \a _li is greater than the total number of links, this returns
+ the serial number of the last link.
+ If the stream is not seekable, this always returns the serial number
+ of the current link.*/
+opus_uint32 op_serialno(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
+
+/**Get the channel count of the given link in a (possibly-chained) Ogg Opus
+ stream.
+ This is equivalent to <code>op_head(_of,_li)->channel_count</code>, but
+ is provided for convenience.
+ This function may be called on partially-opened streams, but it will always
+ return the channel count of the Opus stream in the first link.
+ \param _of The \c OggOpusFile from which to retrieve the channel count.
+ \param _li The index of the link whose channel count should be retrieved.
+ Use a negative number to get the channel count of the current
+ link.
+ \return The channel count of the given link.
+ If \a _li is greater than the total number of links, this returns
+ the channel count of the last link.
+ If the stream is not seekable, this always returns the channel count
+ of the current link.*/
+int op_channel_count(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
+
+/**Get the total (compressed) size of the stream, or of an individual link in
+ a (possibly-chained) Ogg Opus stream, including all headers and Ogg muxing
+ overhead.
+ \warning If the Opus stream (or link) is concurrently multiplexed with other
+ logical streams (e.g., video), this returns the size of the entire stream
+ (or link), not just the number of bytes in the first logical Opus stream.
+ Returning the latter would require scanning the entire file.
+ \param _of The \c OggOpusFile from which to retrieve the compressed size.
+ \param _li The index of the link whose compressed size should be computed.
+ Use a negative number to get the compressed size of the entire
+ stream.
+ \return The compressed size of the entire stream if \a _li is negative, the
+ compressed size of link \a _li if it is non-negative, or a negative
+ value on error.
+ The compressed size of the entire stream may be smaller than that
+ of the underlying stream if trailing garbage was detected in the
+ file.
+ \retval #OP_EINVAL The stream is not seekable (so we can't know the length),
+ \a _li wasn't less than the total number of links in
+ the stream, or the stream was only partially open.*/
+opus_int64 op_raw_total(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
+
+/**Get the total PCM length (number of samples at 48 kHz) of the stream, or of
+ an individual link in a (possibly-chained) Ogg Opus stream.
+ Users looking for <code>op_time_total()</code> should use op_pcm_total()
+ instead.
+ Because timestamps in Opus are fixed at 48 kHz, there is no need for a
+ separate function to convert this to seconds (and leaving it out avoids
+ introducing floating point to the API, for those that wish to avoid it).
+ \param _of The \c OggOpusFile from which to retrieve the PCM offset.
+ \param _li The index of the link whose PCM length should be computed.
+ Use a negative number to get the PCM length of the entire stream.
+ \return The PCM length of the entire stream if \a _li is negative, the PCM
+ length of link \a _li if it is non-negative, or a negative value on
+ error.
+ \retval #OP_EINVAL The stream is not seekable (so we can't know the length),
+ \a _li wasn't less than the total number of links in
+ the stream, or the stream was only partially open.*/
+ogg_int64_t op_pcm_total(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
+
+/**Get the ID header information for the given link in a (possibly chained) Ogg
+ Opus stream.
+ This function may be called on partially-opened streams, but it will always
+ return the ID header information of the Opus stream in the first link.
+ \param _of The \c OggOpusFile from which to retrieve the ID header
+ information.
+ \param _li The index of the link whose ID header information should be
+ retrieved.
+ Use a negative number to get the ID header information of the
+ current link.
+ For an unseekable stream, \a _li is ignored, and the ID header
+ information for the current link is always returned, if
+ available.
+ \return The contents of the ID header for the given link.*/
+const OpusHead *op_head(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
+
+/**Get the comment header information for the given link in a (possibly
+ chained) Ogg Opus stream.
+ This function may be called on partially-opened streams, but it will always
+ return the tags from the Opus stream in the first link.
+ \param _of The \c OggOpusFile from which to retrieve the comment header
+ information.
+ \param _li The index of the link whose comment header information should be
+ retrieved.
+ Use a negative number to get the comment header information of
+ the current link.
+ For an unseekable stream, \a _li is ignored, and the comment
+ header information for the current link is always returned, if
+ available.
+ \return The contents of the comment header for the given link, or
+ <code>NULL</code> if this is an unseekable stream that encountered
+ an invalid link.*/
+const OpusTags *op_tags(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
+
+/**Retrieve the index of the current link.
+ This is the link that produced the data most recently read by
+ op_read_float() or its associated functions, or, after a seek, the link
+ that the seek target landed in.
+ Reading more data may advance the link index (even on the first read after a
+ seek).
+ \param _of The \c OggOpusFile from which to retrieve the current link index.
+ \return The index of the current link on success, or a negative value on
+ failure.
+ For seekable streams, this is a number between 0 (inclusive) and the
+ value returned by op_link_count() (exclusive).
+ For unseekable streams, this value starts at 0 and increments by one
+ each time a new link is encountered (even though op_link_count()
+ always returns 1).
+ \retval #OP_EINVAL The stream was only partially open.*/
+int op_current_link(const OggOpusFile *_of) OP_ARG_NONNULL(1);
+
+/**Computes the bitrate of the stream, or of an individual link in a
+ (possibly-chained) Ogg Opus stream.
+ The stream must be seekable to compute the bitrate.
+ For unseekable streams, use op_bitrate_instant() to get periodic estimates.
+ \warning If the Opus stream (or link) is concurrently multiplexed with other
+ logical streams (e.g., video), this uses the size of the entire stream (or
+ link) to compute the bitrate, not just the number of bytes in the first
+ logical Opus stream.
+ Returning the latter requires scanning the entire file, but this may be done
+ by decoding the whole file and calling op_bitrate_instant() once at the
+ end.
+ Install a trivial decoding callback with op_set_decode_callback() if you
+ wish to skip actual decoding during this process.
+ \param _of The \c OggOpusFile from which to retrieve the bitrate.
+ \param _li The index of the link whose bitrate should be computed.
+ Use a negative number to get the bitrate of the whole stream.
+ \return The bitrate on success, or a negative value on error.
+ \retval #OP_EINVAL The stream was only partially open, the stream was not
+ seekable, or \a _li was larger than the number of
+ links.*/
+opus_int32 op_bitrate(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1);
+
+/**Compute the instantaneous bitrate, measured as the ratio of bits to playable
+ samples decoded since a) the last call to op_bitrate_instant(), b) the last
+ seek, or c) the start of playback, whichever was most recent.
+ This will spike somewhat after a seek or at the start/end of a chain
+ boundary, as pre-skip, pre-roll, and end-trimming causes samples to be
+ decoded but not played.
+ \param _of The \c OggOpusFile from which to retrieve the bitrate.
+ \return The bitrate, in bits per second, or a negative value on error.
+ \retval #OP_FALSE No data has been decoded since any of the events
+ described above.
+ \retval #OP_EINVAL The stream was only partially open.*/
+opus_int32 op_bitrate_instant(OggOpusFile *_of) OP_ARG_NONNULL(1);
+
+/**Obtain the current value of the position indicator for \a _of.
+ \param _of The \c OggOpusFile from which to retrieve the position indicator.
+ \return The byte position that is currently being read from.
+ \retval #OP_EINVAL The stream was only partially open.*/
+opus_int64 op_raw_tell(const OggOpusFile *_of) OP_ARG_NONNULL(1);
+
+/**Obtain the PCM offset of the next sample to be read.
+ If the stream is not properly timestamped, this might not increment by the
+ proper amount between reads, or even return monotonically increasing
+ values.
+ \param _of The \c OggOpusFile from which to retrieve the PCM offset.
+ \return The PCM offset of the next sample to be read.
+ \retval #OP_EINVAL The stream was only partially open.*/
+ogg_int64_t op_pcm_tell(const OggOpusFile *_of) OP_ARG_NONNULL(1);
+
+/*@}*/
+/*@}*/
+
+/**\defgroup stream_seeking Seeking*/
+/*@{*/
+/**\name Functions for seeking in Opus streams
+
+ These functions let you seek in Opus streams, if the underlying stream
+ support it.
+ Seeking is implemented for all built-in stream I/O routines, though some
+ individual streams may not be seekable (pipes, live HTTP streams, or HTTP
+ streams from a server that does not support <code>Range</code> requests).
+
+ op_raw_seek() is the fastest: it is guaranteed to perform at most one
+ physical seek, but, since the target is a byte position, makes no guarantee
+ how close to a given time it will come.
+ op_pcm_seek() provides sample-accurate seeking.
+ The number of physical seeks it requires is still quite small (often 1 or
+ 2, even in highly variable bitrate streams).
+
+ Seeking in Opus requires decoding some pre-roll amount before playback to
+ allow the internal state to converge (as if recovering from packet loss).
+ This is handled internally by <tt>libopusfile</tt>, but means there is
+ little extra overhead for decoding up to the exact position requested
+ (since it must decode some amount of audio anyway).
+ It also means that decoding after seeking may not return exactly the same
+ values as would be obtained by decoding the stream straight through.
+ However, such differences are expected to be smaller than the loss
+ introduced by Opus's lossy compression.*/
+/*@{*/
+
+/**Seek to a byte offset relative to the <b>compressed</b> data.
+ This also scans packets to update the PCM cursor.
+ It will cross a logical bitstream boundary, but only if it can't get any
+ packets out of the tail of the link to which it seeks.
+ \param _of The \c OggOpusFile in which to seek.
+ \param _byte_offset The byte position to seek to.
+ This must be between 0 and #op_raw_total(\a _of,\c -1)
+ (inclusive).
+ \return 0 on success, or a negative error code on failure.
+ \retval #OP_EREAD The underlying seek operation failed.
+ \retval #OP_EINVAL The stream was only partially open, or the target was
+ outside the valid range for the stream.
+ \retval #OP_ENOSEEK This stream is not seekable.
+ \retval #OP_EBADLINK Failed to initialize a decoder for a stream for an
+ unknown reason.*/
+int op_raw_seek(OggOpusFile *_of,opus_int64 _byte_offset) OP_ARG_NONNULL(1);
+
+/**Seek to the specified PCM offset, such that decoding will begin at exactly
+ the requested position.
+ \param _of The \c OggOpusFile in which to seek.
+ \param _pcm_offset The PCM offset to seek to.
+ This is in samples at 48 kHz relative to the start of the
+ stream.
+ \return 0 on success, or a negative value on error.
+ \retval #OP_EREAD An underlying read or seek operation failed.
+ \retval #OP_EINVAL The stream was only partially open, or the target was
+ outside the valid range for the stream.
+ \retval #OP_ENOSEEK This stream is not seekable.
+ \retval #OP_EBADLINK We failed to find data we had seen before, or the
+ bitstream structure was sufficiently malformed that
+ seeking to the target destination was impossible.*/
+int op_pcm_seek(OggOpusFile *_of,ogg_int64_t _pcm_offset) OP_ARG_NONNULL(1);
+
+/*@}*/
+/*@}*/
+
+/**\defgroup stream_decoding Decoding*/
+/*@{*/
+/**\name Functions for decoding audio data
+
+ These functions retrieve actual decoded audio data from the stream.
+ The general functions, op_read() and op_read_float() return 16-bit or
+ floating-point output, both using native endian ordering.
+ The number of channels returned can change from link to link in a chained
+ stream.
+ There are special functions, op_read_stereo() and op_read_float_stereo(),
+ which always output two channels, to simplify applications which do not
+ wish to handle multichannel audio.
+ These downmix multichannel files to two channels, so they can always return
+ samples in the same format for every link in a chained file.
+
+ If the rest of your audio processing chain can handle floating point, the
+ floating-point routines should be preferred, as they prevent clipping and
+ other issues which might be avoided entirely if, e.g., you scale down the
+ volume at some other stage.
+ However, if you intend to consume 16-bit samples directly, the conversion in
+ <tt>libopusfile</tt> provides noise-shaping dithering and, if compiled
+ against <tt>libopus</tt>&nbsp;1.1 or later, soft-clipping prevention.
+
+ <tt>libopusfile</tt> can also be configured at compile time to use the
+ fixed-point <tt>libopus</tt> API.
+ If so, <tt>libopusfile</tt>'s floating-point API may also be disabled.
+ In that configuration, nothing in <tt>libopusfile</tt> will use any
+ floating-point operations, to simplify support on devices without an
+ adequate FPU.
+
+ \warning HTTPS streams may be be vulnerable to truncation attacks if you do
+ not check the error return code from op_read_float() or its associated
+ functions.
+ If the remote peer does not close the connection gracefully (with a TLS
+ "close notify" message), these functions will return #OP_EREAD instead of 0
+ when they reach the end of the file.
+ If you are reading from an <https:> URL (particularly if seeking is not
+ supported), you should make sure to check for this error and warn the user
+ appropriately.*/
+/*@{*/
+
+/**Indicates that the decoding callback should produce signed 16-bit
+ native-endian output samples.*/
+#define OP_DEC_FORMAT_SHORT (7008)
+/**Indicates that the decoding callback should produce 32-bit native-endian
+ float samples.*/
+#define OP_DEC_FORMAT_FLOAT (7040)
+
+/**Indicates that the decoding callback did not decode anything, and that
+ <tt>libopusfile</tt> should decode normally instead.*/
+#define OP_DEC_USE_DEFAULT (6720)
+
+/**Called to decode an Opus packet.
+ This should invoke the functional equivalent of opus_multistream_decode() or
+ opus_multistream_decode_float(), except that it returns 0 on success
+ instead of the number of decoded samples (which is known a priori).
+ \param _ctx The application-provided callback context.
+ \param _decoder The decoder to use to decode the packet.
+ \param[out] _pcm The buffer to decode into.
+ This will always have enough room for \a _nchannels of
+ \a _nsamples samples, which should be placed into this
+ buffer interleaved.
+ \param _op The packet to decode.
+ This will always have its granule position set to a valid
+ value.
+ \param _nsamples The number of samples expected from the packet.
+ \param _nchannels The number of channels expected from the packet.
+ \param _format The desired sample output format.
+ This is either #OP_DEC_FORMAT_SHORT or
+ #OP_DEC_FORMAT_FLOAT.
+ \param _li The index of the link from which this packet was decoded.
+ \return A non-negative value on success, or a negative value on error.
+ Any error codes should be the same as those returned by
+ opus_multistream_decode() or opus_multistream_decode_float().
+ Success codes are as follows:
+ \retval 0 Decoding was successful.
+ The application has filled the buffer with
+ exactly <code>\a _nsamples*\a
+ _nchannels</code> samples in the requested
+ format.
+ \retval #OP_DEC_USE_DEFAULT No decoding was done.
+ <tt>libopusfile</tt> should do the decoding
+ by itself instead.*/
+typedef int (*op_decode_cb_func)(void *_ctx,OpusMSDecoder *_decoder,void *_pcm,
+ const ogg_packet *_op,int _nsamples,int _nchannels,int _format,int _li);
+
+/**Sets the packet decode callback function.
+ If set, this is called once for each packet that needs to be decoded.
+ This can be used by advanced applications to do additional processing on the
+ compressed or uncompressed data.
+ For example, an application might save the final entropy coder state for
+ debugging and testing purposes, or it might apply additional filters
+ before the downmixing, dithering, or soft-clipping performed by
+ <tt>libopusfile</tt>, so long as these filters do not introduce any
+ latency.
+
+ A call to this function is no guarantee that the audio will eventually be
+ delivered to the application.
+ <tt>libopusfile</tt> may discard some or all of the decoded audio data
+ (i.e., at the beginning or end of a link, or after a seek), however the
+ callback is still required to provide all of it.
+ \param _of The \c OggOpusFile on which to set the decode callback.
+ \param _decode_cb The callback function to call.
+ This may be <code>NULL</code> to disable calling the
+ callback.
+ \param _ctx The application-provided context pointer to pass to the
+ callback on each call.*/
+void op_set_decode_callback(OggOpusFile *_of,
+ op_decode_cb_func _decode_cb,void *_ctx) OP_ARG_NONNULL(1);
+
+/**Gain offset type that indicates that the provided offset is relative to the
+ header gain.
+ This is the default.*/
+#define OP_HEADER_GAIN (0)
+
+/**Gain offset type that indicates that the provided offset is relative to the
+ R128_ALBUM_GAIN value (if any), in addition to the header gain.*/
+#define OP_ALBUM_GAIN (3007)
+
+/**Gain offset type that indicates that the provided offset is relative to the
+ R128_TRACK_GAIN value (if any), in addition to the header gain.*/
+#define OP_TRACK_GAIN (3008)
+
+/**Gain offset type that indicates that the provided offset should be used as
+ the gain directly, without applying any the header or track gains.*/
+#define OP_ABSOLUTE_GAIN (3009)
+
+/**Sets the gain to be used for decoded output.
+ By default, the gain in the header is applied with no additional offset.
+ The total gain (including header gain and/or track gain, if applicable, and
+ this offset), will be clamped to [-32768,32767]/256 dB.
+ This is more than enough to saturate or underflow 16-bit PCM.
+ \note The new gain will not be applied to any already buffered, decoded
+ output.
+ This means you cannot change it sample-by-sample, as at best it will be
+ updated packet-by-packet.
+ It is meant for setting a target volume level, rather than applying smooth
+ fades, etc.
+ \param _of The \c OggOpusFile on which to set the gain offset.
+ \param _gain_type One of #OP_HEADER_GAIN, #OP_ALBUM_GAIN,
+ #OP_TRACK_GAIN, or #OP_ABSOLUTE_GAIN.
+ \param _gain_offset_q8 The gain offset to apply, in 1/256ths of a dB.
+ \return 0 on success or a negative value on error.
+ \retval #OP_EINVAL The \a _gain_type was unrecognized.*/
+int op_set_gain_offset(OggOpusFile *_of,
+ int _gain_type,opus_int32 _gain_offset_q8) OP_ARG_NONNULL(1);
+
+/**Sets whether or not dithering is enabled for 16-bit decoding.
+ By default, when <tt>libopusfile</tt> is compiled to use floating-point
+ internally, calling op_read() or op_read_stereo() will first decode to
+ float, and then convert to fixed-point using noise-shaping dithering.
+ This flag can be used to disable that dithering.
+ When the application uses op_read_float() or op_read_float_stereo(), or when
+ the library has been compiled to decode directly to fixed point, this flag
+ has no effect.
+ \param _of The \c OggOpusFile on which to enable or disable dithering.
+ \param _enabled A non-zero value to enable dithering, or 0 to disable it.*/
+void op_set_dither_enabled(OggOpusFile *_of,int _enabled) OP_ARG_NONNULL(1);
+
+/**Reads more samples from the stream.
+ \note Although \a _buf_size must indicate the total number of values that
+ can be stored in \a _pcm, the return value is the number of samples
+ <em>per channel</em>.
+ This is done because
+ <ol>
+ <li>The channel count cannot be known a priori (reading more samples might
+ advance us into the next link, with a different channel count), so
+ \a _buf_size cannot also be in units of samples per channel,</li>
+ <li>Returning the samples per channel matches the <code>libopus</code> API
+ as closely as we're able,</li>
+ <li>Returning the total number of values instead of samples per channel
+ would mean the caller would need a division to compute the samples per
+ channel, and might worry about the possibility of getting back samples
+ for some channels and not others, and</li>
+ <li>This approach is relatively fool-proof: if an application passes too
+ small a value to \a _buf_size, they will simply get fewer samples back,
+ and if they assume the return value is the total number of values, then
+ they will simply read too few (rather than reading too many and going
+ off the end of the buffer).</li>
+ </ol>
+ \param _of The \c OggOpusFile from which to read.
+ \param[out] _pcm A buffer in which to store the output PCM samples, as
+ signed native-endian 16-bit values at 48&nbsp;kHz
+ with a nominal range of <code>[-32768,32767)</code>.
+ Multiple channels are interleaved using the
+ <a href="http://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-800004.3.9">Vorbis
+ channel ordering</a>.
+ This must have room for at least \a _buf_size values.
+ \param _buf_size The number of values that can be stored in \a _pcm.
+ It is recommended that this be large enough for at
+ least 120 ms of data at 48 kHz per channel (5760
+ values per channel).
+ Smaller buffers will simply return less data, possibly
+ consuming more memory to buffer the data internally.
+ <tt>libopusfile</tt> may return less data than
+ requested.
+ If so, there is no guarantee that the remaining data
+ in \a _pcm will be unmodified.
+ \param[out] _li The index of the link this data was decoded from.
+ You may pass <code>NULL</code> if you do not need this
+ information.
+ If this function fails (returning a negative value),
+ this parameter is left unset.
+ \return The number of samples read per channel on success, or a negative
+ value on failure.
+ The channel count can be retrieved on success by calling
+ <code>op_head(_of,*_li)</code>.
+ The number of samples returned may be 0 if the buffer was too small
+ to store even a single sample for all channels, or if end-of-file
+ was reached.
+ The list of possible failure codes follows.
+ Most of them can only be returned by unseekable, chained streams
+ that encounter a new link.
+ \retval #OP_HOLE There was a hole in the data, and some samples
+ may have been skipped.
+ Call this function again to continue decoding
+ past the hole.
+ \retval #OP_EREAD An underlying read operation failed.
+ This may signal a truncation attack from an
+ <https:> source.
+ \retval #OP_EFAULT An internal memory allocation failed.
+ \retval #OP_EIMPL An unseekable stream encountered a new link that
+ used a feature that is not implemented, such as
+ an unsupported channel family.
+ \retval #OP_EINVAL The stream was only partially open.
+ \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that
+ did not have any logical Opus streams in it.
+ \retval #OP_EBADHEADER An unseekable stream encountered a new link with a
+ required header packet that was not properly
+ formatted, contained illegal values, or was
+ missing altogether.
+ \retval #OP_EVERSION An unseekable stream encountered a new link with
+ an ID header that contained an unrecognized
+ version number.
+ \retval #OP_EBADPACKET Failed to properly decode the next packet.
+ \retval #OP_EBADLINK We failed to find data we had seen before.
+ \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with
+ a starting timestamp that failed basic validity
+ checks.*/
+OP_WARN_UNUSED_RESULT int op_read(OggOpusFile *_of,
+ opus_int16 *_pcm,int _buf_size,int *_li) OP_ARG_NONNULL(1);
+
+/**Reads more samples from the stream.
+ \note Although \a _buf_size must indicate the total number of values that
+ can be stored in \a _pcm, the return value is the number of samples
+ <em>per channel</em>.
+ <ol>
+ <li>The channel count cannot be known a priori (reading more samples might
+ advance us into the next link, with a different channel count), so
+ \a _buf_size cannot also be in units of samples per channel,</li>
+ <li>Returning the samples per channel matches the <code>libopus</code> API
+ as closely as we're able,</li>
+ <li>Returning the total number of values instead of samples per channel
+ would mean the caller would need a division to compute the samples per
+ channel, and might worry about the possibility of getting back samples
+ for some channels and not others, and</li>
+ <li>This approach is relatively fool-proof: if an application passes too
+ small a value to \a _buf_size, they will simply get fewer samples back,
+ and if they assume the return value is the total number of values, then
+ they will simply read too few (rather than reading too many and going
+ off the end of the buffer).</li>
+ </ol>
+ \param _of The \c OggOpusFile from which to read.
+ \param[out] _pcm A buffer in which to store the output PCM samples as
+ signed floats at 48&nbsp;kHz with a nominal range of
+ <code>[-1.0,1.0]</code>.
+ Multiple channels are interleaved using the
+ <a href="http://www.xiph.org/vorbis/doc/Vorbis_I_spec.html#x1-800004.3.9">Vorbis
+ channel ordering</a>.
+ This must have room for at least \a _buf_size floats.
+ \param _buf_size The number of floats that can be stored in \a _pcm.
+ It is recommended that this be large enough for at
+ least 120 ms of data at 48 kHz per channel (5760
+ samples per channel).
+ Smaller buffers will simply return less data, possibly
+ consuming more memory to buffer the data internally.
+ If less than \a _buf_size values are returned,
+ <tt>libopusfile</tt> makes no guarantee that the
+ remaining data in \a _pcm will be unmodified.
+ \param[out] _li The index of the link this data was decoded from.
+ You may pass <code>NULL</code> if you do not need this
+ information.
+ If this function fails (returning a negative value),
+ this parameter is left unset.
+ \return The number of samples read per channel on success, or a negative
+ value on failure.
+ The channel count can be retrieved on success by calling
+ <code>op_head(_of,*_li)</code>.
+ The number of samples returned may be 0 if the buffer was too small
+ to store even a single sample for all channels, or if end-of-file
+ was reached.
+ The list of possible failure codes follows.
+ Most of them can only be returned by unseekable, chained streams
+ that encounter a new link.
+ \retval #OP_HOLE There was a hole in the data, and some samples
+ may have been skipped.
+ Call this function again to continue decoding
+ past the hole.
+ \retval #OP_EREAD An underlying read operation failed.
+ This may signal a truncation attack from an
+ <https:> source.
+ \retval #OP_EFAULT An internal memory allocation failed.
+ \retval #OP_EIMPL An unseekable stream encountered a new link that
+ used a feature that is not implemented, such as
+ an unsupported channel family.
+ \retval #OP_EINVAL The stream was only partially open.
+ \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that
+ did not have any logical Opus streams in it.
+ \retval #OP_EBADHEADER An unseekable stream encountered a new link with a
+ required header packet that was not properly
+ formatted, contained illegal values, or was
+ missing altogether.
+ \retval #OP_EVERSION An unseekable stream encountered a new link with
+ an ID header that contained an unrecognized
+ version number.
+ \retval #OP_EBADPACKET Failed to properly decode the next packet.
+ \retval #OP_EBADLINK We failed to find data we had seen before.
+ \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with
+ a starting timestamp that failed basic validity
+ checks.*/
+OP_WARN_UNUSED_RESULT int op_read_float(OggOpusFile *_of,
+ float *_pcm,int _buf_size,int *_li) OP_ARG_NONNULL(1);
+
+/**Reads more samples from the stream and downmixes to stereo, if necessary.
+ This function is intended for simple players that want a uniform output
+ format, even if the channel count changes between links in a chained
+ stream.
+ \note \a _buf_size indicates the total number of values that can be stored
+ in \a _pcm, while the return value is the number of samples <em>per
+ channel</em>, even though the channel count is known, for consistency with
+ op_read().
+ \param _of The \c OggOpusFile from which to read.
+ \param[out] _pcm A buffer in which to store the output PCM samples, as
+ signed native-endian 16-bit values at 48&nbsp;kHz
+ with a nominal range of <code>[-32768,32767)</code>.
+ The left and right channels are interleaved in the
+ buffer.
+ This must have room for at least \a _buf_size values.
+ \param _buf_size The number of values that can be stored in \a _pcm.
+ It is recommended that this be large enough for at
+ least 120 ms of data at 48 kHz per channel (11520
+ values total).
+ Smaller buffers will simply return less data, possibly
+ consuming more memory to buffer the data internally.
+ If less than \a _buf_size values are returned,
+ <tt>libopusfile</tt> makes no guarantee that the
+ remaining data in \a _pcm will be unmodified.
+ \return The number of samples read per channel on success, or a negative
+ value on failure.
+ The number of samples returned may be 0 if the buffer was too small
+ to store even a single sample for both channels, or if end-of-file
+ was reached.
+ The list of possible failure codes follows.
+ Most of them can only be returned by unseekable, chained streams
+ that encounter a new link.
+ \retval #OP_HOLE There was a hole in the data, and some samples
+ may have been skipped.
+ Call this function again to continue decoding
+ past the hole.
+ \retval #OP_EREAD An underlying read operation failed.
+ This may signal a truncation attack from an
+ <https:> source.
+ \retval #OP_EFAULT An internal memory allocation failed.
+ \retval #OP_EIMPL An unseekable stream encountered a new link that
+ used a feature that is not implemented, such as
+ an unsupported channel family.
+ \retval #OP_EINVAL The stream was only partially open.
+ \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that
+ did not have any logical Opus streams in it.
+ \retval #OP_EBADHEADER An unseekable stream encountered a new link with a
+ required header packet that was not properly
+ formatted, contained illegal values, or was
+ missing altogether.
+ \retval #OP_EVERSION An unseekable stream encountered a new link with
+ an ID header that contained an unrecognized
+ version number.
+ \retval #OP_EBADPACKET Failed to properly decode the next packet.
+ \retval #OP_EBADLINK We failed to find data we had seen before.
+ \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with
+ a starting timestamp that failed basic validity
+ checks.*/
+OP_WARN_UNUSED_RESULT int op_read_stereo(OggOpusFile *_of,
+ opus_int16 *_pcm,int _buf_size) OP_ARG_NONNULL(1);
+
+/**Reads more samples from the stream and downmixes to stereo, if necessary.
+ This function is intended for simple players that want a uniform output
+ format, even if the channel count changes between links in a chained
+ stream.
+ \note \a _buf_size indicates the total number of values that can be stored
+ in \a _pcm, while the return value is the number of samples <em>per
+ channel</em>, even though the channel count is known, for consistency with
+ op_read_float().
+ \param _of The \c OggOpusFile from which to read.
+ \param[out] _pcm A buffer in which to store the output PCM samples, as
+ signed floats at 48&nbsp;kHz with a nominal range of
+ <code>[-1.0,1.0]</code>.
+ The left and right channels are interleaved in the
+ buffer.
+ This must have room for at least \a _buf_size values.
+ \param _buf_size The number of values that can be stored in \a _pcm.
+ It is recommended that this be large enough for at
+ least 120 ms of data at 48 kHz per channel (11520
+ values total).
+ Smaller buffers will simply return less data, possibly
+ consuming more memory to buffer the data internally.
+ If less than \a _buf_size values are returned,
+ <tt>libopusfile</tt> makes no guarantee that the
+ remaining data in \a _pcm will be unmodified.
+ \return The number of samples read per channel on success, or a negative
+ value on failure.
+ The number of samples returned may be 0 if the buffer was too small
+ to store even a single sample for both channels, or if end-of-file
+ was reached.
+ The list of possible failure codes follows.
+ Most of them can only be returned by unseekable, chained streams
+ that encounter a new link.
+ \retval #OP_HOLE There was a hole in the data, and some samples
+ may have been skipped.
+ Call this function again to continue decoding
+ past the hole.
+ \retval #OP_EREAD An underlying read operation failed.
+ This may signal a truncation attack from an
+ <https:> source.
+ \retval #OP_EFAULT An internal memory allocation failed.
+ \retval #OP_EIMPL An unseekable stream encountered a new link that
+ used a feature that is not implemented, such as
+ an unsupported channel family.
+ \retval #OP_EINVAL The stream was only partially open.
+ \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that
+ that did not have any logical Opus streams in it.
+ \retval #OP_EBADHEADER An unseekable stream encountered a new link with a
+ required header packet that was not properly
+ formatted, contained illegal values, or was
+ missing altogether.
+ \retval #OP_EVERSION An unseekable stream encountered a new link with
+ an ID header that contained an unrecognized
+ version number.
+ \retval #OP_EBADPACKET Failed to properly decode the next packet.
+ \retval #OP_EBADLINK We failed to find data we had seen before.
+ \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with
+ a starting timestamp that failed basic validity
+ checks.*/
+OP_WARN_UNUSED_RESULT int op_read_float_stereo(OggOpusFile *_of,
+ float *_pcm,int _buf_size) OP_ARG_NONNULL(1);
+
+/*@}*/
+/*@}*/
+
+# if OP_GNUC_PREREQ(4,0)
+# pragma GCC visibility pop
+# endif
+
+# if defined(__cplusplus)
+}
+# endif
+
+#endif
diff --git a/opusfile/stream.c b/opusfile/stream.c
new file mode 100644
index 0000000..6a85197
--- /dev/null
+++ b/opusfile/stream.c
@@ -0,0 +1,364 @@
+/********************************************************************
+ * *
+ * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. *
+ * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
+ * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
+ * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
+ * *
+ * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 1994-2012 *
+ * by the Xiph.Org Foundation and contributors http://www.xiph.org/ *
+ * *
+ ********************************************************************
+
+ function: stdio-based convenience library for opening/seeking/decoding
+ last mod: $Id: vorbisfile.c 17573 2010-10-27 14:53:59Z xiphmont $
+
+ ********************************************************************/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "internal.h"
+#include <sys/types.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <errno.h>
+#include <string.h>
+#if defined(_WIN32)
+# include <io.h>
+#endif
+
+typedef struct OpusMemStream OpusMemStream;
+
+#define OP_MEM_SIZE_MAX (~(size_t)0>>1)
+#define OP_MEM_DIFF_MAX ((ptrdiff_t)OP_MEM_SIZE_MAX)
+
+/*The context information needed to read from a block of memory as if it were a
+ file.*/
+struct OpusMemStream{
+ /*The block of memory to read from.*/
+ const unsigned char *data;
+ /*The total size of the block.
+ This must be at most OP_MEM_SIZE_MAX to prevent signed overflow while
+ seeking.*/
+ ptrdiff_t size;
+ /*The current file position.
+ This is allowed to be set arbitrarily greater than size (i.e., past the end
+ of the block, though we will not read data past the end of the block), but
+ is not allowed to be negative (i.e., before the beginning of the block).*/
+ ptrdiff_t pos;
+};
+
+static int op_fread(void *_stream,unsigned char *_ptr,int _buf_size){
+ FILE *stream;
+ size_t ret;
+ /*Check for empty read.*/
+ if(_buf_size<=0)return 0;
+ stream=(FILE *)_stream;
+ ret=fread(_ptr,1,_buf_size,stream);
+ OP_ASSERT(ret<=(size_t)_buf_size);
+ /*If ret==0 and !feof(stream), there was a read error.*/
+ return ret>0||feof(stream)?(int)ret:OP_EREAD;
+}
+
+static int op_fseek(void *_stream,opus_int64 _offset,int _whence){
+#if defined(_WIN32)
+ /*_fseeki64() is not exposed until MSCVCRT80.
+ This is the default starting with MSVC 2005 (_MSC_VER>=1400), but we want
+ to allow linking against older MSVCRT versions for compatibility back to
+ XP without installing extra runtime libraries.
+ i686-pc-mingw32 does not have fseeko() and requires
+ __MSVCRT_VERSION__>=0x800 for _fseeki64(), which screws up linking with
+ other libraries (that don't use MSVCRT80 from MSVC 2005 by default).
+ i686-w64-mingw32 does have fseeko() and respects _FILE_OFFSET_BITS, but I
+ don't know how to detect that at compile time.
+ We could just use fseeko64() (which is available in both), but its
+ implemented using fgetpos()/fsetpos() just like this code, except without
+ the overflow checking, so we prefer our version.*/
+ opus_int64 pos;
+ /*We don't use fpos_t directly because it might be a struct if __STDC__ is
+ non-zero or _INTEGRAL_MAX_BITS < 64.
+ I'm not certain when the latter is true, but someone could in theory set
+ the former.
+ Either way, it should be binary compatible with a normal 64-bit int (this
+ assumption is not portable, but I believe it is true for MSVCRT).*/
+ OP_ASSERT(sizeof(pos)==sizeof(fpos_t));
+ /*Translate the seek to an absolute one.*/
+ if(_whence==SEEK_CUR){
+ int ret;
+ ret=fgetpos((FILE *)_stream,(fpos_t *)&pos);
+ if(ret)return ret;
+ }
+ else if(_whence==SEEK_END)pos=_filelengthi64(_fileno((FILE *)_stream));
+ else if(_whence==SEEK_SET)pos=0;
+ else return -1;
+ /*Check for errors or overflow.*/
+ if(pos<0||_offset<-pos||_offset>OP_INT64_MAX-pos)return -1;
+ pos+=_offset;
+ return fsetpos((FILE *)_stream,(fpos_t *)&pos);
+#else
+ /*This function actually conforms to the SUSv2 and POSIX.1-2001, so we prefer
+ it except on Windows.*/
+ return fseeko((FILE *)_stream,(off_t)_offset,_whence);
+#endif
+}
+
+static opus_int64 op_ftell(void *_stream){
+#if defined(_WIN32)
+ /*_ftelli64() is not exposed until MSCVCRT80, and ftello()/ftello64() have
+ the same problems as fseeko()/fseeko64() in MingW.
+ See above for a more detailed explanation.*/
+ opus_int64 pos;
+ OP_ASSERT(sizeof(pos)==sizeof(fpos_t));
+ return fgetpos((FILE *)_stream,(fpos_t *)&pos)?-1:pos;
+#else
+ /*This function actually conforms to the SUSv2 and POSIX.1-2001, so we prefer
+ it except on Windows.*/
+ return ftello((FILE *)_stream);
+#endif
+}
+
+static const OpusFileCallbacks OP_FILE_CALLBACKS={
+ op_fread,
+ op_fseek,
+ op_ftell,
+ (op_close_func)fclose
+};
+
+#if defined(_WIN32)
+# include <stddef.h>
+# include <errno.h>
+
+/*Windows doesn't accept UTF-8 by default, and we don't have a wchar_t API,
+ so if we just pass the path to fopen(), then there'd be no way for a user
+ of our API to open a Unicode filename.
+ Instead, we translate from UTF-8 to UTF-16 and use Windows' wchar_t API.
+ This makes this API more consistent with platforms where the character set
+ used by fopen is the same as used on disk, which is generally UTF-8, and
+ with our metadata API, which always uses UTF-8.*/
+static wchar_t *op_utf8_to_utf16(const char *_src){
+ wchar_t *dst;
+ size_t len;
+ len=strlen(_src);
+ /*Worst-case output is 1 wide character per 1 input character.*/
+ dst=(wchar_t *)_ogg_malloc(sizeof(*dst)*(len+1));
+ if(dst!=NULL){
+ size_t si;
+ size_t di;
+ for(di=si=0;si<len;si++){
+ int c0;
+ c0=(unsigned char)_src[si];
+ if(!(c0&0x80)){
+ /*Start byte says this is a 1-byte sequence.*/
+ dst[di++]=(wchar_t)c0;
+ continue;
+ }
+ else{
+ int c1;
+ /*This is safe, because c0 was not 0 and _src is NUL-terminated.*/
+ c1=(unsigned char)_src[si+1];
+ if((c1&0xC0)==0x80){
+ /*Found at least one continuation byte.*/
+ if((c0&0xE0)==0xC0){
+ wchar_t w;
+ /*Start byte says this is a 2-byte sequence.*/
+ w=(c0&0x1F)<<6|c1&0x3F;
+ if(w>=0x80U){
+ /*This is a 2-byte sequence that is not overlong.*/
+ dst[di++]=w;
+ si++;
+ continue;
+ }
+ }
+ else{
+ int c2;
+ /*This is safe, because c1 was not 0 and _src is NUL-terminated.*/
+ c2=(unsigned char)_src[si+2];
+ if((c2&0xC0)==0x80){
+ /*Found at least two continuation bytes.*/
+ if((c0&0xF0)==0xE0){
+ wchar_t w;
+ /*Start byte says this is a 3-byte sequence.*/
+ w=(c0&0xF)<<12|(c1&0x3F)<<6|c2&0x3F;
+ if(w>=0x800U&&(w<0xD800||w>=0xE000)&&w<0xFFFE){
+ /*This is a 3-byte sequence that is not overlong, not a
+ UTF-16 surrogate pair value, and not a 'not a character'
+ value.*/
+ dst[di++]=w;
+ si+=2;
+ continue;
+ }
+ }
+ else{
+ int c3;
+ /*This is safe, because c2 was not 0 and _src is
+ NUL-terminated.*/
+ c3=(unsigned char)_src[si+3];
+ if((c3&0xC0)==0x80){
+ /*Found at least three continuation bytes.*/
+ if((c0&0xF8)==0xF0){
+ opus_uint32 w;
+ /*Start byte says this is a 4-byte sequence.*/
+ w=(c0&7)<<18|(c1&0x3F)<<12|(c2&0x3F)<<6&(c3&0x3F);
+ if(w>=0x10000U&&w<0x110000U){
+ /*This is a 4-byte sequence that is not overlong and not
+ greater than the largest valid Unicode code point.
+ Convert it to a surrogate pair.*/
+ w-=0x10000;
+ dst[di++]=(wchar_t)(0xD800+(w>>10));
+ dst[di++]=(wchar_t)(0xDC00+(w&0x3FF));
+ si+=3;
+ continue;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ /*If we got here, we encountered an illegal UTF-8 sequence.*/
+ _ogg_free(dst);
+ return NULL;
+ }
+ OP_ASSERT(di<=len);
+ dst[di]='\0';
+ }
+ return dst;
+}
+
+#endif
+
+void *op_fopen(OpusFileCallbacks *_cb,const char *_path,const char *_mode){
+ FILE *fp;
+#if !defined(_WIN32)
+ fp=fopen(_path,_mode);
+#else
+ fp=NULL;
+ {
+ wchar_t *wpath;
+ wchar_t *wmode;
+ wpath=op_utf8_to_utf16(_path);
+ wmode=op_utf8_to_utf16(_mode);
+ if(wmode==NULL)errno=EINVAL;
+ else if(wpath==NULL)errno=ENOENT;
+ else fp=_wfopen(wpath,wmode);
+ _ogg_free(wmode);
+ _ogg_free(wpath);
+ }
+#endif
+ if(fp!=NULL)*_cb=*&OP_FILE_CALLBACKS;
+ return fp;
+}
+
+void *op_fdopen(OpusFileCallbacks *_cb,int _fd,const char *_mode){
+ FILE *fp;
+ fp=fdopen(_fd,_mode);
+ if(fp!=NULL)*_cb=*&OP_FILE_CALLBACKS;
+ return fp;
+}
+
+void *op_freopen(OpusFileCallbacks *_cb,const char *_path,const char *_mode,
+ void *_stream){
+ FILE *fp;
+#if !defined(_WIN32)
+ fp=freopen(_path,_mode,(FILE *)_stream);
+#else
+ fp=NULL;
+ {
+ wchar_t *wpath;
+ wchar_t *wmode;
+ wpath=op_utf8_to_utf16(_path);
+ wmode=op_utf8_to_utf16(_mode);
+ if(wmode==NULL)errno=EINVAL;
+ else if(wpath==NULL)errno=ENOENT;
+ else fp=_wfreopen(wpath,wmode,(FILE *)_stream);
+ _ogg_free(wmode);
+ _ogg_free(wpath);
+ }
+#endif
+ if(fp!=NULL)*_cb=*&OP_FILE_CALLBACKS;
+ return fp;
+}
+
+static int op_mem_read(void *_stream,unsigned char *_ptr,int _buf_size){
+ OpusMemStream *stream;
+ ptrdiff_t size;
+ ptrdiff_t pos;
+ stream=(OpusMemStream *)_stream;
+ /*Check for empty read.*/
+ if(_buf_size<=0)return 0;
+ size=stream->size;
+ pos=stream->pos;
+ /*Check for EOF.*/
+ if(pos>=size)return 0;
+ /*Check for a short read.*/
+ _buf_size=(int)OP_MIN(size-pos,_buf_size);
+ memcpy(_ptr,stream->data+pos,_buf_size);
+ pos+=_buf_size;
+ stream->pos=pos;
+ return _buf_size;
+}
+
+static int op_mem_seek(void *_stream,opus_int64 _offset,int _whence){
+ OpusMemStream *stream;
+ ptrdiff_t pos;
+ stream=(OpusMemStream *)_stream;
+ pos=stream->pos;
+ OP_ASSERT(pos>=0);
+ switch(_whence){
+ case SEEK_SET:{
+ /*Check for overflow:*/
+ if(_offset<0||_offset>OP_MEM_DIFF_MAX)return -1;
+ pos=(ptrdiff_t)_offset;
+ }break;
+ case SEEK_CUR:{
+ /*Check for overflow:*/
+ if(_offset<-pos||_offset>OP_MEM_DIFF_MAX-pos)return -1;
+ pos=(ptrdiff_t)(pos+_offset);
+ }break;
+ case SEEK_END:{
+ ptrdiff_t size;
+ size=stream->size;
+ OP_ASSERT(size>=0);
+ /*Check for overflow:*/
+ if(_offset>size||_offset<size-OP_MEM_DIFF_MAX)return -1;
+ pos=(ptrdiff_t)(size-_offset);
+ }break;
+ default:return -1;
+ }
+ stream->pos=pos;
+ return 0;
+}
+
+static opus_int64 op_mem_tell(void *_stream){
+ OpusMemStream *stream;
+ stream=(OpusMemStream *)_stream;
+ return (ogg_int64_t)stream->pos;
+}
+
+static int op_mem_close(void *_stream){
+ _ogg_free(_stream);
+ return 0;
+}
+
+static const OpusFileCallbacks OP_MEM_CALLBACKS={
+ op_mem_read,
+ op_mem_seek,
+ op_mem_tell,
+ op_mem_close
+};
+
+void *op_mem_stream_create(OpusFileCallbacks *_cb,
+ const unsigned char *_data,size_t _size){
+ OpusMemStream *stream;
+ if(_size>OP_MEM_SIZE_MAX)return NULL;
+ stream=(OpusMemStream *)_ogg_malloc(sizeof(*stream));
+ if(stream!=NULL){
+ *_cb=*&OP_MEM_CALLBACKS;
+ stream->data=_data;
+ stream->size=_size;
+ stream->pos=0;
+ }
+ return stream;
+}
diff --git a/other-pro/static.pro b/other-pro/static.pro
index 318df94..318df94 100644..100755
--- a/other-pro/static.pro
+++ b/other-pro/static.pro
diff --git a/other-pro/supercopier-core.pro b/other-pro/supercopier-core.pro
index eb6d143..eb6d143 100644..100755
--- a/other-pro/supercopier-core.pro
+++ b/other-pro/supercopier-core.pro
diff --git a/other-pro/ultracopier-core.pro b/other-pro/ultracopier-core.pro
index d1da53a..1cb9226 100644..100755
--- a/other-pro/ultracopier-core.pro
+++ b/other-pro/ultracopier-core.pro
@@ -2,6 +2,37 @@ CONFIG += c++11
QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
#QMAKE_CXXFLAGS+="-Wall -Wextra -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-unused-macros -Wno-newline-eof -Wno-exit-time-destructors -Wno-global-constructors -Wno-gnu-zero-variadic-macro-arguments -Wno-documentation -Wno-shadow -Wno-missing-prototypes -Wno-padded -Wno-covered-switch-default -Wno-old-style-cast -Wno-documentation-unknown-command -Wno-switch-enum -Wno-undefined-reinterpret-cast -Wno-unreachable-code-break -Wno-sign-conversion -Wno-float-conversion"
+QMAKE_CXXFLAGS+=""
+DEFINES += _LARGE_FILE_SOURCE=1 _FILE_OFFSET_BITS=64 _UNICODE UNICODE
+
+!contains(DEFINES, AUDIO) {
+#DEFINES += NOAUDIO
+}
+wasm: DEFINES += NOAUDIO
+macx {
+ DEFINES += NOAUDIO
+ LIBS += /usr/local/Cellar/opus/1.3.1/lib/libopus.a
+ INCLUDEPATH += /usr/local/Cellar/opus/1.3.1/include/
+}
+#DEFINES += NOAUDIO
+!contains(DEFINES, NOAUDIO) {
+QT += multimedia
+linux:LIBS += -lopus
+win32:LIBS += -lopus
+SOURCES += \
+ $$PWD/../libogg/bitwise.c \
+ $$PWD/../libogg/framing.c \
+ $$PWD/../opusfile/info.c \
+ $$PWD/../opusfile/internal.c \
+ $$PWD/../opusfile/opusfile.c \
+ $$PWD/../opusfile/stream.c \
+
+HEADERS += \
+ $$PWD/../libogg/ogg.h \
+ $$PWD/../libogg/os_types.h \
+ $$PWD/../opusfile/internal.h \
+ $$PWD/../opusfile/opusfile.h \
+}
TEMPLATE = app
QT += network xml widgets
@@ -31,6 +62,7 @@ TARGET = ultracopier
macx {
ICON = $$PWD/../resources/ultracopier.icns
#QT += macextras
+ VERSION = 2.0.0.1
}
FORMS += $$PWD/../HelpDialog.ui \
$$PWD/../PluginInformation.ui \
@@ -42,7 +74,9 @@ RESOURCES += \
$$PWD/../resources/ultracopier-resources_unix.qrc \
$$PWD/../resources/ultracopier-resources_windows.qrc
win32 {
- RESOURCES += $$PWD/../resources/resources-windows-qt-plugin.qrc
+ !contains(DEFINES, ULTRACOPIER_PLUGIN_ALL_IN_ONE) {
+ RESOURCES += $$PWD/../resources/resources-windows-qt-plugin.qrc
+ }
RC_FILE += $$PWD/../resources/resources-windows.rc
#LIBS += -lpdh
LIBS += -ladvapi32
@@ -76,7 +110,7 @@ HEADERS += $$PWD/../ResourcesManager.h \
$$PWD/../interface/PluginInterface_Listener.h \
$$PWD/../interface/PluginInterface_CopyEngine.h \
$$PWD/../interface/OptionInterface.h \
- $$PWD/../Variable.h \
+ $$PWD/../Version.h \
$$PWD/../PluginLoaderCore.h \
$$PWD/../interface/PluginInterface_PluginLoader.h \
$$PWD/../OptionDialog.h \
@@ -121,6 +155,7 @@ SOURCES += $$PWD/../ThemesManager.cpp \
$$PWD/../LocalListener.cpp \
$$PWD/../CliParser.cpp \
$$PWD/../FacilityEngine.cpp \
+ $$PWD/../FacilityEngineVersion.cpp \
$$PWD/../LogThread.cpp \
$$PWD/../OSSpecific.cpp \
$$PWD/../cpp11addition.cpp \
@@ -132,3 +167,9 @@ INCLUDEPATH += \
$$PWD/../lib/qt-tar-xz/
OTHER_FILES += $$PWD/../resources/resources-windows.rc
+
+win32: {
+DEFINES += WIDESTRING
+QT += winextras
+}
+DEFINES += WIDESTRING
diff --git a/other-pro/ultracopier-core.pro.user.4.8-pre1 b/other-pro/ultracopier-core.pro.user.4.8-pre1
new file mode 100755
index 0000000..5c1a527
--- /dev/null
+++ b/other-pro/ultracopier-core.pro.user.4.8-pre1
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.6.2, 2019-07-02T17:22:01. -->
+<qtcreator>
+ <data>
+ <variable>EnvironmentId</variable>
+ <value type="QByteArray">{74ab603f-f657-4135-92cf-c93af71b2f91}</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.ActiveTarget</variable>
+ <value type="int">0</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.EditorSettings</variable>
+ <valuemap type="QVariantMap">
+ <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+ <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+ <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+ <value type="QString" key="language">Cpp</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+ </valuemap>
+ </valuemap>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
+ <value type="QString" key="language">QmlJS</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
+ </valuemap>
+ </valuemap>
+ <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
+ <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+ <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+ <value type="int" key="EditorConfiguration.IndentSize">4</value>
+ <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+ <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+ <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+ <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+ <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+ <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+ <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+ <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+ <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+ <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+ <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+ <value type="int" key="EditorConfiguration.TabSize">8</value>
+ <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+ <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+ <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+ <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+ <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+ <value type="bool" key="EditorConfiguration.inEntireDocument">true</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.PluginSettings</variable>
+ <valuemap type="QVariantMap"/>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.0</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{23178a1c-09be-4e9f-9aab-ff55e05e7637}</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/build-ultracopier-core-Desktop-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-j5</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/build-ultracopier-core-Desktop-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/build-ultracopier-core-Desktop-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+ <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+ <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+ <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+ <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+ <value type="int">0</value>
+ <value type="int">1</value>
+ <value type="int">2</value>
+ <value type="int">3</value>
+ <value type="int">4</value>
+ <value type="int">5</value>
+ <value type="int">6</value>
+ <value type="int">7</value>
+ <value type="int">8</value>
+ <value type="int">9</value>
+ <value type="int">10</value>
+ <value type="int">11</value>
+ <value type="int">12</value>
+ <value type="int">13</value>
+ <value type="int">14</value>
+ </valuelist>
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">ultracopier-core</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/user/Desktop/ultracopier/sources/other-pro/ultracopier-core.pro</value>
+ <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">ultracopier-core.pro</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/user/Desktop/ultracopier/sources/build-ultracopier-core-Desktop-Debug</value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.TargetCount</variable>
+ <value type="int">1</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+ <value type="int">18</value>
+ </data>
+ <data>
+ <variable>Version</variable>
+ <value type="int">18</value>
+ </data>
+</qtcreator>
diff --git a/other-pro/ultracopier-core.pro.user.74ab603.4.8-pre1 b/other-pro/ultracopier-core.pro.user.74ab603.4.8-pre1
new file mode 100755
index 0000000..5c1a527
--- /dev/null
+++ b/other-pro/ultracopier-core.pro.user.74ab603.4.8-pre1
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.6.2, 2019-07-02T17:22:01. -->
+<qtcreator>
+ <data>
+ <variable>EnvironmentId</variable>
+ <value type="QByteArray">{74ab603f-f657-4135-92cf-c93af71b2f91}</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.ActiveTarget</variable>
+ <value type="int">0</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.EditorSettings</variable>
+ <valuemap type="QVariantMap">
+ <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+ <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+ <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+ <value type="QString" key="language">Cpp</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+ </valuemap>
+ </valuemap>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
+ <value type="QString" key="language">QmlJS</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
+ </valuemap>
+ </valuemap>
+ <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
+ <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+ <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+ <value type="int" key="EditorConfiguration.IndentSize">4</value>
+ <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+ <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+ <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+ <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+ <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+ <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+ <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+ <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+ <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+ <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+ <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+ <value type="int" key="EditorConfiguration.TabSize">8</value>
+ <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+ <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+ <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+ <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+ <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+ <value type="bool" key="EditorConfiguration.inEntireDocument">true</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.PluginSettings</variable>
+ <valuemap type="QVariantMap"/>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.0</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{23178a1c-09be-4e9f-9aab-ff55e05e7637}</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/build-ultracopier-core-Desktop-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-j5</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/build-ultracopier-core-Desktop-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/build-ultracopier-core-Desktop-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+ <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+ <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+ <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+ <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+ <value type="int">0</value>
+ <value type="int">1</value>
+ <value type="int">2</value>
+ <value type="int">3</value>
+ <value type="int">4</value>
+ <value type="int">5</value>
+ <value type="int">6</value>
+ <value type="int">7</value>
+ <value type="int">8</value>
+ <value type="int">9</value>
+ <value type="int">10</value>
+ <value type="int">11</value>
+ <value type="int">12</value>
+ <value type="int">13</value>
+ <value type="int">14</value>
+ </valuelist>
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">ultracopier-core</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/user/Desktop/ultracopier/sources/other-pro/ultracopier-core.pro</value>
+ <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">ultracopier-core.pro</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/user/Desktop/ultracopier/sources/build-ultracopier-core-Desktop-Debug</value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.TargetCount</variable>
+ <value type="int">1</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+ <value type="int">18</value>
+ </data>
+ <data>
+ <variable>Version</variable>
+ <value type="int">18</value>
+ </data>
+</qtcreator>
diff --git a/other-pro/ultracopier-little-random.pro b/other-pro/ultracopier-little-random.pro
new file mode 100755
index 0000000..f628f3a
--- /dev/null
+++ b/other-pro/ultracopier-little-random.pro
@@ -0,0 +1,11 @@
+include(ultracopier-little.pri)
+
+DEFINES += ULTRACOPIER_LITTLE_RANDOM NOAUDIO
+
+SOURCES += \
+ ../plugins/CopyEngine/Random/CopyEngine.cpp \
+ ../plugins/CopyEngine/Random/CopyEngineFactory.cpp
+
+HEADERS += \
+ ../plugins/CopyEngine/Random/CopyEngine.h \
+ ../plugins/CopyEngine/Random/CopyEngineFactory.h
diff --git a/other-pro/ultracopier-little-random.pro.user.4.8-pre1 b/other-pro/ultracopier-little-random.pro.user.4.8-pre1
new file mode 100755
index 0000000..b1557ff
--- /dev/null
+++ b/other-pro/ultracopier-little-random.pro.user.4.8-pre1
@@ -0,0 +1,291 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.6.2, 2019-07-05T19:20:02. -->
+<qtcreator>
+ <data>
+ <variable>EnvironmentId</variable>
+ <value type="QByteArray">{74ab603f-f657-4135-92cf-c93af71b2f91}</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.ActiveTarget</variable>
+ <value type="int">0</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.EditorSettings</variable>
+ <valuemap type="QVariantMap">
+ <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+ <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+ <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+ <value type="QString" key="language">Cpp</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+ </valuemap>
+ </valuemap>
+ <value type="int" key="EditorConfiguration.CodeStyle.Count">1</value>
+ <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+ <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+ <value type="int" key="EditorConfiguration.IndentSize">4</value>
+ <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+ <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+ <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+ <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+ <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+ <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+ <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+ <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+ <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+ <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+ <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+ <value type="int" key="EditorConfiguration.TabSize">8</value>
+ <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+ <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+ <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+ <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+ <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+ <value type="bool" key="EditorConfiguration.inEntireDocument">true</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.PluginSettings</variable>
+ <valuemap type="QVariantMap"/>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.0</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{23178a1c-09be-4e9f-9aab-ff55e05e7637}</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/build-ultracopier-little-random-Desktop-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/build-ultracopier-little-random-Desktop-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/build-ultracopier-little-random-Desktop-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">ultracopier-little-random</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/user/Desktop/ultracopier/sources/other-pro/ultracopier-little-random.pro</value>
+ <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">ultracopier-little-random.pro</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/user/Desktop/ultracopier/sources/build-ultracopier-little-random-Desktop-Debug</value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.TargetCount</variable>
+ <value type="int">1</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+ <value type="int">18</value>
+ </data>
+ <data>
+ <variable>Version</variable>
+ <value type="int">18</value>
+ </data>
+</qtcreator>
diff --git a/other-pro/ultracopier-little.pri b/other-pro/ultracopier-little.pri
new file mode 100755
index 0000000..687f346
--- /dev/null
+++ b/other-pro/ultracopier-little.pri
@@ -0,0 +1,63 @@
+CONFIG += c++11
+QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
+mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
+#QMAKE_CXXFLAGS+="-Wall -Wextra -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-unused-macros -Wno-newline-eof -Wno-exit-time-destructors -Wno-global-constructors -Wno-gnu-zero-variadic-macro-arguments -Wno-documentation -Wno-shadow -Wno-missing-prototypes -Wno-padded -Wno-covered-switch-default -Wno-old-style-cast -Wno-documentation-unknown-command -Wno-switch-enum -Wno-undefined-reinterpret-cast -Wno-unreachable-code-break -Wno-sign-conversion -Wno-float-conversion"
+
+DEFINES += ULTRACOPIER_LITTLE ULTRACOPIER_PLUGIN_ALL_IN_ONE ULTRACOPIER_PLUGIN_ALL_IN_ONE_DIRECT ULTRACOPIER_NODEBUG
+DEFINES -= ULTRACOPIER_DEBUG
+
+TEMPLATE = app
+QT += widgets
+
+TARGET = ultracopier
+macx {
+ ICON = $$PWD/../resources/ultracopier.icns
+ #QT += macextras
+}
+win32 {
+ RC_FILE += $$PWD/../resources/resources-windows.rc
+ LIBS += -ladvapi32
+}
+
+OTHER_FILES += $$PWD/../resources/resources-windows.rc
+
+SOURCES += \
+ ../little/main-little.cpp \
+ ../plugins/Themes/Oxygen/interface.cpp \
+ ../plugins/Themes/Oxygen/ThemesFactory.cpp \
+ ../plugins/Themes/Oxygen/TransferModel.cpp \
+ ../little/OptionsEngineLittle.cpp \
+ ../FacilityEngine.cpp \
+ ../cpp11addition.cpp \
+ ../cpp11additionstringtointcpp.cpp
+
+RESOURCES += \
+ ../plugins/Themes/Oxygen/interfaceResources_unix.qrc \
+ ../plugins/Themes/Oxygen/interfaceResources_windows.qrc \
+ ../plugins/Themes/Oxygen/interfaceResources.qrc
+
+FORMS += \
+ ../plugins/Themes/Oxygen/themesOptions.ui \
+ ../plugins/Themes/Oxygen/options.ui \
+ ../plugins/Themes/Oxygen/interface.ui
+
+DISTFILES +=
+
+HEADERS += \
+ ../plugins/Themes/Oxygen/DebugEngineMacro.h \
+ ../plugins/Themes/Oxygen/Environment.h \
+ ../plugins/Themes/Oxygen/interface.h \
+ ../plugins/Themes/Oxygen/OxygenVariable.h \
+ ../plugins/Themes/Oxygen/StructEnumDefinition.h \
+ ../plugins/Themes/Oxygen/ThemesFactory.h \
+ ../plugins/Themes/Oxygen/TransferModel.h \
+ ../little/OptionsEngineLittle.h \
+ ../FacilityEngine.h \
+ ../interface/FacilityInterface.h \
+ ../interface/OptionInterface.h \
+ ../interface/PluginInterface_CopyEngine.h \
+ ../interface/PluginInterface_SessionLoader.h \
+ ../interface/PluginInterface_Themes.h \
+ ../interface/PluginInterface_Listener.h \
+ ../interface/PluginInterface_PluginLoader.h \
+ ../cpp11addition.h
diff --git a/other-pro/ultracopier-little.pro b/other-pro/ultracopier-little.pro
index a10aab6..64f9999 100644..100755
--- a/other-pro/ultracopier-little.pro
+++ b/other-pro/ultracopier-little.pro
@@ -1,121 +1,101 @@
-CONFIG += c++11
-QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
-mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
-#QMAKE_CXXFLAGS+="-Wall -Wextra -Weverything -Wno-c++98-compat -Wno-c++98-compat-pedantic -Wno-unused-macros -Wno-newline-eof -Wno-exit-time-destructors -Wno-global-constructors -Wno-gnu-zero-variadic-macro-arguments -Wno-documentation -Wno-shadow -Wno-missing-prototypes -Wno-padded -Wno-covered-switch-default -Wno-old-style-cast -Wno-documentation-unknown-command -Wno-switch-enum -Wno-undefined-reinterpret-cast -Wno-unreachable-code-break -Wno-sign-conversion -Wno-float-conversion"
-
-DEFINES += ULTRACOPIER_LITTLE ULTRACOPIER_PLUGIN_ALL_IN_ONE ULTRACOPIER_PLUGIN_ALL_IN_ONE_DIRECT ULTRACOPIER_NODEBUG
-DEFINES -= ULTRACOPIER_DEBUG
-
-TEMPLATE = app
-QT += widgets
+wasm: DEFINES += NOAUDIO
+android: DEFINES += NOAUDIO
+#DEFINES += NOAUDIO
+!contains(DEFINES, NOAUDIO) {
+QT += multimedia
+linux:LIBS += -lopus
+macx:LIBS += -lopus
+win32:LIBS += -lopus
+SOURCES += \
+ $$PWD/../libogg/bitwise.c \
+ $$PWD/../libogg/framing.c \
+ $$PWD/../opusfile/info.c \
+ $$PWD/../opusfile/internal.c \
+ $$PWD/../opusfile/opusfile.c \
+ $$PWD/../opusfile/stream.c \
-TARGET = ultracopier
-macx {
- ICON = $$PWD/../resources/ultracopier.icns
- #QT += macextras
-}
-win32 {
- RC_FILE += $$PWD/../resources/resources-windows.rc
- LIBS += -ladvapi32
+HEADERS += \
+ $$PWD/../libogg/ogg.h \
+ $$PWD/../libogg/os_types.h \
+ $$PWD/../opusfile/internal.h \
+ $$PWD/../opusfile/opusfile.h \
}
-OTHER_FILES += $$PWD/../resources/resources-windows.rc
+include(ultracopier-little.pri)
SOURCES += \
- ../little/main-little.cpp \
- ../plugins/CopyEngine/Ultracopier/AvancedQFile.cpp \
- ../plugins/CopyEngine/Ultracopier/TransferThread.cpp \
- ../plugins/CopyEngine/Ultracopier/WriteThread.cpp \
- ../plugins/CopyEngine/Ultracopier/ReadThread.cpp \
- ../plugins/CopyEngine/Ultracopier/RenamingRules.cpp \
- ../plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp \
- ../plugins/CopyEngine/Ultracopier/CopyEngine-collision-and-error.cpp \
- ../plugins/CopyEngine/Ultracopier/CopyEngine.cpp \
- ../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp \
- ../plugins/CopyEngine/Ultracopier/DebugDialog.cpp \
- ../plugins/CopyEngine/Ultracopier/DiskSpace.cpp \
- ../plugins/CopyEngine/Ultracopier/DriveManagement.cpp \
- ../plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp \
- ../plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp \
- ../plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp \
- ../plugins/CopyEngine/Ultracopier/FilterRules.cpp \
- ../plugins/CopyEngine/Ultracopier/Filters.cpp \
- ../plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp \
- ../plugins/CopyEngine/Ultracopier/ListThread_InodeAction.cpp \
- ../plugins/CopyEngine/Ultracopier/ListThread.cpp \
- ../plugins/CopyEngine/Ultracopier/MkPath.cpp \
- ../plugins/Themes/Oxygen/ThemesFactory.cpp \
- ../plugins/Themes/Oxygen/TransferModel.cpp \
- ../plugins/Themes/Oxygen/interface.cpp \
- ../little/OptionsEngineLittle.cpp \
- ../FacilityEngine.cpp \
- ../cpp11addition.cpp \
- ../cpp11additionstringtointcpp.cpp
+ ../plugins/CopyEngine/Ultracopier-Spec/CopyEngine-collision-and-error.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/DebugDialog.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/DiskSpace.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/DriveManagement.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/FilterRules.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/ListThread_InodeAction.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/RenamingRules.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/ListThread.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/ListThreadActions.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/ListThreadStat.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/ListThreadScan.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/ListThreadOptions.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/ListThreadNew.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/ListThreadMedia.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.cpp \
+ ../plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.cpp
RESOURCES += \
- ../plugins/CopyEngine/Ultracopier/copyEngineResources.qrc \
- ../plugins/Themes/Oxygen/interfaceResources_unix.qrc \
- ../plugins/Themes/Oxygen/interfaceResources_windows.qrc \
- ../plugins/Themes/Oxygen/interfaceResources.qrc
+ ../plugins/CopyEngine/Ultracopier-Spec/copyEngineResources.qrc
FORMS += \
- ../plugins/CopyEngine/Ultracopier/RenamingRules.ui \
- ../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui \
- ../plugins/CopyEngine/Ultracopier/debugDialog.ui \
- ../plugins/CopyEngine/Ultracopier/DiskSpace.ui \
- ../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui \
- ../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui \
- ../plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui \
- ../plugins/CopyEngine/Ultracopier/FilterRules.ui \
- ../plugins/CopyEngine/Ultracopier/Filters.ui \
- ../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui \
- ../plugins/Themes/Oxygen/interface.ui \
- ../plugins/Themes/Oxygen/themesOptions.ui \
- ../plugins/Themes/Oxygen/options.ui
-
-DISTFILES +=
+ ../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui \
+ ../plugins/CopyEngine/Ultracopier-Spec/debugDialog.ui \
+ ../plugins/CopyEngine/Ultracopier-Spec/DiskSpace.ui \
+ ../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui \
+ ../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui \
+ ../plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui \
+ ../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui \
+ ../plugins/CopyEngine/Ultracopier-Spec/Filters.ui \
+ ../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui \
+ ../plugins/CopyEngine/Ultracopier-Spec/RenamingRules.ui
HEADERS += \
- ../plugins/CopyEngine/Ultracopier/AvancedQFile.h \
- ../plugins/CopyEngine/Ultracopier/CompilerInfo.h \
- ../plugins/CopyEngine/Ultracopier/TransferThread.h \
- ../plugins/CopyEngine/Ultracopier/Variable.h \
- ../plugins/CopyEngine/Ultracopier/WriteThread.h \
- ../plugins/CopyEngine/Ultracopier/ReadThread.h \
- ../plugins/CopyEngine/Ultracopier/RenamingRules.h \
- ../plugins/CopyEngine/Ultracopier/ScanFileOrFolder.h \
- ../plugins/CopyEngine/Ultracopier/StructEnumDefinition_CopyEngine.h \
- ../plugins/CopyEngine/Ultracopier/StructEnumDefinition.h \
- ../plugins/CopyEngine/Ultracopier/CopyEngine.h \
- ../plugins/CopyEngine/Ultracopier/CopyEngineFactory.h \
- ../plugins/CopyEngine/Ultracopier/DebugDialog.h \
- ../plugins/CopyEngine/Ultracopier/DebugEngineMacro.h \
- ../plugins/CopyEngine/Ultracopier/DiskSpace.h \
- ../plugins/CopyEngine/Ultracopier/DriveManagement.h \
- ../plugins/CopyEngine/Ultracopier/Environment.h \
- ../plugins/CopyEngine/Ultracopier/FileErrorDialog.h \
- ../plugins/CopyEngine/Ultracopier/FileExistsDialog.h \
- ../plugins/CopyEngine/Ultracopier/FileIsSameDialog.h \
- ../plugins/CopyEngine/Ultracopier/FilterRules.h \
- ../plugins/CopyEngine/Ultracopier/Filters.h \
- ../plugins/CopyEngine/Ultracopier/FolderExistsDialog.h \
- ../plugins/CopyEngine/Ultracopier/ListThread.h \
- ../plugins/CopyEngine/Ultracopier/MkPath.h \
- ../plugins/Themes/Oxygen/ThemesFactory.h \
- ../plugins/Themes/Oxygen/TransferModel.h \
- ../plugins/Themes/Oxygen/Variable.h \
- ../plugins/Themes/Oxygen/StructEnumDefinition.h \
- ../plugins/Themes/Oxygen/interface.h \
- ../plugins/Themes/Oxygen/DebugEngineMacro.h \
- ../plugins/Themes/Oxygen/Environment.h \
- ../little/OptionsEngineLittle.h \
- ../FacilityEngine.h \
- ../Variable.h \
- ../interface/FacilityInterface.h \
- ../interface/OptionInterface.h \
- ../interface/PluginInterface_CopyEngine.h \
- ../interface/PluginInterface_SessionLoader.h \
- ../interface/PluginInterface_Themes.h \
- ../interface/PluginInterface_Listener.h \
- ../interface/PluginInterface_PluginLoader.h \
- ../cpp11addition.h
+ ../plugins/CopyEngine/Ultracopier-Spec/CompilerInfo.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/DebugDialog.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/DebugEngineMacro.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/DiskSpace.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/DriveManagement.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/Environment.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/FilterRules.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/Filters.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/MkPath.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/ListThread.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/RenamingRules.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition_CopyEngine.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/TransferThread.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/CopyEngineUltracopier-SpecVariable.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.h \
+ ../plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.h
+
+ANDROID_PACKAGE_SOURCE_DIR = $$PWD/../android-sources
+
+DISTFILES += \
+ ../android-sources/AndroidManifest.xml
diff --git a/other-pro/ultracopier-little.pro.user.74ab603.4.9-pre1 b/other-pro/ultracopier-little.pro.user.74ab603.4.9-pre1
new file mode 100755
index 0000000..e29bf40
--- /dev/null
+++ b/other-pro/ultracopier-little.pro.user.74ab603.4.9-pre1
@@ -0,0 +1,281 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.8.2, 2019-07-12T20:02:30. -->
+<qtcreator>
+ <data>
+ <variable>EnvironmentId</variable>
+ <value type="QByteArray">{74ab603f-f657-4135-92cf-c93af71b2f91}</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.ActiveTarget</variable>
+ <value type="int">0</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.EditorSettings</variable>
+ <valuemap type="QVariantMap">
+ <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+ <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+ <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+ <value type="QString" key="language">Cpp</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+ </valuemap>
+ </valuemap>
+ <value type="int" key="EditorConfiguration.CodeStyle.Count">1</value>
+ <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+ <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+ <value type="int" key="EditorConfiguration.IndentSize">4</value>
+ <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+ <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+ <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+ <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+ <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+ <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+ <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+ <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+ <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+ <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+ <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+ <value type="int" key="EditorConfiguration.TabSize">8</value>
+ <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+ <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+ <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+ <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+ <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+ <value type="bool" key="EditorConfiguration.inEntireDocument">true</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.PluginSettings</variable>
+ <valuemap type="QVariantMap">
+ <valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
+ <value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.0</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{23178a1c-09be-4e9f-9aab-ff55e05e7637}</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/build-ultracopier-little-Desktop-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/build-ultracopier-little-Desktop-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/build-ultracopier-little-Desktop-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">ultracopier-little</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/user/Desktop/ultracopier/sources/other-pro/ultracopier-little.pro</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">ultracopier-little.pro</value>
+ <value type="QString" key="RunConfiguration.Arguments"></value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
+ <value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.TargetCount</variable>
+ <value type="int">1</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+ <value type="int">20</value>
+ </data>
+ <data>
+ <variable>Version</variable>
+ <value type="int">20</value>
+ </data>
+</qtcreator>
diff --git a/other-pro/ultracopier-static.pro b/other-pro/ultracopier-static.pro
index 48a5cad..33de786 100644..100755
--- a/other-pro/ultracopier-static.pro
+++ b/other-pro/ultracopier-static.pro
@@ -1,6 +1,6 @@
include(static.pro)
RESOURCES += $$PWD/../plugins/static-plugins-oxygen.qrc \
- $$PWD/../plugins/Themes/Oxygen/interfaceResources_windows.qrc \
- $$PWD/../plugins/Themes/Oxygen/interfaceResources_unix.qrc \
- $$PWD/../plugins/Themes/Oxygen/interfaceResources.qrc
+ $$PWD/../plugins/Themes/Oxygen2/interfaceResources_windows.qrc \
+ $$PWD/../plugins/Themes/Oxygen2/interfaceResources_unix.qrc \
+ $$PWD/../plugins/Themes/Oxygen2/interfaceResources.qrc
diff --git a/plugins/CopyEngine/Ultracopier/AvancedQFile.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/AvancedQFile.cpp
index 3d867fb..3d867fb 100644..100755
--- a/plugins/CopyEngine/Ultracopier/AvancedQFile.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/AvancedQFile.cpp
diff --git a/plugins/CopyEngine/Ultracopier/AvancedQFile.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/AvancedQFile.h
index 8c3dc4a..8c3dc4a 100644..100755
--- a/plugins/CopyEngine/Ultracopier/AvancedQFile.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/AvancedQFile.h
diff --git a/plugins/CopyEngine/Ultracopier/CompilerInfo.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CompilerInfo.h
index 84625b9..84625b9 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CompilerInfo.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CompilerInfo.h
diff --git a/plugins/CopyEngine/Ultracopier/CopyEngine-collision-and-error.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine-collision-and-error.cpp
index 16c36ae..16c36ae 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CopyEngine-collision-and-error.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine-collision-and-error.cpp
diff --git a/plugins/CopyEngine/Ultracopier/CopyEngine.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine.cpp
index f3d6e04..d7cdb6c 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CopyEngine.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine.cpp
@@ -70,9 +70,11 @@ CopyEngine::~CopyEngine()
void CopyEngine::connectTheSignalsSlots()
{
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
debugDialogWindow.show();
#endif
+ #endif
if(!connect(listThread,&ListThread::actionInProgess, this,&CopyEngine::actionInProgess, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect actionInProgess()");
if(!connect(listThread,&ListThread::actionInProgess, this,&CopyEngine::newActionInProgess, Qt::QueuedConnection))
@@ -99,10 +101,12 @@ void CopyEngine::connectTheSignalsSlots()
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect syncReady()");
if(!connect(listThread,&ListThread::canBeDeleted, this,&CopyEngine::canBeDeleted, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect canBeDeleted()");
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
if(!connect(listThread,&ListThread::debugInformation, this,&CopyEngine::debugInformation, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect debugInformation()");
#endif
+ #endif
if(!connect(listThread,&ListThread::send_fileAlreadyExists, this,&CopyEngine::fileAlreadyExistsSlot, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_fileAlreadyExists()");
@@ -112,10 +116,12 @@ void CopyEngine::connectTheSignalsSlots()
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_folderAlreadyExists()");
if(!connect(listThread,&ListThread::send_errorOnFolder, this,&CopyEngine::errorOnFolderSlot, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_errorOnFolder()");
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
if(!connect(listThread,&ListThread::updateTheDebugInfo, this,&CopyEngine::updateTheDebugInfo, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect updateTheDebugInfo()");
#endif
+ #endif
if(!connect(listThread,&ListThread::errorTransferList, this,&CopyEngine::errorTransferList, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect errorTransferList()");
if(!connect(listThread,&ListThread::warningTransferList, this,&CopyEngine::warningTransferList, Qt::QueuedConnection))
@@ -207,6 +213,7 @@ void CopyEngine::connectTheSignalsSlots()
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect set_updateMount()");
}
+#ifdef ULTRACOPIER_PLUGIN_DEBUG
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
void CopyEngine::updateTheDebugInfo(const std::vector<std::string> &newList, const std::vector<std::string> &newList2, const int &numberOfInodeOperation)
{
@@ -215,6 +222,7 @@ void CopyEngine::updateTheDebugInfo(const std::vector<std::string> &newList, con
debugDialogWindow.setInodeUsage(numberOfInodeOperation);
}
#endif
+#endif
//to send the options panel
bool CopyEngine::getOptionsEngine(QWidget * tempWidget)
diff --git a/plugins/CopyEngine/Ultracopier/CopyEngine.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine.h
index e5311d8..7b0ce36 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CopyEngine.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine.h
@@ -46,9 +46,11 @@ public:
void connectTheSignalsSlots();
private:
ListThread * listThread;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
DebugDialog debugDialogWindow;
#endif
+ #endif
QWidget * tempWidget;
Ui::copyEngineOptions * ui;
bool uiIsInstalled;
@@ -126,9 +128,11 @@ private:
QTimer timerUpdateMount;
int putAtBottom;//to keep how many automatic put at bottom have been used
private slots:
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
void updateTheDebugInfo(const std::vector<std::string> &newList, const std::vector<std::string> &newList2, const int &numberOfInodeOperation);
#endif
+ #endif
/************* External call ********************/
//dialog message
diff --git a/plugins/CopyEngine/Ultracopier/CopyEngine.pro b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine.pro
index 112e999..a529e1f 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CopyEngine.pro
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine.pro
@@ -14,7 +14,7 @@ HEADERS = \
$$PWD/StructEnumDefinition.h \
$$PWD/StructEnumDefinition_CopyEngine.h \
$$PWD/DebugEngineMacro.h \
- $$PWD/Variable.h \
+ $$PWD/CopyEngineUltracopierVariable.h \
$$PWD/TransferThread.h \
$$PWD/ReadThread.h \
$$PWD/WriteThread.h \
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine.pro.user.4.8-pre1 b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine.pro.user.4.8-pre1
new file mode 100755
index 0000000..4ed3507
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngine.pro.user.4.8-pre1
@@ -0,0 +1,288 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.6.2, 2019-07-02T23:09:58. -->
+<qtcreator>
+ <data>
+ <variable>EnvironmentId</variable>
+ <value type="QByteArray">{74ab603f-f657-4135-92cf-c93af71b2f91}</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.ActiveTarget</variable>
+ <value type="int">0</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.EditorSettings</variable>
+ <valuemap type="QVariantMap">
+ <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+ <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+ <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+ <value type="QString" key="language">Cpp</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+ </valuemap>
+ </valuemap>
+ <value type="int" key="EditorConfiguration.CodeStyle.Count">1</value>
+ <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+ <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+ <value type="int" key="EditorConfiguration.IndentSize">4</value>
+ <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+ <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+ <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+ <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+ <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+ <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+ <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+ <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+ <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+ <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+ <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+ <value type="int" key="EditorConfiguration.TabSize">8</value>
+ <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+ <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+ <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+ <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+ <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+ <value type="bool" key="EditorConfiguration.inEntireDocument">true</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.PluginSettings</variable>
+ <valuemap type="QVariantMap"/>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.0</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{23178a1c-09be-4e9f-9aab-ff55e05e7637}</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/plugins/CopyEngine/build-CopyEngine-Desktop-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-j4</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/plugins/CopyEngine/build-CopyEngine-Desktop-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/plugins/CopyEngine/build-CopyEngine-Desktop-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
+ <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
+ <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.TargetCount</variable>
+ <value type="int">1</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+ <value type="int">18</value>
+ </data>
+ <data>
+ <variable>Version</variable>
+ <value type="int">18</value>
+ </data>
+</qtcreator>
diff --git a/plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngineFactory.cpp
index ce86c94..cb89371 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngineFactory.cpp
@@ -330,6 +330,12 @@ QWidget * CopyEngineFactory::options()
return tempWidget;
}
+/// \brief to get if have pause
+bool CopyEngineFactory::havePause()
+{
+ return true;
+}
+
void CopyEngineFactory::setDoRightTransfer(bool doRightTransfer)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
diff --git a/plugins/CopyEngine/Ultracopier/CopyEngineFactory.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngineFactory.h
index 59c4208..e761f4e 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CopyEngineFactory.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngineFactory.h
@@ -66,6 +66,8 @@ public:
std::vector<std::string> supportedProtocolsForTheDestination() const;
/// \brief to get the options of the copy engine
QWidget * options();
+ /// \brief to get if have pause
+ bool havePause();
private:
Ui::copyEngineOptions *ui;
diff --git a/plugins/CopyEngine/Ultracopier/Variable.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngineUltracopierVariable.h
index 3311483..3311483 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Variable.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/CopyEngineUltracopierVariable.h
diff --git a/plugins/CopyEngine/Ultracopier/DebugDialog.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DebugDialog.cpp
index 0b3fec4..8bc559d 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DebugDialog.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DebugDialog.cpp
@@ -3,9 +3,10 @@
\author alpha_one_x86 */
#include "DebugDialog.h"
-#include "ui_debugDialog.h"
+#ifdef ULTRACOPIER_PLUGIN_DEBUG
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+#include "ui_debugDialog.h"
DebugDialog::DebugDialog(QWidget *parent) :
QWidget(parent),
@@ -52,3 +53,4 @@ void DebugDialog::setTransferThreadList(const std::vector<std::string> &list)
}
#endif
+#endif
diff --git a/plugins/CopyEngine/Ultracopier/DebugDialog.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DebugDialog.h
index c84cfaa..386fd7a 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DebugDialog.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DebugDialog.h
@@ -8,6 +8,7 @@
#include "Environment.h"
+#ifdef ULTRACOPIER_PLUGIN_DEBUG
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
#include <QWidget>
@@ -35,5 +36,6 @@ private:
};
#endif // ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+#endif // ULTRACOPIER_PLUGIN_DEBUG
#endif // DEBUGDAILOG_H
diff --git a/plugins/CopyEngine/Ultracopier/DebugEngineMacro.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DebugEngineMacro.h
index f9b5349..f9b5349 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DebugEngineMacro.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DebugEngineMacro.h
diff --git a/plugins/CopyEngine/Ultracopier/DiskSpace.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DiskSpace.cpp
index e9b996d..e9b996d 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DiskSpace.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DiskSpace.cpp
diff --git a/plugins/CopyEngine/Ultracopier/DiskSpace.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DiskSpace.h
index 5a923ab..5a923ab 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DiskSpace.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DiskSpace.h
diff --git a/plugins/CopyEngine/Ultracopier/DiskSpace.ui b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DiskSpace.ui
index 10b5c69..10b5c69 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DiskSpace.ui
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DiskSpace.ui
diff --git a/plugins/CopyEngine/Ultracopier/DriveManagement.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DriveManagement.cpp
index 27fc9cb..27fc9cb 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DriveManagement.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DriveManagement.cpp
diff --git a/plugins/CopyEngine/Ultracopier/DriveManagement.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DriveManagement.h
index 8013b7c..8013b7c 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DriveManagement.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/DriveManagement.h
diff --git a/plugins/CopyEngine/Ultracopier/Environment.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Environment.h
index 34db2a2..85d017b 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Environment.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Environment.h
@@ -3,7 +3,7 @@
\author alpha_one_x86
\licence GPL3, see the file COPYING */
-#include "Variable.h"
+#include "CopyEngineUltracopierVariable.h"
/// \brief The global include
#include "StructEnumDefinition.h"
#include "StructEnumDefinition_CopyEngine.h"
diff --git a/plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileErrorDialog.cpp
index d88fb90..d88fb90 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileErrorDialog.cpp
diff --git a/plugins/CopyEngine/Ultracopier/FileErrorDialog.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileErrorDialog.h
index 133a8b0..133a8b0 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FileErrorDialog.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileErrorDialog.h
diff --git a/plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileExistsDialog.cpp
index 10b8543..10b8543 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileExistsDialog.cpp
diff --git a/plugins/CopyEngine/Ultracopier/FileExistsDialog.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileExistsDialog.h
index 05ff7e0..05ff7e0 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FileExistsDialog.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileExistsDialog.h
diff --git a/plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileIsSameDialog.cpp
index 7683d1d..7683d1d 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileIsSameDialog.cpp
diff --git a/plugins/CopyEngine/Ultracopier/FileIsSameDialog.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileIsSameDialog.h
index 5dc0067..5dc0067 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FileIsSameDialog.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FileIsSameDialog.h
diff --git a/plugins/CopyEngine/Ultracopier/FilterRules.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FilterRules.cpp
index 0f6bf2c..0f6bf2c 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FilterRules.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FilterRules.cpp
diff --git a/plugins/CopyEngine/Ultracopier/FilterRules.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FilterRules.h
index 0838792..0838792 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FilterRules.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FilterRules.h
diff --git a/plugins/CopyEngine/Ultracopier/FilterRules.ui b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FilterRules.ui
index a4006fe..a4006fe 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FilterRules.ui
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FilterRules.ui
diff --git a/plugins/CopyEngine/Ultracopier/Filters.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Filters.cpp
index c7b1526..c7b1526 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Filters.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Filters.cpp
diff --git a/plugins/CopyEngine/Ultracopier/Filters.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Filters.h
index 6645afc..6645afc 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Filters.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Filters.h
diff --git a/plugins/CopyEngine/Ultracopier/Filters.ui b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Filters.ui
index 33822af..33822af 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Filters.ui
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Filters.ui
diff --git a/plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FolderExistsDialog.cpp
index 59466ed..59466ed 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FolderExistsDialog.cpp
diff --git a/plugins/CopyEngine/Ultracopier/FolderExistsDialog.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FolderExistsDialog.h
index a3bcf67..a3bcf67 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FolderExistsDialog.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/FolderExistsDialog.h
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ar/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ar/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ar/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/id/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ar/translation.ts
index e17b3f2..e0764bb 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/id/translation.ts
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ar/translation.ts
@@ -39,106 +39,106 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="740"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
<location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
<location filename="../../CopyEngine.cpp" line="1071"/>
<location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -146,85 +146,85 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -486,49 +486,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThread.cpp" line="1513"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThread.cpp" line="1520"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThread.cpp" line="1529"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThread.cpp" line="1538"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThread.cpp" line="1544"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThread.cpp" line="1607"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThread.cpp" line="1615"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -581,13 +581,13 @@
</message>
<message>
<location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -623,20 +623,20 @@
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../RenamingRules.cpp" line="39"/>
<location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../RenamingRules.cpp" line="43"/>
<location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/de/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/de/translation.qm
new file mode 100755
index 0000000..a9f1ba4
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/de/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/de/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/de/translation.ts
index fb6408e..b8450f4 100644
--- a/plugins/CopyEngine/Ultracopier/Languages/de/translation.ts
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/de/translation.ts
@@ -8,18 +8,18 @@
<location filename="../../AvancedQFile.cpp" line="57"/>
<location filename="../../AvancedQFile.cpp" line="88"/>
<source>Not supported on this platform</source>
- <translation>Auf dieser Plattform nicht unterstützt</translation>
+ <translation>Wird auf dieser Plattform nicht unterstützt</translation>
</message>
<message>
<location filename="../../AvancedQFile.cpp" line="40"/>
<source>Last modified date is wrong</source>
- <translation>Datum der letzten Änderung ist falsch</translation>
+ <translation>Letztes Änderungsdatum ist falsch</translation>
</message>
<message>
<location filename="../../AvancedQFile.cpp" line="71"/>
<source>Last access date is wrong</source>
<translatorcomment> </translatorcomment>
- <translation>Datum des letzten Zugriffs ist falsch</translation>
+ <translation>Letztes Zugriffsdatum ist falsch</translation>
</message>
<message>
<location filename="../../AvancedQFile.cpp" line="121"/>
@@ -40,106 +40,106 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation>Verschiebemodus - Sie können nicht kopieren</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation>Kopiermodus - Sie können nicht verschieben</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Destination</source>
<translation>Ziel</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation>Aktuelles Ziel: &quot;%1&quot; benutzen?</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="740"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
- <translation>Der Modus wurde vorher erzwungen. Interner Fehler - Bitte bei mir melden! </translation>
+ <translation>Der Modus wurde vorher erzwungen. Interner Fehler - Bitte bei mir melden</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
<location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
<source>Ask</source>
<translation>Fragen</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
<location filename="../../CopyEngine.cpp" line="1071"/>
<location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
<source>Skip</source>
<translation>Überspringen</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
<source>Merge</source>
- <translation>Fusionieren</translation>
+ <translation>Zusammenfassen</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
<source>Rename</source>
<translation>Umbenennen</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
<source>Put at the end</source>
<translation>Ans Ende verschieben</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
<source>Overwrite</source>
<translation>Überschreiben</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
<source>Overwrite if different</source>
<translation>Überschreiben, falls verschieden</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
<source>Overwrite if newer</source>
<translation>Überschreiben, falls neuer</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
<source>Overwrite if older</source>
<translation>Überschreiben, falls älter</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
<source>Automatic</source>
<translation>Automatisch</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
<source>Sequential</source>
<translation>Sequentiell</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
<source>Parallel</source>
<translation>Parallel</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options error</source>
<translation>Fehlerhafte Optionen</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>Optionen nicht geladen - Kein Zugriff auf Filter</translation>
</message>
@@ -147,85 +147,85 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Ask</source>
<translation>Fragen</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Skip</source>
<translation>Überspringen</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
<source>Merge</source>
- <translation>Fusionieren</translation>
+ <translation>Zusammenfassen</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
<source>Rename</source>
<translation>Umbenennen</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Put at the end</source>
<translation>Ans Ende verschieben</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite</source>
<translation>Überschreiben</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Overwrite if different</source>
<translation>Überschreiben, falls verschieden</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
<source>Overwrite if newer</source>
<translation>Überschreiben, falls neuer</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
<source>Overwrite if older</source>
<translation>Überschreiben, falls älter</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
<source>Automatic</source>
<translation>Automatisch</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
<source>Sequential</source>
<translation>Sequentiell</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
<source>Parallel</source>
<translation>Parallel</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options error</source>
<translation>Fehlerhafte Optionen</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>Option nicht geladen - Kein Zugriff auf Filter</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation>Option nicht geladen - Kann nicht auf Filter zugreifen</translation>
</message>
@@ -276,12 +276,12 @@
<message>
<location filename="../../FileExistsDialog.cpp" line="137"/>
<source>%name% - copy%suffix%</source>
- <translation type="unfinished"></translation>
+ <translation>%name% - Kopie%suffix%</translation>
</message>
<message>
<location filename="../../FileExistsDialog.cpp" line="144"/>
<source>%name% - copy (%number%)%suffix%</source>
- <translation type="unfinished"></translation>
+ <translation>%name% - Kopie (%number%)%suffix%</translation>
</message>
<message>
<location filename="../../FileExistsDialog.cpp" line="228"/>
@@ -299,12 +299,12 @@
<message>
<location filename="../../FileIsSameDialog.cpp" line="111"/>
<source>%name% - copy</source>
- <translation type="unfinished">%name% - Kopie</translation>
+ <translation>%name% - Kopie</translation>
</message>
<message>
<location filename="../../FileIsSameDialog.cpp" line="118"/>
<source>%name% - copy (%number%)</source>
- <translation type="unfinished">%name% - Kopie (%number%)</translation>
+ <translation>%name% - Kopie (%number%)</translation>
</message>
<message>
<location filename="../../FileIsSameDialog.cpp" line="184"/>
@@ -405,12 +405,12 @@
<message>
<location filename="../../Filters.ui" line="30"/>
<source>Exclusion filters</source>
- <translation>Ausschließungs-Filter</translation>
+ <translation>Ausschließen Filter</translation>
</message>
<message>
<location filename="../../Filters.ui" line="93"/>
<source>Inclusion filters</source>
- <translation>Einschließungs-Filter</translation>
+ <translation>Einschließen Filter</translation>
</message>
<message>
<location filename="../../Filters.ui" line="105"/>
@@ -466,12 +466,12 @@
<message>
<location filename="../../FolderExistsDialog.cpp" line="122"/>
<source>%name% - copy</source>
- <translation type="unfinished">%name% - Kopie</translation>
+ <translation>%name% - Kopie</translation>
</message>
<message>
<location filename="../../FolderExistsDialog.cpp" line="131"/>
<source>%name% - copy (%number%)</source>
- <translation type="unfinished">%name% - Kopie (%number%)</translation>
+ <translation>%name% - Kopie (%number%)</translation>
</message>
<message>
<location filename="../../FolderExistsDialog.cpp" line="190"/>
@@ -487,49 +487,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation>Falscher Modus: %1 - Kann Element nicht verschieben oder kopieren</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
<source>Unable to save the transfer list: %1</source>
<translation>Konnte die Transferliste: %1 nicht speichern</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThread.cpp" line="1513"/>
<source>Problem reading file, or file-size is 0</source>
<translation>Lesefehler, oder Dateigröße=0</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThread.cpp" line="1520"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation>Falscher Header: &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThread.cpp" line="1529"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation>Die Transferliste ist im gemischten Modus, aber diese Instanz ist nicht im selben Modus</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThread.cpp" line="1538"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation>Die Transferliste ist im Kopiermodus, aber diese Instanz ist nicht im selben Modus</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThread.cpp" line="1544"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation>Die Transferliste ist im Verschiebe-Modus, aber diese Instanz ist nicht im selben Modus</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThread.cpp" line="1607"/>
<source>Some errors have been found during the line parsing</source>
<translation>Bei der Zeilenanalyse sind Fehler aufgetreten</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThread.cpp" line="1615"/>
<source>Unable to open the transfer list: %1</source>
<translation>Transferliste: %1 kann nicht geöffnet werden</translation>
</message>
@@ -582,13 +582,13 @@
</message>
<message>
<location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
<source>Unable to read the source file: </source>
<translation>Die Quelldatei kann nicht gelesen werden: </translation>
</message>
<message>
<location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
<source>File truncated during the read, possible data change</source>
<translation>Datei während des Lesevorgangs abgeschnitten, Daten wurden möglicherweise verändert</translation>
</message>
@@ -604,19 +604,19 @@
<location filename="../../RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
+ <translation>%name% - Kopie%suffix%</translation>
</message>
<message>
<location filename="../../RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
+ <translation>%name% - Kopie% (%number%)%suffix%</translation>
</message>
<message>
<location filename="../../RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variablen: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; für den originalen Dateinamen, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; für die extra Nummer, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; für den Datei suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../RenamingRules.ui" line="51"/>
@@ -624,21 +624,21 @@
<translation>Zweite Umbenennung</translation>
</message>
<message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>Umbennungsregeln</translation>
+ </message>
+ <message>
<location filename="../../RenamingRules.cpp" line="39"/>
<location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation>%1 - Kopie</translation>
+ <source>%1 - copy%2</source>
+ <translation>%1 - Kopie%2</translation>
</message>
<message>
<location filename="../../RenamingRules.cpp" line="43"/>
<location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - Kopie (%2)</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation>Umbennungsregeln</translation>
+ <source>%1 - copy (%2)%3</source>
+ <translation>%1 - Kopie (%2) {1 ?} {2)%3?}</translation>
</message>
</context>
<context>
@@ -661,12 +661,12 @@
<message>
<location filename="../../ScanFileOrFolder.cpp" line="401"/>
<source>%name% - copy</source>
- <translation type="unfinished">%name% - Kopie</translation>
+ <translation>%name% - Kopie</translation>
</message>
<message>
<location filename="../../ScanFileOrFolder.cpp" line="408"/>
<source>%name% - copy (%number%)</source>
- <translation type="unfinished">%name% - Kopie (%number%)</translation>
+ <translation>%name% - Kopie (%number%)</translation>
</message>
<message>
<location filename="../../ScanFileOrFolder.cpp" line="444"/>
@@ -703,62 +703,62 @@
<location filename="../../TransferThread.cpp" line="346"/>
<location filename="../../TransferThread.cpp" line="363"/>
<source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
+ <translation>Falsches Änderungsdatum oder Fehler beim Auslesen, Sie können die Zeitstempel Übermittlung deaktivieren</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="421"/>
<location filename="../../TransferThread.cpp" line="444"/>
<source>Internal error: Already opening</source>
- <translation type="unfinished">Interner Fehler: Bereits geöffnet</translation>
+ <translation>Interner Fehler: Bereits geöffnet</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="586"/>
<source>Drive %1</source>
- <translation type="unfinished">Laufwerk %1</translation>
+ <translation>Laufwerk %1</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="588"/>
<source>Unknown folder</source>
- <translation type="unfinished">Unbekannter Ordner</translation>
+ <translation>Unbekannter Ordner</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="592"/>
<source>root</source>
- <translation type="unfinished">Stammverzeichnis</translation>
+ <translation>Stammverzeichnis</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="787"/>
<source>The source doesn&apos;t exist</source>
- <translation type="unfinished">Quelle existiert nicht</translation>
+ <translation>Quelle existiert nicht</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="1315"/>
<location filename="../../TransferThread.cpp" line="1333"/>
<location filename="../../TransferThread.cpp" line="1348"/>
<source>Unable to change the date</source>
- <translation type="unfinished"></translation>
+ <translation>Kann Datum nicht ändern</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="711"/>
<location filename="../../TransferThread.cpp" line="826"/>
<source>The source file doesn&apos;t exist</source>
- <translation type="unfinished">Quelldatei existiert nicht</translation>
+ <translation>Quelldatei existiert nicht</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="1134"/>
<source>The checksums do not match</source>
- <translation type="unfinished">Prüfsummen sind verschieden</translation>
+ <translation>Prüfsummen sind verschieden</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="1239"/>
<source>Internal error: The size transfered doesn&apos;t match</source>
- <translation type="unfinished">Interner Fehler: Ubertragene Größe ungleich</translation>
+ <translation>Interner Fehler: Ubertragene Größe ungleich</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="751"/>
<location filename="../../TransferThread.cpp" line="838"/>
<source>Unable to do the folder</source>
- <translation type="unfinished">Ordner kann nicht erstellt werden</translation>
+ <translation>Ordner kann nicht erstellt werden</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="228"/>
@@ -768,27 +768,27 @@
<message>
<location filename="../../TransferThread.cpp" line="645"/>
<source>%name% - copy</source>
- <translation type="unfinished">%name% - Kopie</translation>
+ <translation>%name% - Kopie</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="652"/>
<source>%name% - copy (%number%)</source>
- <translation type="unfinished">%name% - Kopie (%number%)</translation>
+ <translation>%name% - Kopie (%number%)</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="832"/>
<source>Another file exists at same place</source>
- <translation type="unfinished">Andere Datei befindet sich am selben Ort</translation>
+ <translation>Eine andere Datei befindet sich bereits am selben Ort</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="1224"/>
<source>Internal error: The destination is not closed</source>
- <translation type="unfinished">Interner Fehler: Ziel ist nicht geschlossen</translation>
+ <translation>Interner Fehler: Ziel ist nicht geschlossen</translation>
</message>
<message>
<location filename="../../TransferThread.cpp" line="1250"/>
<source>Internal error: The buffer is not empty</source>
- <translation type="unfinished">Interner Fehler: Puffer ist nicht leer</translation>
+ <translation>Interner Fehler: Puffer ist nicht leer</translation>
</message>
</context>
<context>
@@ -824,17 +824,17 @@
<message>
<location filename="../../copyEngineOptions.ui" line="53"/>
<source>Move the whole folder</source>
- <translation>Verschiebe den ganzen Ordner</translation>
+ <translation>Verschiebe ganzen Ordner</translation>
</message>
<message>
<location filename="../../copyEngineOptions.ui" line="60"/>
<source>Transfer the file rights</source>
- <translation>Übertrage die Dateirechte</translation>
+ <translation>Übertrage Dateirechte</translation>
</message>
<message>
<location filename="../../copyEngineOptions.ui" line="70"/>
<source>Keep the file date</source>
- <translation>Datum der Dateien beibehalten</translation>
+ <translation>Originales Datum der Dateien beibehalten</translation>
</message>
<message>
<location filename="../../copyEngineOptions.ui" line="83"/>
@@ -845,7 +845,7 @@
<location filename="../../copyEngineOptions.ui" line="90"/>
<location filename="../../copyEngineOptions.ui" line="110"/>
<source>Less performance if checked</source>
- <translation>Leistung drosseln</translation>
+ <translation>Vermindert die Leistung, wenn ausgewählt</translation>
</message>
<message>
<location filename="../../copyEngineOptions.ui" line="113"/>
@@ -855,27 +855,27 @@
<message>
<location filename="../../copyEngineOptions.ui" line="139"/>
<source>Error and collision</source>
- <translation>Fehler und Kollision</translation>
+ <translation>Fehler und Kollisionen</translation>
</message>
<message>
<location filename="../../copyEngineOptions.ui" line="145"/>
<source>When folder error</source>
- <translation>Bei Ordnerfehlern:</translation>
+ <translation>Bei Ordnerfehler</translation>
</message>
<message>
<location filename="../../copyEngineOptions.ui" line="155"/>
<source>When file error</source>
- <translation>Bei Dateifehlern:</translation>
+ <translation>Bei Dateifehler</translation>
</message>
<message>
<location filename="../../copyEngineOptions.ui" line="181"/>
<source>When file collision</source>
- <translation>Bei Dateikollisionen:</translation>
+ <translation>Bei Dateikollision</translation>
</message>
<message>
<location filename="../../copyEngineOptions.ui" line="241"/>
<source>When folder collision</source>
- <translation>Bei Ordnerkollisionen:</translation>
+ <translation>Bei Ordnerkollision</translation>
</message>
<message>
<location filename="../../copyEngineOptions.ui" line="272"/>
@@ -974,18 +974,18 @@
<message>
<location filename="../../copyEngineOptions.ui" line="582"/>
<source>Inode threads (unsafe &gt; 1)</source>
- <translation type="unfinished"></translation>
+ <translation>Inode Threads (unsicher &gt;1)</translation>
</message>
<message>
<location filename="../../copyEngineOptions.ui" line="589"/>
<location filename="../../copyEngineOptions.ui" line="599"/>
<source>More cpu, but better organisation on the disk</source>
- <translation type="unfinished"></translation>
+ <translation>Mehr CPU Leitstung, aber bessere Organisation am Laufwerk</translation>
</message>
<message>
<location filename="../../copyEngineOptions.ui" line="602"/>
<source>Order the list</source>
- <translation type="unfinished"></translation>
+ <translation>Liste ordnen</translation>
</message>
<message>
<location filename="../../copyEngineOptions.ui" line="618"/>
@@ -1000,7 +1000,7 @@
<message>
<location filename="../../copyEngineOptions.ui" line="634"/>
<source>Use this folder when destination is not set</source>
- <translation type="unfinished"></translation>
+ <translation>Folgenden Ordner benutzen, falls kein Ziel definiert wurde</translation>
</message>
<message>
<location filename="../../copyEngineOptions.ui" line="646"/>
@@ -1276,7 +1276,7 @@
<message>
<location filename="../../folderExistsDialog.ui" line="252"/>
<source>Merge</source>
- <translation>Fusionieren</translation>
+ <translation>Zusammenfassen</translation>
</message>
<message>
<location filename="../../folderExistsDialog.ui" line="259"/>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/el/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/el/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/el/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/el/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/el/translation.ts
index e17b3f2..e0764bb 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/el/translation.ts
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/el/translation.ts
@@ -39,106 +39,106 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="740"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
<location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
<location filename="../../CopyEngine.cpp" line="1071"/>
<location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -146,85 +146,85 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -486,49 +486,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThread.cpp" line="1513"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThread.cpp" line="1520"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThread.cpp" line="1529"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThread.cpp" line="1538"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThread.cpp" line="1544"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThread.cpp" line="1607"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThread.cpp" line="1615"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -581,13 +581,13 @@
</message>
<message>
<location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -623,20 +623,20 @@
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../RenamingRules.cpp" line="39"/>
<location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../RenamingRules.cpp" line="43"/>
<location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/en/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/en/translation.qm
new file mode 100755
index 0000000..d925dd6
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/en/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/en/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/en/translation.ts
index 223e40a..f2cd952 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/en/translation.ts
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/en/translation.ts
@@ -39,106 +39,106 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="740"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
<location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
<location filename="../../CopyEngine.cpp" line="1071"/>
<location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -146,85 +146,85 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -486,49 +486,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThread.cpp" line="1513"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThread.cpp" line="1520"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThread.cpp" line="1529"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThread.cpp" line="1538"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThread.cpp" line="1544"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThread.cpp" line="1607"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThread.cpp" line="1615"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -581,13 +581,13 @@
</message>
<message>
<location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -630,13 +630,13 @@
<message>
<location filename="../../RenamingRules.cpp" line="39"/>
<location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../RenamingRules.cpp" line="43"/>
<location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/es/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/es/translation.qm
new file mode 100755
index 0000000..9518d5a
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/es/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/es/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/es/translation.ts
index d69e5eb..1e2bcb1 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/es/translation.ts
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/es/translation.ts
@@ -39,106 +39,106 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation>El motor se ve obligado a moverse, no se puede copiar con ella</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation>El motor se ve obligado a copiar, no te puedes mover con él</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Destination</source>
<translation>Destino</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation>Utilice el destino &quot;%1&quot; actual?</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="740"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation>El modo se ha visto obligado previamente. Este es un error interno, por favor repórtelo</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
<location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
<source>Ask</source>
<translation>Pedir</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
<location filename="../../CopyEngine.cpp" line="1071"/>
<location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
<source>Skip</source>
<translation>Omitir</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
<source>Merge</source>
<translation>Unir</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
<source>Rename</source>
<translation>Cambiar el nombre</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
<source>Put at the end</source>
<translation>Ponga al final</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
<source>Overwrite</source>
<translation>Sobrescribir</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
<source>Overwrite if different</source>
<translation>Sobrescribir si es diferente</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
<source>Overwrite if newer</source>
<translation>Sobrescribir si nuevo</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
<source>Overwrite if older</source>
<translation>Sobrescribir si es mayor</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
<source>Automatic</source>
<translation>Automático</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
<source>Sequential</source>
<translation>Secuencial</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
<source>Parallel</source>
<translation>Paralelo</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options error</source>
<translation>error Opciones</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>Opciones del motor no está cargado. No es posible acceder a los filtros</translation>
</message>
@@ -146,85 +146,85 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Ask</source>
<translation>Pedir</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Skip</source>
<translation>Omitir</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
<source>Merge</source>
<translation>Unir</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
<source>Rename</source>
<translation>Cambiar el nombre</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Put at the end</source>
<translation>Ponga al final</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite</source>
<translation>Sobrescribir</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Overwrite if different</source>
<translation>Sobrescribir si es diferente</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
<source>Overwrite if newer</source>
<translation>Sobrescribir si nuevo</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
<source>Overwrite if older</source>
<translation>Sobrescribir si es mayor</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
<source>Automatic</source>
<translation>Automático</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
<source>Sequential</source>
<translation>Secuencial</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
<source>Parallel</source>
<translation>Paralelo</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options error</source>
<translation>error Opciones</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>Opciones del motor no está cargado. No es posible acceder a los filtros</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation>Opciones del motor no está cargado, no se puede acceder a los filtros</translation>
</message>
@@ -486,49 +486,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation>No se puede hacer para mover o copiar elemento en modo incorrecto obligado: %1</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
<source>Unable to save the transfer list: %1</source>
<translation>No se puede guardar la lista de transferencias: %1</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThread.cpp" line="1513"/>
<source>Problem reading file, or file-size is 0</source>
<translation>Problema al leer el archivo o archivos de tamaño es 0</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThread.cpp" line="1520"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation>Encabezado incorrecto: &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThread.cpp" line="1529"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation>La lista de transferencia está en modo mixto, pero este caso no es de este modo</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThread.cpp" line="1538"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation>La lista de transferencia está en el modo de copia, pero esta instancia no está en este modo</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThread.cpp" line="1544"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation>La lista de transferencia es el modo de desplazamiento, pero esta instancia no está en este modo</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThread.cpp" line="1607"/>
<source>Some errors have been found during the line parsing</source>
<translation>Algunos errores han sido encontrados durante el análisis de línea</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThread.cpp" line="1615"/>
<source>Unable to open the transfer list: %1</source>
<translation>No se puede abrir la lista de transferencias: %1</translation>
</message>
@@ -581,13 +581,13 @@
</message>
<message>
<location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
<source>Unable to read the source file: </source>
<translation>No se puede leer el archivo de origen: </translation>
</message>
<message>
<location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
<source>File truncated during the read, possible data change</source>
<translation>Archivo truncada durante el cambio de lectura, los datos posibles</translation>
</message>
@@ -623,21 +623,21 @@
<translation>En segundo lugar el cambio de nombre</translation>
</message>
<message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>Reglas de Cambio de nombre</translation>
+ </message>
+ <message>
<location filename="../../RenamingRules.cpp" line="39"/>
<location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</translation>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../../RenamingRules.cpp" line="43"/>
<location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copia (%2)</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation>Reglas de Cambio de nombre</translation>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished">%1 - copia (%2) {1 ?} {2)%3?}</translation>
</message>
</context>
<context>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/fr/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/fr/translation.qm
new file mode 100755
index 0000000..f8759ce
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/fr/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/fr/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/fr/translation.ts
index 1eeef1b..aa8d78a 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/fr/translation.ts
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/fr/translation.ts
@@ -39,106 +39,106 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation>Le moteur est forcé en déplacement, vous ne pouvez pas copier avec</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation>Le moteur est forcé en copie, vous ne pouvez pas déplacer avec</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Destination</source>
<translation>Destination</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation>Utiliser la destination actuelle &quot;%1&quot;?</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="740"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation>Le mode a été forcé. C&apos;est une erreur interne, merci de la repporter</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
<location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
<source>Ask</source>
<translation>Demander</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
<location filename="../../CopyEngine.cpp" line="1071"/>
<location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
<source>Skip</source>
<translation>Passer</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
<source>Merge</source>
<translation>Fusionner</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
<source>Rename</source>
<translation>Renommer</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
<source>Put at the end</source>
<translation>Mettre à la fin</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
<source>Overwrite</source>
<translation>Écraser</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
<source>Overwrite if different</source>
<translation>Écraser si différent</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
<source>Overwrite if newer</source>
<translation>Écraser si plus récent</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
<source>Overwrite if older</source>
<translation>Écraser si plus vieux</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
<source>Automatic</source>
<translation>Automatique</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
<source>Sequential</source>
<translation>Séquentiel</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
<source>Parallel</source>
<translation>Parallèle</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options error</source>
<translation>Erreur d&apos;options</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>Le moteur d&apos;options n&apos;est pas chargé. Impossible d&apos;accédé aux filtres</translation>
</message>
@@ -146,85 +146,85 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Ask</source>
<translation>Demander</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Skip</source>
<translation>Passer</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
<source>Merge</source>
<translation>Fusionner</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
<source>Rename</source>
<translation>Renommer</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Put at the end</source>
<translation>Mettre à la fin</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite</source>
<translation>Écraser</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Overwrite if different</source>
<translation>Écraser si différent</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
<source>Overwrite if newer</source>
<translation>Écraser si plus récent</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
<source>Overwrite if older</source>
<translation>Écraser si plus vieux</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
<source>Automatic</source>
<translation>Automatique</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
<source>Sequential</source>
<translation>Séquentiel</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
<source>Parallel</source>
<translation>Parallèle</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options error</source>
<translation>Erreur d&apos;options</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>Le moteur d&apos;options n&apos;est pas chargé. Impossible d&apos;accédé aux filtres</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation>Moteur d&apos;options non chargé, impossible d&apos;accéder aux filtres</translation>
</message>
@@ -486,49 +486,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation>Impossible de faire un déplacement ou une copie dans le mauvais mode forcé: %1</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
<source>Unable to save the transfer list: %1</source>
<translation>Impossible de sauvegarder la liste de transfert: %1</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThread.cpp" line="1513"/>
<source>Problem reading file, or file-size is 0</source>
<translation>Problem durant la lecture, ou taille de fichier est 0</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThread.cpp" line="1520"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation>Mauvais en-tête: &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThread.cpp" line="1529"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation>La liste de transfert est en mode mixte, mais l&apos;instance n&apos;est pas dans ce mode</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThread.cpp" line="1538"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation>La liste de transfert est en mode copie, mais l&apos;instance n&apos;est pas dans ce mode</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThread.cpp" line="1544"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation>La liste de transfert est en mode déplacement, mais l&apos;instance n&apos;est pas dans ce mode</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThread.cpp" line="1607"/>
<source>Some errors have been found during the line parsing</source>
<translation>Certaine erreur ont été trouvé durant l&apos;analise de la line</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThread.cpp" line="1615"/>
<source>Unable to open the transfer list: %1</source>
<translation>Impossible d&apos;ouvrir la list de transfert: %1</translation>
</message>
@@ -581,13 +581,13 @@
</message>
<message>
<location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
<source>Unable to read the source file: </source>
<translation>Impossible de lire le fichier source: </translation>
</message>
<message>
<location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
<source>File truncated during the read, possible data change</source>
<translatorcomment>La taille du fichier a diminué durant -&gt; changé le texte original</translatorcomment>
<translation>Fichier a diminué durant la lecture, possible changement de données</translation>
@@ -624,21 +624,21 @@
<translation>Second renommage</translation>
</message>
<message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>Règles de renommage</translation>
+ </message>
+ <message>
<location filename="../../RenamingRules.cpp" line="39"/>
<location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation>%1 - copie</translation>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../../RenamingRules.cpp" line="43"/>
<location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copie (%2)</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation>Règles de renommage</translation>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished">%1 - copie (%2) {1 ?} {2)%3?}</translation>
</message>
</context>
<context>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hi/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hi/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hi/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/ar/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hi/translation.ts
index e17b3f2..e0764bb 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/ar/translation.ts
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hi/translation.ts
@@ -39,106 +39,106 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="740"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
<location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
<location filename="../../CopyEngine.cpp" line="1071"/>
<location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -146,85 +146,85 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -486,49 +486,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThread.cpp" line="1513"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThread.cpp" line="1520"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThread.cpp" line="1529"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThread.cpp" line="1538"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThread.cpp" line="1544"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThread.cpp" line="1607"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThread.cpp" line="1615"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -581,13 +581,13 @@
</message>
<message>
<location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -623,20 +623,20 @@
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../RenamingRules.cpp" line="39"/>
<location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../RenamingRules.cpp" line="43"/>
<location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hu/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hu/translation.qm
new file mode 100755
index 0000000..f1482c2
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hu/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/hu/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hu/translation.ts
index ca0151e..2e72544 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/hu/translation.ts
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/hu/translation.ts
@@ -39,106 +39,106 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation>A motort mozgatásra kényszerítik, nem másolhatsz vele</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation>A motort másolásra kényszerítik, nem mozgathatsz vele</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Destination</source>
<translation>Cél</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation>Használja a jelenlegi célt: &quot;%1&quot;?</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="740"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation>Ezt a módot már korábban kényszerítették. Belső hiba történt, kérlek jelentsd be</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
<location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
<source>Ask</source>
<translation>Kérdezzen rá</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
<location filename="../../CopyEngine.cpp" line="1071"/>
<location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
<source>Skip</source>
<translation>Kihagy</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
<source>Merge</source>
<translation>Összeolvaszt</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
<source>Rename</source>
<translation>Nevezze át</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
<source>Put at the end</source>
<translation>Helyezze a végére</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
<source>Overwrite</source>
<translation>Felülír</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
<source>Overwrite if different</source>
<translation>Felülír, ha különbözik</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
<source>Overwrite if newer</source>
<translation>Felülír, ha újabb</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
<source>Overwrite if older</source>
<translation>Felülír, ha régebbi</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
<source>Automatic</source>
<translation>Automatikus</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
<source>Sequential</source>
<translation>Szekvenciális</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
<source>Parallel</source>
<translation>Párhuzamos</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options error</source>
<translation>Beállítási hiba</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>A beállítási motor nincs betöltve. A szűrők elérése nem lehetséges</translation>
</message>
@@ -146,85 +146,85 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Ask</source>
<translation>Kérdezzen rá</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Skip</source>
<translation>Kihagy</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
<source>Merge</source>
<translation>Összeolvaszt</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
<source>Rename</source>
<translation>Nevezze át</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Put at the end</source>
<translation>Helyezze a végére</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite</source>
<translation>Felülír</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Overwrite if different</source>
<translation>Felülír, ha különbözik</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
<source>Overwrite if newer</source>
<translation>Felülír, ha újabb</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
<source>Overwrite if older</source>
<translation>Felülír, ha régebbi</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
<source>Automatic</source>
<translation>Automatikus</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
<source>Sequential</source>
<translation>Szekvenciális</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
<source>Parallel</source>
<translation>Párhuzamos</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options error</source>
<translation>Beállítási hiba</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>A beállítási motor nincs betöltve. A szűrők elérése nem lehetséges</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation>A beállítási motor nincs betöltve, a szűrők elérése nem lehetséges</translation>
</message>
@@ -486,49 +486,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation>Elem másolása vagy mozgatás nem lehetséges a hibás kényszerített módban: %1</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
<source>Unable to save the transfer list: %1</source>
<translation>Átviteli lista mentése nem lehetséges: %1</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThread.cpp" line="1513"/>
<source>Problem reading file, or file-size is 0</source>
<translation>Hiba a fájl olvasásánál vagy a fálméret 0</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThread.cpp" line="1520"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation>Hibás fejléc: &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThread.cpp" line="1529"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation>Az átviteli lista kevert módban van, de ez a példány nincs</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThread.cpp" line="1538"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation>Az átviteli lista másolás módban van, de ez a példány nincs</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThread.cpp" line="1544"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation>Az átviteli lista mozgatás módban van, de ez a példány nincs</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThread.cpp" line="1607"/>
<source>Some errors have been found during the line parsing</source>
<translation>Néhány hiba történt a sorelemzés során</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThread.cpp" line="1615"/>
<source>Unable to open the transfer list: %1</source>
<translation>Az átviteli lista megnyitása nem lehetséges: %1</translation>
</message>
@@ -581,13 +581,13 @@
</message>
<message>
<location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
<source>Unable to read the source file: </source>
<translation>A forrásfájl olvasása nem lehetséges:</translation>
</message>
<message>
<location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
<source>File truncated during the read, possible data change</source>
<translation>A fájl olvasás során megcsonkult, valószínűleg adatváltozás miatt</translation>
</message>
@@ -630,14 +630,14 @@
<message>
<location filename="../../RenamingRules.cpp" line="39"/>
<location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation>%1 - másolás</translation>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../../RenamingRules.cpp" line="43"/>
<location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - másolás (%2)</translation>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished">%1 - másolás (%2) {1 ?} {2)%3?}</translation>
</message>
</context>
<context>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/id/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/id/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/id/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/hi/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/id/translation.ts
index e17b3f2..e0764bb 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/hi/translation.ts
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/id/translation.ts
@@ -39,106 +39,106 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="740"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
<location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
<location filename="../../CopyEngine.cpp" line="1071"/>
<location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -146,85 +146,85 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -486,49 +486,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThread.cpp" line="1513"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThread.cpp" line="1520"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThread.cpp" line="1529"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThread.cpp" line="1538"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThread.cpp" line="1544"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThread.cpp" line="1607"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThread.cpp" line="1615"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -581,13 +581,13 @@
</message>
<message>
<location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -623,20 +623,20 @@
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../RenamingRules.cpp" line="39"/>
<location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../RenamingRules.cpp" line="43"/>
<location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/it/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/it/translation.qm
new file mode 100755
index 0000000..feb4227
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/it/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/it/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/it/translation.ts
index cba024c..02b48fc 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/it/translation.ts
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/it/translation.ts
@@ -39,106 +39,106 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation>Impossibile copiare, il motore per la copia forzerà lo spostamento</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation>Impossibile effettuare lo spostamento, il motore per la copia forzerà la copia</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Destination</source>
<translation type="unfinished">Cartella di destinazione</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="740"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
<location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
<source>Ask</source>
<translation>Chiedi</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
<location filename="../../CopyEngine.cpp" line="1071"/>
<location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
<source>Skip</source>
<translation>Salta</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
<source>Merge</source>
<translation>Unisci</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
<source>Rename</source>
<translation>Rinomina</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
<source>Put at the end</source>
<translation>Metti in coda</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
<source>Overwrite</source>
<translation>Sovrascrivi</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
<source>Overwrite if different</source>
<translation>Sovrascrivi se differente</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
<source>Overwrite if newer</source>
<translation>Sovrascrivi se più recente</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
<source>Overwrite if older</source>
<translation>Sovrascrivi se meno recente</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
<source>Automatic</source>
<translation>Automatico</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
<source>Sequential</source>
<translation>Sequenziale</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
<source>Parallel</source>
<translation>Parallelo</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options error</source>
<translation>Opzioni di errore</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -146,85 +146,85 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Ask</source>
<translation>Chiedi</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Skip</source>
<translation>Salta</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
<source>Merge</source>
<translation>Unisci</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
<source>Rename</source>
<translation>Rinomina</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Put at the end</source>
<translation>Metti in coda</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite</source>
<translation>Sovrascrivi</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Overwrite if different</source>
<translation>Sovrascrivi se differente</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
<source>Overwrite if newer</source>
<translation>Sovrascrivi se più recente</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
<source>Overwrite if older</source>
<translation>Sovrascrivi se meno recente</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
<source>Automatic</source>
<translation>Automatico</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
<source>Sequential</source>
<translation>Sequenziale</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
<source>Parallel</source>
<translation>Parallelo</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options error</source>
<translation>Opzioni di errore</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation>Le opzioni del motore per la copia non vengono caricate, impossibile accedere ai filtri</translation>
</message>
@@ -489,50 +489,50 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation>Impossibile spostare o copiare elementi in modalità forzata anomala: %1</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
<source>Unable to save the transfer list: %1</source>
<translation>Impossibile salvare la lista dei trasferimenti: %1</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThread.cpp" line="1513"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThread.cpp" line="1520"/>
<source>Wrong header: &quot;%1&quot;</source>
<translatorcomment>Header si riferisce all&apos;intestazione?</translatorcomment>
<translation>Intestazione sbagliata: &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThread.cpp" line="1529"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation>La lista dei trasferimenti è in modalità mista, ma questa istanza non è in questa modalità</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThread.cpp" line="1538"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation>La lista dei trasferimenti è in modalità di copia, ma questa istanza non è in questa modalità</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThread.cpp" line="1544"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation>La lista dei trasferimenti è in modalità di spostamento, ma questa istanza non è in questa modalità</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThread.cpp" line="1607"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThread.cpp" line="1615"/>
<source>Unable to open the transfer list: %1</source>
<translation>Impossibile aprire la lista dei trasferimenti: %1</translation>
</message>
@@ -585,13 +585,13 @@
</message>
<message>
<location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
<source>Unable to read the source file: </source>
<translation>Impossibile leggere il file di origine: </translation>
</message>
<message>
<location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
<source>File truncated during the read, possible data change</source>
<translation>File troncato durante la lettura, possibili variazioni di dati</translation>
</message>
@@ -629,21 +629,21 @@
<translation>Seconda rinomina</translation>
</message>
<message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>Regole di rinomina</translation>
+ </message>
+ <message>
<location filename="../../RenamingRules.cpp" line="39"/>
<location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</translation>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../../RenamingRules.cpp" line="43"/>
<location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copia (%2)</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation>Regole di rinomina</translation>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished">%1 - copia (%2) {1 ?} {2)%3?}</translation>
</message>
</context>
<context>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ja/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ja/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ja/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ja/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ja/translation.ts
new file mode 100755
index 0000000..7e39d05
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ja/translation.ts
@@ -0,0 +1,1291 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>AvancedQFile</name>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="26"/>
+ <location filename="../../AvancedQFile.cpp" line="57"/>
+ <location filename="../../AvancedQFile.cpp" line="88"/>
+ <source>Not supported on this platform</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="40"/>
+ <source>Last modified date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="71"/>
+ <source>Last access date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="121"/>
+ <source>Unknown error: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="187"/>
+ <source>Unknown error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="133"/>
+ <source>Path conversion error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="740"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1070"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1071"/>
+ <location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="54"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="57"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="137"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="144"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="111"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="118"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="30"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="93"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="105"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="93"/>
+ <location filename="../../Filters.cpp" line="131"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="96"/>
+ <location filename="../../Filters.cpp" line="134"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="99"/>
+ <location filename="../../Filters.cpp" line="137"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="107"/>
+ <location filename="../../Filters.cpp" line="145"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="110"/>
+ <location filename="../../Filters.cpp" line="148"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="116"/>
+ <location filename="../../Filters.cpp" line="154"/>
+ <location filename="../../Filters.cpp" line="216"/>
+ <location filename="../../Filters.cpp" line="255"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="57"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="122"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="131"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1513"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1520"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1529"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1538"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1544"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1607"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1615"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="142"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="155"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="183"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="206"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="233"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="93"/>
+ <location filename="../../MkPath.cpp" line="276"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../ReadThread.cpp" line="59"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="188"/>
+ <source>Internal error reading the source file:block size out of range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="196"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="237"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="39"/>
+ <location filename="../../RenamingRules.cpp" line="62"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="43"/>
+ <location filename="../../RenamingRules.cpp" line="73"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="274"/>
+ <source>Blacklisted folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="338"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="345"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="401"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="408"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>This is not a folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="446"/>
+ <source>The folder does exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="448"/>
+ <source>The folder is not readable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="459"/>
+ <source>Problem with name encoding</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="244"/>
+ <location filename="../../TransferThread.cpp" line="673"/>
+ <location filename="../../TransferThread.cpp" line="745"/>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="346"/>
+ <location filename="../../TransferThread.cpp" line="363"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="421"/>
+ <location filename="../../TransferThread.cpp" line="444"/>
+ <source>Internal error: Already opening</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="586"/>
+ <source>Drive %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="588"/>
+ <source>Unknown folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="592"/>
+ <source>root</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="645"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="652"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="711"/>
+ <location filename="../../TransferThread.cpp" line="826"/>
+ <source>The source file doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="751"/>
+ <location filename="../../TransferThread.cpp" line="838"/>
+ <source>Unable to do the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="787"/>
+ <source>The source doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="832"/>
+ <source>Another file exists at same place</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1134"/>
+ <source>The checksums do not match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1224"/>
+ <source>Internal error: The destination is not closed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1239"/>
+ <source>Internal error: The size transfered doesn&apos;t match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1250"/>
+ <source>Internal error: The buffer is not empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <location filename="../../TransferThread.cpp" line="1333"/>
+ <location filename="../../TransferThread.cpp" line="1348"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../WriteThread.cpp" line="83"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="277"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="680"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="705"/>
+ <source>File truncated during read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="53"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="60"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="70"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Autostart the transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="90"/>
+ <location filename="../../copyEngineOptions.ui" line="110"/>
+ <source>Less performance if checked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="113"/>
+ <source>Follow the strict order</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="139"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="145"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="155"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="181"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="241"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="272"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="279"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="299"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="312"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="343"/>
+ <source>Control</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="349"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="358"/>
+ <source>Only after error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="365"/>
+ <source>Ignore if impossible</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="382"/>
+ <source>Verify checksums</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="414"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="420"/>
+ <source>Parallel buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="427"/>
+ <location filename="../../copyEngineOptions.ui" line="440"/>
+ <location filename="../../copyEngineOptions.ui" line="453"/>
+ <location filename="../../copyEngineOptions.ui" line="490"/>
+ <location filename="../../copyEngineOptions.ui" line="559"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="469"/>
+ <source>Block size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="476"/>
+ <source>Sequential buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="483"/>
+ <source>Enable OS buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="506"/>
+ <source>OS buffer only if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="513"/>
+ <source>Transfer algorithm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="552"/>
+ <source>Parallelize if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="582"/>
+ <source>Inode threads (unsafe &gt; 1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="589"/>
+ <location filename="../../copyEngineOptions.ui" line="599"/>
+ <source>More cpu, but better organisation on the disk</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="602"/>
+ <source>Order the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="618"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="624"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="634"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="646"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="668"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ko/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ko/translation.qm
new file mode 100755
index 0000000..039bd74
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ko/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/ko/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ko/translation.ts
index 7698857..b2315db 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/ko/translation.ts
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ko/translation.ts
@@ -39,106 +39,106 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Destination</source>
<translation type="unfinished">대상</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="740"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
<location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
<source>Ask</source>
<translation type="unfinished">확인</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
<location filename="../../CopyEngine.cpp" line="1071"/>
<location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
<source>Skip</source>
<translation type="unfinished">건너뛰기</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
<source>Merge</source>
<translation type="unfinished">합치기</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
<source>Rename</source>
<translation type="unfinished">이름 바꾸기</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
<source>Overwrite if newer</source>
<translation type="unfinished">더 최신이면 덮어씌우기</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -146,85 +146,85 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Ask</source>
<translation type="unfinished">확인</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Skip</source>
<translation type="unfinished">건너뛰기</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
<source>Merge</source>
<translation type="unfinished">합치기</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
<source>Rename</source>
<translation type="unfinished">이름 바꾸기</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
<source>Overwrite if newer</source>
<translation type="unfinished">더 최신이면 덮어씌우기</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -486,49 +486,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThread.cpp" line="1513"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThread.cpp" line="1520"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThread.cpp" line="1529"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThread.cpp" line="1538"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThread.cpp" line="1544"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThread.cpp" line="1607"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThread.cpp" line="1615"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -581,13 +581,13 @@
</message>
<message>
<location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
<source>Unable to read the source file: </source>
<translation>원본 파일 읽기 불가:</translation>
</message>
<message>
<location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -630,13 +630,13 @@
<message>
<location filename="../../RenamingRules.cpp" line="39"/>
<location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../RenamingRules.cpp" line="43"/>
<location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/nl/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/nl/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/nl/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/nl/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/nl/translation.ts
new file mode 100755
index 0000000..e0764bb
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/nl/translation.ts
@@ -0,0 +1,1291 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>AvancedQFile</name>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="26"/>
+ <location filename="../../AvancedQFile.cpp" line="57"/>
+ <location filename="../../AvancedQFile.cpp" line="88"/>
+ <source>Not supported on this platform</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="40"/>
+ <source>Last modified date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="71"/>
+ <source>Last access date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="121"/>
+ <source>Unknown error: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="187"/>
+ <source>Unknown error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="133"/>
+ <source>Path conversion error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="740"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1070"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1071"/>
+ <location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="54"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="57"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="137"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="144"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="111"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="118"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="30"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="93"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="105"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="93"/>
+ <location filename="../../Filters.cpp" line="131"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="96"/>
+ <location filename="../../Filters.cpp" line="134"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="99"/>
+ <location filename="../../Filters.cpp" line="137"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="107"/>
+ <location filename="../../Filters.cpp" line="145"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="110"/>
+ <location filename="../../Filters.cpp" line="148"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="116"/>
+ <location filename="../../Filters.cpp" line="154"/>
+ <location filename="../../Filters.cpp" line="216"/>
+ <location filename="../../Filters.cpp" line="255"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="57"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="122"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="131"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1513"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1520"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1529"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1538"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1544"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1607"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1615"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="142"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="155"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="183"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="206"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="233"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="93"/>
+ <location filename="../../MkPath.cpp" line="276"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../ReadThread.cpp" line="59"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="188"/>
+ <source>Internal error reading the source file:block size out of range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="196"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="237"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="39"/>
+ <location filename="../../RenamingRules.cpp" line="62"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="43"/>
+ <location filename="../../RenamingRules.cpp" line="73"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="274"/>
+ <source>Blacklisted folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="338"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="345"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="401"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="408"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>This is not a folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="446"/>
+ <source>The folder does exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="448"/>
+ <source>The folder is not readable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="459"/>
+ <source>Problem with name encoding</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="244"/>
+ <location filename="../../TransferThread.cpp" line="673"/>
+ <location filename="../../TransferThread.cpp" line="745"/>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="346"/>
+ <location filename="../../TransferThread.cpp" line="363"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="421"/>
+ <location filename="../../TransferThread.cpp" line="444"/>
+ <source>Internal error: Already opening</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="586"/>
+ <source>Drive %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="588"/>
+ <source>Unknown folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="592"/>
+ <source>root</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="645"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="652"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="711"/>
+ <location filename="../../TransferThread.cpp" line="826"/>
+ <source>The source file doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="751"/>
+ <location filename="../../TransferThread.cpp" line="838"/>
+ <source>Unable to do the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="787"/>
+ <source>The source doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="832"/>
+ <source>Another file exists at same place</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1134"/>
+ <source>The checksums do not match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1224"/>
+ <source>Internal error: The destination is not closed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1239"/>
+ <source>Internal error: The size transfered doesn&apos;t match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1250"/>
+ <source>Internal error: The buffer is not empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <location filename="../../TransferThread.cpp" line="1333"/>
+ <location filename="../../TransferThread.cpp" line="1348"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../WriteThread.cpp" line="83"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="277"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="680"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="705"/>
+ <source>File truncated during read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="53"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="60"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="70"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Autostart the transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="90"/>
+ <location filename="../../copyEngineOptions.ui" line="110"/>
+ <source>Less performance if checked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="113"/>
+ <source>Follow the strict order</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="139"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="145"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="155"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="181"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="241"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="272"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="279"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="299"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="312"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="343"/>
+ <source>Control</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="349"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="358"/>
+ <source>Only after error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="365"/>
+ <source>Ignore if impossible</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="382"/>
+ <source>Verify checksums</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="414"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="420"/>
+ <source>Parallel buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="427"/>
+ <location filename="../../copyEngineOptions.ui" line="440"/>
+ <location filename="../../copyEngineOptions.ui" line="453"/>
+ <location filename="../../copyEngineOptions.ui" line="490"/>
+ <location filename="../../copyEngineOptions.ui" line="559"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="469"/>
+ <source>Block size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="476"/>
+ <source>Sequential buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="483"/>
+ <source>Enable OS buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="506"/>
+ <source>OS buffer only if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="513"/>
+ <source>Transfer algorithm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="552"/>
+ <source>Parallelize if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="582"/>
+ <source>Inode threads (unsafe &gt; 1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="589"/>
+ <location filename="../../copyEngineOptions.ui" line="599"/>
+ <source>More cpu, but better organisation on the disk</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="602"/>
+ <source>Order the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="618"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="624"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="634"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="646"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="668"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/no/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/no/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/no/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/no/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/no/translation.ts
new file mode 100755
index 0000000..e0764bb
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/no/translation.ts
@@ -0,0 +1,1291 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>AvancedQFile</name>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="26"/>
+ <location filename="../../AvancedQFile.cpp" line="57"/>
+ <location filename="../../AvancedQFile.cpp" line="88"/>
+ <source>Not supported on this platform</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="40"/>
+ <source>Last modified date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="71"/>
+ <source>Last access date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="121"/>
+ <source>Unknown error: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="187"/>
+ <source>Unknown error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="133"/>
+ <source>Path conversion error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="740"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1070"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1071"/>
+ <location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="54"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="57"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="137"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="144"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="111"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="118"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="30"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="93"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="105"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="93"/>
+ <location filename="../../Filters.cpp" line="131"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="96"/>
+ <location filename="../../Filters.cpp" line="134"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="99"/>
+ <location filename="../../Filters.cpp" line="137"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="107"/>
+ <location filename="../../Filters.cpp" line="145"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="110"/>
+ <location filename="../../Filters.cpp" line="148"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="116"/>
+ <location filename="../../Filters.cpp" line="154"/>
+ <location filename="../../Filters.cpp" line="216"/>
+ <location filename="../../Filters.cpp" line="255"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="57"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="122"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="131"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1513"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1520"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1529"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1538"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1544"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1607"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1615"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="142"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="155"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="183"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="206"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="233"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="93"/>
+ <location filename="../../MkPath.cpp" line="276"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../ReadThread.cpp" line="59"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="188"/>
+ <source>Internal error reading the source file:block size out of range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="196"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="237"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="39"/>
+ <location filename="../../RenamingRules.cpp" line="62"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="43"/>
+ <location filename="../../RenamingRules.cpp" line="73"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="274"/>
+ <source>Blacklisted folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="338"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="345"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="401"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="408"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>This is not a folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="446"/>
+ <source>The folder does exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="448"/>
+ <source>The folder is not readable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="459"/>
+ <source>Problem with name encoding</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="244"/>
+ <location filename="../../TransferThread.cpp" line="673"/>
+ <location filename="../../TransferThread.cpp" line="745"/>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="346"/>
+ <location filename="../../TransferThread.cpp" line="363"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="421"/>
+ <location filename="../../TransferThread.cpp" line="444"/>
+ <source>Internal error: Already opening</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="586"/>
+ <source>Drive %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="588"/>
+ <source>Unknown folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="592"/>
+ <source>root</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="645"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="652"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="711"/>
+ <location filename="../../TransferThread.cpp" line="826"/>
+ <source>The source file doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="751"/>
+ <location filename="../../TransferThread.cpp" line="838"/>
+ <source>Unable to do the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="787"/>
+ <source>The source doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="832"/>
+ <source>Another file exists at same place</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1134"/>
+ <source>The checksums do not match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1224"/>
+ <source>Internal error: The destination is not closed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1239"/>
+ <source>Internal error: The size transfered doesn&apos;t match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1250"/>
+ <source>Internal error: The buffer is not empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <location filename="../../TransferThread.cpp" line="1333"/>
+ <location filename="../../TransferThread.cpp" line="1348"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../WriteThread.cpp" line="83"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="277"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="680"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="705"/>
+ <source>File truncated during read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="53"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="60"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="70"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Autostart the transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="90"/>
+ <location filename="../../copyEngineOptions.ui" line="110"/>
+ <source>Less performance if checked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="113"/>
+ <source>Follow the strict order</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="139"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="145"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="155"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="181"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="241"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="272"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="279"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="299"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="312"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="343"/>
+ <source>Control</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="349"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="358"/>
+ <source>Only after error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="365"/>
+ <source>Ignore if impossible</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="382"/>
+ <source>Verify checksums</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="414"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="420"/>
+ <source>Parallel buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="427"/>
+ <location filename="../../copyEngineOptions.ui" line="440"/>
+ <location filename="../../copyEngineOptions.ui" line="453"/>
+ <location filename="../../copyEngineOptions.ui" line="490"/>
+ <location filename="../../copyEngineOptions.ui" line="559"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="469"/>
+ <source>Block size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="476"/>
+ <source>Sequential buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="483"/>
+ <source>Enable OS buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="506"/>
+ <source>OS buffer only if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="513"/>
+ <source>Transfer algorithm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="552"/>
+ <source>Parallelize if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="582"/>
+ <source>Inode threads (unsafe &gt; 1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="589"/>
+ <location filename="../../copyEngineOptions.ui" line="599"/>
+ <source>More cpu, but better organisation on the disk</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="602"/>
+ <source>Order the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="618"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="624"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="634"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="646"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="668"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pl/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pl/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pl/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pl/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pl/translation.ts
new file mode 100755
index 0000000..e0764bb
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pl/translation.ts
@@ -0,0 +1,1291 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>AvancedQFile</name>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="26"/>
+ <location filename="../../AvancedQFile.cpp" line="57"/>
+ <location filename="../../AvancedQFile.cpp" line="88"/>
+ <source>Not supported on this platform</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="40"/>
+ <source>Last modified date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="71"/>
+ <source>Last access date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="121"/>
+ <source>Unknown error: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="187"/>
+ <source>Unknown error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="133"/>
+ <source>Path conversion error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="740"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1070"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1071"/>
+ <location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="54"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="57"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="137"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="144"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="111"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="118"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="30"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="93"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="105"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="93"/>
+ <location filename="../../Filters.cpp" line="131"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="96"/>
+ <location filename="../../Filters.cpp" line="134"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="99"/>
+ <location filename="../../Filters.cpp" line="137"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="107"/>
+ <location filename="../../Filters.cpp" line="145"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="110"/>
+ <location filename="../../Filters.cpp" line="148"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="116"/>
+ <location filename="../../Filters.cpp" line="154"/>
+ <location filename="../../Filters.cpp" line="216"/>
+ <location filename="../../Filters.cpp" line="255"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="57"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="122"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="131"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1513"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1520"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1529"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1538"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1544"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1607"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1615"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="142"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="155"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="183"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="206"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="233"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="93"/>
+ <location filename="../../MkPath.cpp" line="276"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../ReadThread.cpp" line="59"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="188"/>
+ <source>Internal error reading the source file:block size out of range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="196"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="237"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="39"/>
+ <location filename="../../RenamingRules.cpp" line="62"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="43"/>
+ <location filename="../../RenamingRules.cpp" line="73"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="274"/>
+ <source>Blacklisted folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="338"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="345"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="401"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="408"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>This is not a folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="446"/>
+ <source>The folder does exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="448"/>
+ <source>The folder is not readable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="459"/>
+ <source>Problem with name encoding</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="244"/>
+ <location filename="../../TransferThread.cpp" line="673"/>
+ <location filename="../../TransferThread.cpp" line="745"/>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="346"/>
+ <location filename="../../TransferThread.cpp" line="363"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="421"/>
+ <location filename="../../TransferThread.cpp" line="444"/>
+ <source>Internal error: Already opening</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="586"/>
+ <source>Drive %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="588"/>
+ <source>Unknown folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="592"/>
+ <source>root</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="645"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="652"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="711"/>
+ <location filename="../../TransferThread.cpp" line="826"/>
+ <source>The source file doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="751"/>
+ <location filename="../../TransferThread.cpp" line="838"/>
+ <source>Unable to do the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="787"/>
+ <source>The source doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="832"/>
+ <source>Another file exists at same place</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1134"/>
+ <source>The checksums do not match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1224"/>
+ <source>Internal error: The destination is not closed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1239"/>
+ <source>Internal error: The size transfered doesn&apos;t match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1250"/>
+ <source>Internal error: The buffer is not empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <location filename="../../TransferThread.cpp" line="1333"/>
+ <location filename="../../TransferThread.cpp" line="1348"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../WriteThread.cpp" line="83"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="277"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="680"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="705"/>
+ <source>File truncated during read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="53"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="60"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="70"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Autostart the transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="90"/>
+ <location filename="../../copyEngineOptions.ui" line="110"/>
+ <source>Less performance if checked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="113"/>
+ <source>Follow the strict order</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="139"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="145"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="155"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="181"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="241"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="272"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="279"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="299"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="312"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="343"/>
+ <source>Control</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="349"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="358"/>
+ <source>Only after error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="365"/>
+ <source>Ignore if impossible</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="382"/>
+ <source>Verify checksums</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="414"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="420"/>
+ <source>Parallel buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="427"/>
+ <location filename="../../copyEngineOptions.ui" line="440"/>
+ <location filename="../../copyEngineOptions.ui" line="453"/>
+ <location filename="../../copyEngineOptions.ui" line="490"/>
+ <location filename="../../copyEngineOptions.ui" line="559"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="469"/>
+ <source>Block size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="476"/>
+ <source>Sequential buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="483"/>
+ <source>Enable OS buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="506"/>
+ <source>OS buffer only if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="513"/>
+ <source>Transfer algorithm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="552"/>
+ <source>Parallelize if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="582"/>
+ <source>Inode threads (unsafe &gt; 1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="589"/>
+ <location filename="../../copyEngineOptions.ui" line="599"/>
+ <source>More cpu, but better organisation on the disk</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="602"/>
+ <source>Order the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="618"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="624"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="634"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="646"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="668"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pt/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pt/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pt/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pt/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pt/translation.ts
new file mode 100755
index 0000000..e0764bb
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/pt/translation.ts
@@ -0,0 +1,1291 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>AvancedQFile</name>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="26"/>
+ <location filename="../../AvancedQFile.cpp" line="57"/>
+ <location filename="../../AvancedQFile.cpp" line="88"/>
+ <source>Not supported on this platform</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="40"/>
+ <source>Last modified date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="71"/>
+ <source>Last access date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="121"/>
+ <source>Unknown error: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="187"/>
+ <source>Unknown error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="133"/>
+ <source>Path conversion error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="740"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1070"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1071"/>
+ <location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="54"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="57"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="137"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="144"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="111"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="118"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="30"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="93"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="105"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="93"/>
+ <location filename="../../Filters.cpp" line="131"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="96"/>
+ <location filename="../../Filters.cpp" line="134"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="99"/>
+ <location filename="../../Filters.cpp" line="137"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="107"/>
+ <location filename="../../Filters.cpp" line="145"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="110"/>
+ <location filename="../../Filters.cpp" line="148"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="116"/>
+ <location filename="../../Filters.cpp" line="154"/>
+ <location filename="../../Filters.cpp" line="216"/>
+ <location filename="../../Filters.cpp" line="255"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="57"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="122"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="131"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1513"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1520"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1529"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1538"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1544"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1607"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1615"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="142"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="155"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="183"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="206"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="233"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="93"/>
+ <location filename="../../MkPath.cpp" line="276"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../ReadThread.cpp" line="59"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="188"/>
+ <source>Internal error reading the source file:block size out of range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="196"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="237"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="39"/>
+ <location filename="../../RenamingRules.cpp" line="62"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="43"/>
+ <location filename="../../RenamingRules.cpp" line="73"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="274"/>
+ <source>Blacklisted folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="338"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="345"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="401"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="408"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>This is not a folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="446"/>
+ <source>The folder does exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="448"/>
+ <source>The folder is not readable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="459"/>
+ <source>Problem with name encoding</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="244"/>
+ <location filename="../../TransferThread.cpp" line="673"/>
+ <location filename="../../TransferThread.cpp" line="745"/>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="346"/>
+ <location filename="../../TransferThread.cpp" line="363"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="421"/>
+ <location filename="../../TransferThread.cpp" line="444"/>
+ <source>Internal error: Already opening</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="586"/>
+ <source>Drive %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="588"/>
+ <source>Unknown folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="592"/>
+ <source>root</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="645"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="652"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="711"/>
+ <location filename="../../TransferThread.cpp" line="826"/>
+ <source>The source file doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="751"/>
+ <location filename="../../TransferThread.cpp" line="838"/>
+ <source>Unable to do the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="787"/>
+ <source>The source doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="832"/>
+ <source>Another file exists at same place</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1134"/>
+ <source>The checksums do not match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1224"/>
+ <source>Internal error: The destination is not closed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1239"/>
+ <source>Internal error: The size transfered doesn&apos;t match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1250"/>
+ <source>Internal error: The buffer is not empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <location filename="../../TransferThread.cpp" line="1333"/>
+ <location filename="../../TransferThread.cpp" line="1348"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../WriteThread.cpp" line="83"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="277"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="680"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="705"/>
+ <source>File truncated during read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="53"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="60"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="70"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Autostart the transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="90"/>
+ <location filename="../../copyEngineOptions.ui" line="110"/>
+ <source>Less performance if checked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="113"/>
+ <source>Follow the strict order</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="139"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="145"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="155"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="181"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="241"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="272"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="279"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="299"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="312"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="343"/>
+ <source>Control</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="349"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="358"/>
+ <source>Only after error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="365"/>
+ <source>Ignore if impossible</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="382"/>
+ <source>Verify checksums</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="414"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="420"/>
+ <source>Parallel buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="427"/>
+ <location filename="../../copyEngineOptions.ui" line="440"/>
+ <location filename="../../copyEngineOptions.ui" line="453"/>
+ <location filename="../../copyEngineOptions.ui" line="490"/>
+ <location filename="../../copyEngineOptions.ui" line="559"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="469"/>
+ <source>Block size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="476"/>
+ <source>Sequential buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="483"/>
+ <source>Enable OS buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="506"/>
+ <source>OS buffer only if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="513"/>
+ <source>Transfer algorithm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="552"/>
+ <source>Parallelize if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="582"/>
+ <source>Inode threads (unsafe &gt; 1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="589"/>
+ <location filename="../../copyEngineOptions.ui" line="599"/>
+ <source>More cpu, but better organisation on the disk</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="602"/>
+ <source>Order the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="618"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="624"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="634"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="646"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="668"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ru/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ru/translation.qm
new file mode 100755
index 0000000..a109715
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ru/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/ru/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ru/translation.ts
index 3b103c5..3f05c49 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/ru/translation.ts
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/ru/translation.ts
@@ -39,106 +39,106 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished">Двигатель вынуждены покинуть свои дома, вы не можете скопировать с ним</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished">Двигатель вынужден копии, вы не можете двигаться вместе с ним</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Destination</source>
<translation type="unfinished">назначение</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="516"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="740"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
<location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
<source>Ask</source>
<translation type="unfinished">просить</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
<location filename="../../CopyEngine.cpp" line="1071"/>
<location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
<source>Skip</source>
<translation type="unfinished">пропускать</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
<source>Merge</source>
<translation type="unfinished">слияние</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
<source>Rename</source>
<translation type="unfinished">переименовать</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Заменить, если новее</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options error</source>
<translation type="unfinished">Опции ошибке</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -146,85 +146,85 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Ask</source>
<translation type="unfinished">просить</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Skip</source>
<translation type="unfinished">пропускать</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
<source>Merge</source>
<translation type="unfinished">слияние</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
<source>Rename</source>
<translation type="unfinished">переименовать</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Заменить, если новее</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
<source>Automatic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
<source>Sequential</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
<source>Parallel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options error</source>
<translation type="unfinished">Опции ошибке</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished">Параметры двигателя не загружается, не может получить доступ к фильтрам</translation>
</message>
@@ -486,49 +486,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation>Невозможно сделать, чтобы скопировать или переместить элемент в неправильном форсированном режиме: %1</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
<source>Unable to save the transfer list: %1</source>
<translation>Невозможно сохранить трансфер: %1</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThread.cpp" line="1513"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThread.cpp" line="1520"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation>Неправильный заголовок: &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThread.cpp" line="1529"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation>Трансфер в смешанном режиме, но этот экземпляр не в этом режиме</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThread.cpp" line="1538"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation>Передача списка в режиме копирования, но этот экземпляр не в этом режиме</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThread.cpp" line="1544"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation>Трансфер в режим перемещения, но этот экземпляр не в этом режиме</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThread.cpp" line="1607"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThread.cpp" line="1615"/>
<source>Unable to open the transfer list: %1</source>
<translation>Не удается открыть трансфер: %1</translation>
</message>
@@ -581,13 +581,13 @@
</message>
<message>
<location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
<source>Unable to read the source file: </source>
<translation>Невозможно прочитать исходный файл: </translation>
</message>
<message>
<location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
<source>File truncated during the read, possible data change</source>
<translation>Файл усечены во время чтения, возможность изменения данных</translation>
</message>
@@ -623,21 +623,21 @@
<translation>Второе переименование</translation>
</message>
<message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>Переименование правила</translation>
+ </message>
+ <message>
<location filename="../../RenamingRules.cpp" line="39"/>
<location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation>%1 - копия</translation>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../../RenamingRules.cpp" line="43"/>
<location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - копия (%2)</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation>Переименование правила</translation>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished">%1 - копия (%2) {1 ?} {2)%3?}</translation>
</message>
</context>
<context>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/th/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/th/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/th/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/th/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/th/translation.ts
new file mode 100755
index 0000000..e0764bb
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/th/translation.ts
@@ -0,0 +1,1291 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>AvancedQFile</name>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="26"/>
+ <location filename="../../AvancedQFile.cpp" line="57"/>
+ <location filename="../../AvancedQFile.cpp" line="88"/>
+ <source>Not supported on this platform</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="40"/>
+ <source>Last modified date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="71"/>
+ <source>Last access date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="121"/>
+ <source>Unknown error: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="187"/>
+ <source>Unknown error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="133"/>
+ <source>Path conversion error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="740"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1070"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1071"/>
+ <location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="54"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="57"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="137"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="144"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="111"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="118"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="30"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="93"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="105"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="93"/>
+ <location filename="../../Filters.cpp" line="131"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="96"/>
+ <location filename="../../Filters.cpp" line="134"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="99"/>
+ <location filename="../../Filters.cpp" line="137"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="107"/>
+ <location filename="../../Filters.cpp" line="145"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="110"/>
+ <location filename="../../Filters.cpp" line="148"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="116"/>
+ <location filename="../../Filters.cpp" line="154"/>
+ <location filename="../../Filters.cpp" line="216"/>
+ <location filename="../../Filters.cpp" line="255"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="57"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="122"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="131"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1513"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1520"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1529"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1538"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1544"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1607"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1615"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="142"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="155"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="183"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="206"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="233"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="93"/>
+ <location filename="../../MkPath.cpp" line="276"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../ReadThread.cpp" line="59"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="188"/>
+ <source>Internal error reading the source file:block size out of range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="196"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="237"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="39"/>
+ <location filename="../../RenamingRules.cpp" line="62"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="43"/>
+ <location filename="../../RenamingRules.cpp" line="73"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="274"/>
+ <source>Blacklisted folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="338"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="345"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="401"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="408"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>This is not a folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="446"/>
+ <source>The folder does exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="448"/>
+ <source>The folder is not readable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="459"/>
+ <source>Problem with name encoding</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="244"/>
+ <location filename="../../TransferThread.cpp" line="673"/>
+ <location filename="../../TransferThread.cpp" line="745"/>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="346"/>
+ <location filename="../../TransferThread.cpp" line="363"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="421"/>
+ <location filename="../../TransferThread.cpp" line="444"/>
+ <source>Internal error: Already opening</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="586"/>
+ <source>Drive %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="588"/>
+ <source>Unknown folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="592"/>
+ <source>root</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="645"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="652"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="711"/>
+ <location filename="../../TransferThread.cpp" line="826"/>
+ <source>The source file doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="751"/>
+ <location filename="../../TransferThread.cpp" line="838"/>
+ <source>Unable to do the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="787"/>
+ <source>The source doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="832"/>
+ <source>Another file exists at same place</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1134"/>
+ <source>The checksums do not match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1224"/>
+ <source>Internal error: The destination is not closed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1239"/>
+ <source>Internal error: The size transfered doesn&apos;t match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1250"/>
+ <source>Internal error: The buffer is not empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <location filename="../../TransferThread.cpp" line="1333"/>
+ <location filename="../../TransferThread.cpp" line="1348"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../WriteThread.cpp" line="83"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="277"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="680"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="705"/>
+ <source>File truncated during read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="53"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="60"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="70"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Autostart the transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="90"/>
+ <location filename="../../copyEngineOptions.ui" line="110"/>
+ <source>Less performance if checked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="113"/>
+ <source>Follow the strict order</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="139"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="145"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="155"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="181"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="241"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="272"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="279"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="299"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="312"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="343"/>
+ <source>Control</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="349"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="358"/>
+ <source>Only after error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="365"/>
+ <source>Ignore if impossible</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="382"/>
+ <source>Verify checksums</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="414"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="420"/>
+ <source>Parallel buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="427"/>
+ <location filename="../../copyEngineOptions.ui" line="440"/>
+ <location filename="../../copyEngineOptions.ui" line="453"/>
+ <location filename="../../copyEngineOptions.ui" line="490"/>
+ <location filename="../../copyEngineOptions.ui" line="559"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="469"/>
+ <source>Block size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="476"/>
+ <source>Sequential buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="483"/>
+ <source>Enable OS buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="506"/>
+ <source>OS buffer only if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="513"/>
+ <source>Transfer algorithm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="552"/>
+ <source>Parallelize if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="582"/>
+ <source>Inode threads (unsafe &gt; 1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="589"/>
+ <location filename="../../copyEngineOptions.ui" line="599"/>
+ <source>More cpu, but better organisation on the disk</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="602"/>
+ <source>Order the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="618"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="624"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="634"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="646"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="668"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/tr/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/tr/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/tr/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/tr/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/tr/translation.ts
new file mode 100755
index 0000000..e0764bb
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/tr/translation.ts
@@ -0,0 +1,1291 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>AvancedQFile</name>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="26"/>
+ <location filename="../../AvancedQFile.cpp" line="57"/>
+ <location filename="../../AvancedQFile.cpp" line="88"/>
+ <source>Not supported on this platform</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="40"/>
+ <source>Last modified date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="71"/>
+ <source>Last access date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="121"/>
+ <source>Unknown error: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="187"/>
+ <source>Unknown error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="133"/>
+ <source>Path conversion error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="740"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1070"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1071"/>
+ <location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="54"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="57"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="137"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="144"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="111"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="118"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="30"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="93"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="105"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="93"/>
+ <location filename="../../Filters.cpp" line="131"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="96"/>
+ <location filename="../../Filters.cpp" line="134"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="99"/>
+ <location filename="../../Filters.cpp" line="137"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="107"/>
+ <location filename="../../Filters.cpp" line="145"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="110"/>
+ <location filename="../../Filters.cpp" line="148"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="116"/>
+ <location filename="../../Filters.cpp" line="154"/>
+ <location filename="../../Filters.cpp" line="216"/>
+ <location filename="../../Filters.cpp" line="255"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="57"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="122"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="131"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1513"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1520"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1529"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1538"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1544"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1607"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1615"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="142"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="155"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="183"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="206"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="233"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="93"/>
+ <location filename="../../MkPath.cpp" line="276"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../ReadThread.cpp" line="59"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="188"/>
+ <source>Internal error reading the source file:block size out of range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="196"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="237"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="39"/>
+ <location filename="../../RenamingRules.cpp" line="62"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="43"/>
+ <location filename="../../RenamingRules.cpp" line="73"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="274"/>
+ <source>Blacklisted folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="338"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="345"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="401"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="408"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>This is not a folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="446"/>
+ <source>The folder does exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="448"/>
+ <source>The folder is not readable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="459"/>
+ <source>Problem with name encoding</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="244"/>
+ <location filename="../../TransferThread.cpp" line="673"/>
+ <location filename="../../TransferThread.cpp" line="745"/>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="346"/>
+ <location filename="../../TransferThread.cpp" line="363"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="421"/>
+ <location filename="../../TransferThread.cpp" line="444"/>
+ <source>Internal error: Already opening</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="586"/>
+ <source>Drive %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="588"/>
+ <source>Unknown folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="592"/>
+ <source>root</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="645"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="652"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="711"/>
+ <location filename="../../TransferThread.cpp" line="826"/>
+ <source>The source file doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="751"/>
+ <location filename="../../TransferThread.cpp" line="838"/>
+ <source>Unable to do the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="787"/>
+ <source>The source doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="832"/>
+ <source>Another file exists at same place</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1134"/>
+ <source>The checksums do not match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1224"/>
+ <source>Internal error: The destination is not closed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1239"/>
+ <source>Internal error: The size transfered doesn&apos;t match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1250"/>
+ <source>Internal error: The buffer is not empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <location filename="../../TransferThread.cpp" line="1333"/>
+ <location filename="../../TransferThread.cpp" line="1348"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../WriteThread.cpp" line="83"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="277"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="680"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="705"/>
+ <source>File truncated during read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="53"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="60"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="70"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Autostart the transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="90"/>
+ <location filename="../../copyEngineOptions.ui" line="110"/>
+ <source>Less performance if checked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="113"/>
+ <source>Follow the strict order</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="139"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="145"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="155"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="181"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="241"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="272"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="279"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="299"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="312"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="343"/>
+ <source>Control</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="349"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="358"/>
+ <source>Only after error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="365"/>
+ <source>Ignore if impossible</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="382"/>
+ <source>Verify checksums</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="414"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="420"/>
+ <source>Parallel buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="427"/>
+ <location filename="../../copyEngineOptions.ui" line="440"/>
+ <location filename="../../copyEngineOptions.ui" line="453"/>
+ <location filename="../../copyEngineOptions.ui" line="490"/>
+ <location filename="../../copyEngineOptions.ui" line="559"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="469"/>
+ <source>Block size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="476"/>
+ <source>Sequential buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="483"/>
+ <source>Enable OS buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="506"/>
+ <source>OS buffer only if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="513"/>
+ <source>Transfer algorithm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="552"/>
+ <source>Parallelize if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="582"/>
+ <source>Inode threads (unsafe &gt; 1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="589"/>
+ <location filename="../../copyEngineOptions.ui" line="599"/>
+ <source>More cpu, but better organisation on the disk</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="602"/>
+ <source>Order the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="618"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="624"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="634"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="646"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="668"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/zh/translation.qm b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/zh/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/zh/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/zh/translation.ts b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/zh/translation.ts
new file mode 100755
index 0000000..7e39d05
--- /dev/null
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/Languages/zh/translation.ts
@@ -0,0 +1,1291 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>AvancedQFile</name>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="26"/>
+ <location filename="../../AvancedQFile.cpp" line="57"/>
+ <location filename="../../AvancedQFile.cpp" line="88"/>
+ <source>Not supported on this platform</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="40"/>
+ <source>Last modified date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="71"/>
+ <source>Last access date is wrong</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="121"/>
+ <source>Unknown error: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="187"/>
+ <source>Unknown error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../AvancedQFile.cpp" line="133"/>
+ <source>Path conversion error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="437"/>
+ <location filename="../../CopyEngine.cpp" line="459"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="470"/>
+ <location filename="../../CopyEngine.cpp" line="492"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="516"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="740"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1070"/>
+ <location filename="../../CopyEngine.cpp" line="1073"/>
+ <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="1082"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1071"/>
+ <location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="1083"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1074"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="1088"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1080"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1084"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1085"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1086"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1087"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1090"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1091"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1092"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1193"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="451"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="449"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="450"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="453"/>
+ <source>Automatic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="454"/>
+ <source>Sequential</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="455"/>
+ <source>Parallel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="506"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="545"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="54"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="57"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="137"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="144"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="111"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="118"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="30"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="93"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="105"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="93"/>
+ <location filename="../../Filters.cpp" line="131"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="96"/>
+ <location filename="../../Filters.cpp" line="134"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="99"/>
+ <location filename="../../Filters.cpp" line="137"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="107"/>
+ <location filename="../../Filters.cpp" line="145"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="110"/>
+ <location filename="../../Filters.cpp" line="148"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="116"/>
+ <location filename="../../Filters.cpp" line="154"/>
+ <location filename="../../Filters.cpp" line="216"/>
+ <location filename="../../Filters.cpp" line="255"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="57"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="122"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="131"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThread.cpp" line="1490"/>
+ <location filename="../../ListThread.cpp" line="2422"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1497"/>
+ <location filename="../../ListThread.cpp" line="2429"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1513"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1520"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1529"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1538"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1544"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1607"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThread.cpp" line="1615"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="142"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="155"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="183"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="206"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="233"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="93"/>
+ <location filename="../../MkPath.cpp" line="276"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../ReadThread.cpp" line="59"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="188"/>
+ <source>Internal error reading the source file:block size out of range</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="196"/>
+ <location filename="../../ReadThread.cpp" line="422"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ReadThread.cpp" line="237"/>
+ <location filename="../../ReadThread.cpp" line="470"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="39"/>
+ <location filename="../../RenamingRules.cpp" line="62"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="43"/>
+ <location filename="../../RenamingRules.cpp" line="73"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="274"/>
+ <source>Blacklisted folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="338"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="345"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="401"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="408"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>This is not a folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="446"/>
+ <source>The folder does exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="448"/>
+ <source>The folder is not readable</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="459"/>
+ <source>Problem with name encoding</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="244"/>
+ <location filename="../../TransferThread.cpp" line="673"/>
+ <location filename="../../TransferThread.cpp" line="745"/>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="346"/>
+ <location filename="../../TransferThread.cpp" line="363"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="421"/>
+ <location filename="../../TransferThread.cpp" line="444"/>
+ <source>Internal error: Already opening</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="586"/>
+ <source>Drive %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="588"/>
+ <source>Unknown folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="592"/>
+ <source>root</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="645"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="652"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="711"/>
+ <location filename="../../TransferThread.cpp" line="826"/>
+ <source>The source file doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="751"/>
+ <location filename="../../TransferThread.cpp" line="838"/>
+ <source>Unable to do the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="787"/>
+ <source>The source doesn&apos;t exist</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="832"/>
+ <source>Another file exists at same place</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1134"/>
+ <source>The checksums do not match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1224"/>
+ <source>Internal error: The destination is not closed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1239"/>
+ <source>Internal error: The size transfered doesn&apos;t match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1250"/>
+ <source>Internal error: The buffer is not empty</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="1315"/>
+ <location filename="../../TransferThread.cpp" line="1333"/>
+ <location filename="../../TransferThread.cpp" line="1348"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="228"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../WriteThread.cpp" line="83"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="277"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="680"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../WriteThread.cpp" line="705"/>
+ <source>File truncated during read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="53"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="60"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="70"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Autostart the transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="90"/>
+ <location filename="../../copyEngineOptions.ui" line="110"/>
+ <source>Less performance if checked</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="113"/>
+ <source>Follow the strict order</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="139"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="145"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="155"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="181"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="241"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="272"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="279"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="299"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="312"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="343"/>
+ <source>Control</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="349"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="358"/>
+ <source>Only after error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="365"/>
+ <source>Ignore if impossible</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="382"/>
+ <source>Verify checksums</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="414"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="420"/>
+ <source>Parallel buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="427"/>
+ <location filename="../../copyEngineOptions.ui" line="440"/>
+ <location filename="../../copyEngineOptions.ui" line="453"/>
+ <location filename="../../copyEngineOptions.ui" line="490"/>
+ <location filename="../../copyEngineOptions.ui" line="559"/>
+ <source>KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="469"/>
+ <source>Block size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="476"/>
+ <source>Sequential buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="483"/>
+ <source>Enable OS buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="506"/>
+ <source>OS buffer only if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="513"/>
+ <source>Transfer algorithm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="552"/>
+ <source>Parallelize if smaller than</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="582"/>
+ <source>Inode threads (unsafe &gt; 1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="589"/>
+ <location filename="../../copyEngineOptions.ui" line="599"/>
+ <source>More cpu, but better organisation on the disk</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="602"/>
+ <source>Order the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="618"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="624"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="634"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="646"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="668"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier/ListThread.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ListThread.cpp
index bb0bce6..0bd6b80 100644..100755
--- a/plugins/CopyEngine/Ultracopier/ListThread.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ListThread.cpp
@@ -33,9 +33,6 @@ ListThread::ListThread(FacilityInterface * facilityInterface)
blockSize = ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE*1024;
sequentialBuffer = ULTRACOPIER_PLUGIN_DEFAULT_SEQUENTIAL_NUMBER_OF_BLOCK;
parallelBuffer = ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK;
- #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
- blockSizeAfterSpeedLimitation = blockSize;
- #endif
osBufferLimit = 512;
alwaysDoThisActionForFileExists = FileExists_NotSet;
doChecksum = false;
@@ -45,14 +42,17 @@ ListThread::ListThread(FacilityInterface * facilityInterface)
osBufferLimited = false;
forcedMode = false;
#ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ blockSizeAfterSpeedLimitation = blockSize;
clockForTheCopySpeed = NULL;
multiForBigSpeed = 0;
#endif
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
connect(&timerUpdateDebugDialog,&QTimer::timeout,this,&ListThread::timedUpdateDebugDialog);
timerUpdateDebugDialog.start(ULTRACOPIER_PLUGIN_DEBUG_WINDOW_TIMER);
#endif
+ #endif
connect(this, &ListThread::tryCancel, this,&ListThread::cancel, Qt::QueuedConnection);
connect(this, &ListThread::askNewTransferThread, this,&ListThread::createTransferThread, Qt::QueuedConnection);
connect(&mkPathQueue, &MkPath::firstFolderFinish, this,&ListThread::mkPathFirstFolderFinish, Qt::QueuedConnection);
@@ -189,7 +189,8 @@ void ListThread::transferPutAtBottom()
Ultracopier::ReturnActionOnCopyList newAction;
newAction.type=Ultracopier::MoveItem;
newAction.addAction.id=transfer->transferId;
- newAction.userAction.position=actionToDoListTransfer.size()-1;
+ newAction.userAction.position=0;
+ newAction.userAction.moveAt=actionToDoListTransfer.size()-1;
actionDone.push_back(newAction);
//do the wait stat
actionToDoListTransfer[indexAction].isRunning=false;
@@ -1760,14 +1761,15 @@ void ListThread::doNewActions_inode_manipulation()
//search the next transfer action to do
while(int_for_loop<actionToDoListTransfer_count)
{
- if(!actionToDoListTransfer.at(int_for_loop).isRunning)
+ ActionToDoTransfer& currentActionToDoTransfer=actionToDoListTransfer[int_for_loop];
+ if(!currentActionToDoTransfer.isRunning)
{
//search the next inode action to do
while(int_for_internal_loop<actionToDoListInode_count)
{
if(!actionToDoListInode.at(int_for_internal_loop).isRunning)
{
- if(actionToDoListTransfer.at(int_for_loop).id<actionToDoListInode.at(int_for_internal_loop).id)
+ if(currentActionToDoTransfer.id<actionToDoListInode.at(int_for_internal_loop).id)
{
//do the tranfer action in the next code
break;
@@ -1780,7 +1782,6 @@ void ListThread::doNewActions_inode_manipulation()
}
int_for_internal_loop++;
}
- ActionToDoTransfer& currentActionToDoTransfer=actionToDoListTransfer[int_for_loop];
//do the tranfer action
while(int_for_transfer_thread_search<loop_sub_size_transfer_thread_search)
{
@@ -1792,11 +1793,11 @@ void ListThread::doNewActions_inode_manipulation()
currentTransferThread=transferThreadList.at(int_for_transfer_thread_search);
if(currentTransferThread->getStat()==TransferStat_Idle && currentTransferThread->transferId==0) // /!\ important!
{
- std::string drive=driveManagement.getDrive(actionToDoListTransfer.at(int_for_internal_loop).destination.absoluteFilePath().toStdString());
- if(requiredSpace.find(drive)!=requiredSpace.cend() && (actionToDoListTransfer.at(int_for_internal_loop).mode!=Ultracopier::Move || drive!=driveManagement.getDrive(actionToDoListTransfer.at(int_for_internal_loop).source.absoluteFilePath().toStdString())))
+ std::string drive=driveManagement.getDrive(currentActionToDoTransfer.destination.absoluteFilePath().toStdString());
+ if(requiredSpace.find(drive)!=requiredSpace.cend() && (currentActionToDoTransfer.mode!=Ultracopier::Move || drive!=driveManagement.getDrive(currentActionToDoTransfer.source.absoluteFilePath().toStdString())))
{
- requiredSpace[drive]-=actionToDoListTransfer.at(int_for_internal_loop).size;
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("space needed removed: %1, space needed: %2, on: %3").arg(actionToDoListTransfer.at(int_for_internal_loop).size).arg(requiredSpace.at(drive)).arg(QString::fromStdString(drive)).toStdString());
+ requiredSpace[drive]-=currentActionToDoTransfer.size;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("space needed removed: %1, space needed: %2, on: %3").arg(currentActionToDoTransfer.size).arg(requiredSpace.at(drive)).arg(QString::fromStdString(drive)).toStdString());
}
currentTransferThread->transferId=currentActionToDoTransfer.id;
currentTransferThread->transferSize=currentActionToDoTransfer.size;
@@ -2016,8 +2017,8 @@ void ListThread::mkPathFirstFolderFinish()
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to found item into the todo list");
}
+#ifdef ULTRACOPIER_PLUGIN_DEBUG
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
-
void ListThread::timedUpdateDebugDialog()
{
std::vector<std::string> newList;
@@ -2082,7 +2083,7 @@ void ListThread::timedUpdateDebugDialog()
}
emit updateTheDebugInfo(newList,newList2,numberOfInodeOperation);
}
-
+#endif
#endif
/// \note Can be call without queue because all call will be serialized
diff --git a/plugins/CopyEngine/Ultracopier/ListThread.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ListThread.h
index 48e7142..239b51b 100644..100755
--- a/plugins/CopyEngine/Ultracopier/ListThread.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ListThread.h
@@ -329,9 +329,11 @@ private slots:
//transfer is finished
void transferInodeIsClosed();
//debug windows if needed
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
void timedUpdateDebugDialog();
#endif
+ #endif
//dialog message
/// \note Can be call without queue because all call will be serialized
void fileAlreadyExists(const QFileInfo &source,const QFileInfo &destination,const bool &isSame);
diff --git a/plugins/CopyEngine/Ultracopier/ListThread_InodeAction.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ListThread_InodeAction.cpp
index 12421f2..12421f2 100644..100755
--- a/plugins/CopyEngine/Ultracopier/ListThread_InodeAction.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ListThread_InodeAction.cpp
diff --git a/plugins/CopyEngine/Ultracopier/MkPath.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/MkPath.cpp
index e4ac9cf..e4ac9cf 100644..100755
--- a/plugins/CopyEngine/Ultracopier/MkPath.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/MkPath.cpp
diff --git a/plugins/CopyEngine/Ultracopier/MkPath.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/MkPath.h
index 2bbebcc..2bbebcc 100644..100755
--- a/plugins/CopyEngine/Ultracopier/MkPath.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/MkPath.h
diff --git a/plugins/CopyEngine/Ultracopier/README.md b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/README.md
index a15b943..a15b943 100644..100755
--- a/plugins/CopyEngine/Ultracopier/README.md
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/README.md
diff --git a/plugins/CopyEngine/Ultracopier/ReadThread.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ReadThread.cpp
index 7bdb60c..123cf71 100644..100755
--- a/plugins/CopyEngine/Ultracopier/ReadThread.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ReadThread.cpp
@@ -296,6 +296,8 @@ bool ReadThread::internalOpen(bool resetLastGoodPosition)
{
posix_fadvise(intfd, 0, 0, POSIX_FADV_WILLNEED);
posix_fadvise(intfd, 0, 0, POSIX_FADV_SEQUENTIAL);
+ /*int flags = fcntl(intfd, F_GETFL, 0);
+ fcntl(intfd, F_SETFL, flags | O_NONBLOCK);*/
}
#endif
if(stopIt)
diff --git a/plugins/CopyEngine/Ultracopier/ReadThread.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ReadThread.h
index f817e35..f817e35 100644..100755
--- a/plugins/CopyEngine/Ultracopier/ReadThread.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ReadThread.h
diff --git a/plugins/CopyEngine/Ultracopier/RenamingRules.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/RenamingRules.cpp
index 4ae23b8..3c296a6 100644..100755
--- a/plugins/CopyEngine/Ultracopier/RenamingRules.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/RenamingRules.cpp
@@ -36,11 +36,11 @@ void RenamingRules::setRenamingRules(std::string firstRenamingRule,std::string o
if(!firstRenamingRule.empty())
ui->firstRenamingRule->setText(QString::fromStdString(firstRenamingRule));
else
- ui->firstRenamingRule->setText(tr("%1 - copy").arg(QStringLiteral("%name%")));
+ ui->firstRenamingRule->setText(tr("%1 - copy%2").arg(QStringLiteral("%name%")).arg(QStringLiteral("%suffix%")));
if(!otherRenamingRule.empty())
ui->otherRenamingRule->setText(QString::fromStdString(otherRenamingRule));
else
- ui->otherRenamingRule->setText(tr("%1 - copy (%2)").arg(QStringLiteral("%name%")).arg(QStringLiteral("%number%")));
+ ui->otherRenamingRule->setText(tr("%1 - copy (%2)%3").arg(QStringLiteral("%name%")).arg(QStringLiteral("%number%")).arg(QStringLiteral("%suffix%")));
connectUI();
}
@@ -59,7 +59,7 @@ void RenamingRules::disconnectUI()
void RenamingRules::firstRenamingRule_haveChanged()
{
QString newValue=ui->firstRenamingRule->text();
- if(newValue==tr("%1 - copy").arg(QStringLiteral("%name%")))
+ if(newValue==tr("%1 - copy%2").arg(QStringLiteral("%name%")).arg(QStringLiteral("%name%")))
newValue=QStringLiteral("");
if(newValue.toStdString()==firstRenamingRule)
return;
@@ -70,7 +70,7 @@ void RenamingRules::firstRenamingRule_haveChanged()
void RenamingRules::otherRenamingRule_haveChanged()
{
QString newValue=ui->otherRenamingRule->text();
- if(newValue==tr("%1 - copy (%2)").arg(QStringLiteral("%name%")).arg(QStringLiteral("%number%")))
+ if(newValue==tr("%1 - copy (%2)%3").arg(QStringLiteral("%name%")).arg(QStringLiteral("%number%")).arg(QStringLiteral("%name%")))
newValue=QStringLiteral("");
if(newValue.toStdString()==otherRenamingRule)
return;
diff --git a/plugins/CopyEngine/Ultracopier/RenamingRules.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/RenamingRules.h
index b2e9d02..b2e9d02 100644..100755
--- a/plugins/CopyEngine/Ultracopier/RenamingRules.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/RenamingRules.h
diff --git a/plugins/CopyEngine/Ultracopier/RenamingRules.ui b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/RenamingRules.ui
index 0219249..0219249 100644..100755
--- a/plugins/CopyEngine/Ultracopier/RenamingRules.ui
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/RenamingRules.ui
diff --git a/plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ScanFileOrFolder.cpp
index 9dd48f3..9dd48f3 100644..100755
--- a/plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ScanFileOrFolder.cpp
diff --git a/plugins/CopyEngine/Ultracopier/ScanFileOrFolder.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ScanFileOrFolder.h
index 0c625e9..0c625e9 100644..100755
--- a/plugins/CopyEngine/Ultracopier/ScanFileOrFolder.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/ScanFileOrFolder.h
diff --git a/plugins/CopyEngine/Ultracopier/StructEnumDefinition.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/StructEnumDefinition.h
index c1758f4..c1758f4 100644..100755
--- a/plugins/CopyEngine/Ultracopier/StructEnumDefinition.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/StructEnumDefinition.h
diff --git a/plugins/CopyEngine/Ultracopier/StructEnumDefinition_CopyEngine.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/StructEnumDefinition_CopyEngine.h
index 036803c..036803c 100644..100755
--- a/plugins/CopyEngine/Ultracopier/StructEnumDefinition_CopyEngine.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/StructEnumDefinition_CopyEngine.h
diff --git a/plugins/CopyEngine/Ultracopier/TransferThread.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/TransferThread.cpp
index 210c221..210c221 100644..100755
--- a/plugins/CopyEngine/Ultracopier/TransferThread.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/TransferThread.cpp
diff --git a/plugins/CopyEngine/Ultracopier/TransferThread.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/TransferThread.h
index fb64d6a..fb64d6a 100644..100755
--- a/plugins/CopyEngine/Ultracopier/TransferThread.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/TransferThread.h
diff --git a/plugins/CopyEngine/Ultracopier/WriteThread.cpp b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/WriteThread.cpp
index bbb35fa..bbb35fa 100644..100755
--- a/plugins/CopyEngine/Ultracopier/WriteThread.cpp
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/WriteThread.cpp
diff --git a/plugins/CopyEngine/Ultracopier/WriteThread.h b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/WriteThread.h
index cadd022..cadd022 100644..100755
--- a/plugins/CopyEngine/Ultracopier/WriteThread.h
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/WriteThread.h
diff --git a/plugins/CopyEngine/Ultracopier/copyEngineOptions.ui b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/copyEngineOptions.ui
index 73e57f9..73e57f9 100644..100755
--- a/plugins/CopyEngine/Ultracopier/copyEngineOptions.ui
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/copyEngineOptions.ui
diff --git a/plugins/CopyEngine/Ultracopier/copyEngineResources.qrc b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/copyEngineResources.qrc
index 0228c74..0228c74 100644..100755
--- a/plugins/CopyEngine/Ultracopier/copyEngineResources.qrc
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/copyEngineResources.qrc
diff --git a/plugins/CopyEngine/Ultracopier/debugDialog.ui b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/debugDialog.ui
index 80fde7e..80fde7e 100644..100755
--- a/plugins/CopyEngine/Ultracopier/debugDialog.ui
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/debugDialog.ui
diff --git a/plugins/CopyEngine/Ultracopier/documentation.dox b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/documentation.dox
index 5a0fbf6..5a0fbf6 100644..100755
--- a/plugins/CopyEngine/Ultracopier/documentation.dox
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/documentation.dox
diff --git a/plugins/CopyEngine/Ultracopier/fileErrorDialog.ui b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/fileErrorDialog.ui
index b603924..b603924 100644..100755
--- a/plugins/CopyEngine/Ultracopier/fileErrorDialog.ui
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/fileErrorDialog.ui
diff --git a/plugins/CopyEngine/Ultracopier/fileExistsDialog.ui b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/fileExistsDialog.ui
index 0c38a57..0c38a57 100644..100755
--- a/plugins/CopyEngine/Ultracopier/fileExistsDialog.ui
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/fileExistsDialog.ui
diff --git a/plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/fileIsSameDialog.ui
index c019a63..c019a63 100644..100755
--- a/plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/fileIsSameDialog.ui
diff --git a/plugins/CopyEngine/Ultracopier/folderExistsDialog.ui b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/folderExistsDialog.ui
index 440b5ca..440b5ca 100644..100755
--- a/plugins/CopyEngine/Ultracopier/folderExistsDialog.ui
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/folderExistsDialog.ui
diff --git a/plugins/CopyEngine/Ultracopier/informations.xml b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/informations.xml
index fcb8c8f..1b0d100 100644..100755
--- a/plugins/CopyEngine/Ultracopier/informations.xml
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[Copy engine of Ultracopier, do in Qt for all platform, and copy by stream]]></description>
<description xml:lang="fr"><![CDATA[Moteur de copie d'ultracopier, fait en Qt pour toutes les plateformes, et copie par stream]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>Ultracopier</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/CopyEngine/Ultracopier/plugin.json b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/plugin.json
index 9e26dfe..9e26dfe 100644..100755
--- a/plugins/CopyEngine/Ultracopier/plugin.json
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/plugin.json
diff --git a/plugins/CopyEngine/Ultracopier/resources/add.png b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/resources/add.png
index 7932127..7932127 100644..100755
--- a/plugins/CopyEngine/Ultracopier/resources/add.png
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/resources/add.png
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/resources/edit.png b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/resources/edit.png
index 5464856..5464856 100644..100755
--- a/plugins/CopyEngine/Ultracopier/resources/edit.png
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/resources/edit.png
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/resources/filter.png b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/resources/filter.png
index 9bb3164..9bb3164 100644..100755
--- a/plugins/CopyEngine/Ultracopier/resources/filter.png
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/resources/filter.png
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/resources/remove.png b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/resources/remove.png
index b711740..b711740 100644..100755
--- a/plugins/CopyEngine/Ultracopier/resources/remove.png
+++ b/plugins-unmaintained/CopyEngine/Ultracopier-Qt/resources/remove.png
Binary files differ
diff --git a/plugins-unmaintained/Listener/dbus/informations.xml b/plugins-unmaintained/Listener/dbus/informations.xml
index 7c35186..c30cd6d 100644
--- a/plugins-unmaintained/Listener/dbus/informations.xml
+++ b/plugins-unmaintained/Listener/dbus/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[Listener for catchcopy in dbus. Allow to receive copy list from plugin/explorer compatible with catchcopy.]]></description>
<description xml:lang="fr"><![CDATA[Écouteur pour catchcopy en dbus. Permet de recevoir un liste de copie venant d'un plugin/explorateur avec catchcopy.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>dbus</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/ar/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/ar/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/ar/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/de/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/de/translation.qm
new file mode 100644
index 0000000..d925dd6
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/de/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/el/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/el/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/el/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/en/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/en/translation.qm
new file mode 100644
index 0000000..d925dd6
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/en/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/es/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/es/translation.qm
new file mode 100644
index 0000000..d925dd6
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/es/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/fr/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/fr/translation.qm
new file mode 100644
index 0000000..46bfa96
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/fr/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/hi/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/hi/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/hi/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/hu/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/hu/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/hu/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/id/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/id/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/id/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/it/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/it/translation.qm
new file mode 100644
index 0000000..d925dd6
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/it/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/ja/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/ja/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/ja/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/ko/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/ko/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/ko/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/nl/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/nl/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/nl/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/no/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/no/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/no/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/pl/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/pl/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/pl/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/pt/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/pt/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/pt/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/ru/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/ru/translation.qm
new file mode 100644
index 0000000..4c6ac6b
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/ru/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/th/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/th/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/th/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/tr/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/tr/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/tr/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/Languages/zh/translation.qm b/plugins-unmaintained/PluginLoader/keybinding/Languages/zh/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/PluginLoader/keybinding/Languages/zh/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/PluginLoader/keybinding/informations.xml b/plugins-unmaintained/PluginLoader/keybinding/informations.xml
index 6fad20d..a9feaf1 100644
--- a/plugins-unmaintained/PluginLoader/keybinding/informations.xml
+++ b/plugins-unmaintained/PluginLoader/keybinding/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[Plugin loader for catchcopy v0002. Allow to receive copy list from plugin/explorer compatible with catchcopy.]]></description>
<description xml:lang="fr"><![CDATA[Chargeur de plugin pour catchcopy v0002. Permet de recevoir un liste de copie venant d'un plugin/explorateur avec catchcopy.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>keybinding</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins-unmaintained/SessionLoader/KDE4/informations.xml b/plugins-unmaintained/SessionLoader/KDE4/informations.xml
index e56ca91..15a59bd 100644
--- a/plugins-unmaintained/SessionLoader/KDE4/informations.xml
+++ b/plugins-unmaintained/SessionLoader/KDE4/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[Test plugin to show how create SessionLoader plugin]]></description>
<description xml:lang="fr"><![CDATA[Plugin de test pour monter comment créer un plugin SessionLoader]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>KDE4</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins-unmaintained/Themes/Clean/Languages/ar/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/ar/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/ar/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/de/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/de/translation.qm
new file mode 100644
index 0000000..ca75162
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/de/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/el/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/el/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/el/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/en/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/en/translation.qm
new file mode 100644
index 0000000..d925dd6
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/en/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/es/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/es/translation.qm
new file mode 100644
index 0000000..f6266fe
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/es/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/fr/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/fr/translation.qm
new file mode 100644
index 0000000..a7d046a
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/fr/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/hi/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/hi/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/hi/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/hu/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/hu/translation.qm
new file mode 100644
index 0000000..f1183b7
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/hu/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/id/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/id/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/id/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/it/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/it/translation.qm
new file mode 100644
index 0000000..3f433f5
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/it/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/ja/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/ja/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/ja/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/ko/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/ko/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/ko/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/nl/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/nl/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/nl/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/no/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/no/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/no/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/pl/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/pl/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/pl/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/ru/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/ru/translation.qm
new file mode 100644
index 0000000..6d24d4a
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/ru/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/th/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/th/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/th/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/tr/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/tr/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/tr/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/Languages/zh/translation.qm b/plugins-unmaintained/Themes/Clean/Languages/zh/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Clean/Languages/zh/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Clean/informations.xml b/plugins-unmaintained/Themes/Clean/informations.xml
index 94cfe42..a74811b 100644
--- a/plugins-unmaintained/Themes/Clean/informations.xml
+++ b/plugins-unmaintained/Themes/Clean/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[Clean style for Ultracopier]]></description>
<description xml:lang="fr"><![CDATA[Style Clean pour Ultracopier]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>Clean</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/ar/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/ar/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/ar/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/de/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/de/translation.qm
new file mode 100644
index 0000000..224e31a
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/de/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/el/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/el/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/el/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/en/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/en/translation.qm
new file mode 100644
index 0000000..d925dd6
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/en/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/es/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/es/translation.qm
new file mode 100644
index 0000000..e24f920
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/es/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/fr/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/fr/translation.qm
new file mode 100644
index 0000000..574ba7c
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/fr/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/hi/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/hi/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/hi/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/hu/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/hu/translation.qm
new file mode 100644
index 0000000..a87f1a6
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/hu/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/id/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/id/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/id/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/it/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/it/translation.qm
new file mode 100644
index 0000000..6c60beb
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/it/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/ja/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/ja/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/ja/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/ko/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/ko/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/ko/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/nl/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/nl/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/nl/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/no/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/no/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/no/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/pl/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/pl/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/pl/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/ru/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/ru/translation.qm
new file mode 100644
index 0000000..735b8f1
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/ru/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/th/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/th/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/th/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/tr/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/tr/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/tr/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/Languages/zh/translation.qm b/plugins-unmaintained/Themes/Teracopy/Languages/zh/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Teracopy/Languages/zh/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Teracopy/informations.xml b/plugins-unmaintained/Themes/Teracopy/informations.xml
index 5dadd91..2209319 100644
--- a/plugins-unmaintained/Themes/Teracopy/informations.xml
+++ b/plugins-unmaintained/Themes/Teracopy/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[Teracopy style for Ultracopier, reproduct with screenshot on internet]]></description>
<description xml:lang="fr"><![CDATA[Style Teracopy pour Ultracopier, reproduit avec les screenshots vu sur internet]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>Teracopy</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins-unmaintained/Themes/Windows/Languages/ar/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/ar/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/ar/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/de/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/de/translation.qm
new file mode 100644
index 0000000..dc09dc4
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/de/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/el/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/el/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/el/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/en/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/en/translation.qm
new file mode 100644
index 0000000..c7e58f0
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/en/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/es/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/es/translation.qm
new file mode 100644
index 0000000..a45f088
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/es/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/fr/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/fr/translation.qm
new file mode 100644
index 0000000..56fbfbb
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/fr/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/hi/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/hi/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/hi/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/hu/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/hu/translation.qm
new file mode 100644
index 0000000..f540aa7
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/hu/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/id/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/id/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/id/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/it/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/it/translation.qm
new file mode 100644
index 0000000..5cfa890
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/it/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/ja/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/ja/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/ja/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/ko/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/ko/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/ko/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/nl/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/nl/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/nl/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/no/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/no/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/no/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/pl/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/pl/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/pl/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/ru/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/ru/translation.qm
new file mode 100644
index 0000000..16876b9
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/ru/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/th/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/th/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/th/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/tr/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/tr/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/tr/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/Languages/zh/translation.qm b/plugins-unmaintained/Themes/Windows/Languages/zh/translation.qm
new file mode 100644
index 0000000..3738845
--- /dev/null
+++ b/plugins-unmaintained/Themes/Windows/Languages/zh/translation.qm
Binary files differ
diff --git a/plugins-unmaintained/Themes/Windows/informations.xml b/plugins-unmaintained/Themes/Windows/informations.xml
index 25c4cbb..72b4237 100644
--- a/plugins-unmaintained/Themes/Windows/informations.xml
+++ b/plugins-unmaintained/Themes/Windows/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[Windows dialog for Ultracopier, to have same copy dialog than windows vista/7/8]]></description>
<description xml:lang="fr"><![CDATA[Dialogue de Windows pour Ultracopier, pour avoir une boite de dialogue pour la copie comme windows vista/7/8]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>Windows</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/CopyEngine/README.md b/plugins/CopyEngine/README.md
index 317a7e4..317a7e4 100644..100755
--- a/plugins/CopyEngine/README.md
+++ b/plugins/CopyEngine/README.md
diff --git a/plugins/CopyEngine/Random/CopyEngine.cpp b/plugins/CopyEngine/Random/CopyEngine.cpp
new file mode 100755
index 0000000..662fb5b
--- /dev/null
+++ b/plugins/CopyEngine/Random/CopyEngine.cpp
@@ -0,0 +1,253 @@
+/** \file copyEngine.cpp
+\brief Define the copy engine
+\author alpha_one_x86 */
+
+#include "CopyEngine.h"
+#include "../../../interface/PluginInterface_CopyEngine.h"
+#include <QCoreApplication>
+
+CopyEngine::CopyEngine()
+{
+ timer=new QTimer();
+ connect(timer,&QTimer::timeout,this,&CopyEngine::timerSlot);
+ timer->start(1000);
+ send=false;
+}
+
+CopyEngine::~CopyEngine()
+{
+}
+
+//to send the options panel
+bool CopyEngine::getOptionsEngine(QWidget * tempWidget)
+{
+ (void)tempWidget;
+ return true;
+}
+
+//to have interface widget to do modal dialog
+void CopyEngine::setInterfacePointer(QWidget * uiinterface)
+{
+ (void)uiinterface;
+ syncTransferList();
+}
+
+bool CopyEngine::haveSameSource(const std::vector<std::string> &)
+{
+ return false;
+}
+
+bool CopyEngine::haveSameDestination(const std::string &)
+{
+ return false;
+}
+
+bool CopyEngine::newCopy(const std::vector<std::string> &sources)
+{
+ (void)sources;
+ return true;
+}
+
+bool CopyEngine::newCopy(const std::vector<std::string> &sources,const std::string &destination)
+{
+ (void)sources;
+ (void)destination;
+ return true;
+}
+
+bool CopyEngine::newMove(const std::vector<std::string> &sources)
+{
+ (void)sources;
+ return true;
+}
+
+bool CopyEngine::newMove(const std::vector<std::string> &sources,const std::string &destination)
+{
+ (void)sources;
+ (void)destination;
+ return true;
+}
+
+void CopyEngine::newTransferList(const std::string &file)
+{
+ (void)file;
+}
+
+//because direct access to list thread into the main thread can't be do
+uint64_t CopyEngine::realByteTransfered()
+{
+ return rand()%200000000;
+}
+
+void CopyEngine::timerSlot()
+{
+ emit pushGeneralProgression(rand()%200000000,200000000);
+
+ {
+ std::vector<std::pair<uint64_t,uint32_t> > progressionList;
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(100, 2));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(1000, 2));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(10000, 2+ rand()%2));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(100000, 5+ rand()%3));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(1000000, 15+ rand()%3));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(10000000, 50+ rand()%10));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(100000000, 800+ rand()%100));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(1000000000, 6000+ rand()%500));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(10000000000, 50000+ rand()%1000));
+ emit doneTime(progressionList);
+ }
+
+ {
+ std::vector<Ultracopier::ProgressionItem> progressionList;
+ Ultracopier::ProgressionItem entry;
+ entry.currentRead=60*1024*1024+rand()%20*1024*1024;
+ entry.currentWrite=40*1024*1024+rand()%20*1024*1024;
+ entry.id=1;
+ entry.total=100*1024*1024;
+ progressionList.push_back(entry);
+ emit pushFileProgression(progressionList);
+ }
+}
+
+//speed limitation
+bool CopyEngine::supportSpeedLimitation() const
+{
+ return false;
+}
+
+/** \brief to sync the transfer list
+ * Used when the interface is changed, useful to minimize the memory size */
+void CopyEngine::syncTransferList()
+{
+ emit syncReady();
+ if(send)
+ return;
+ send=true;
+
+ emit actionInProgess(Ultracopier::Copying);
+
+ std::vector<Ultracopier::ReturnActionOnCopyList> actionsList;
+ Ultracopier::ReturnActionOnCopyList newAction;
+ newAction.type = Ultracopier::AddingItem;
+
+ newAction.addAction.id = 1;
+ newAction.addAction.sourceFullPath = "/folder1/file.iso";
+ newAction.addAction.sourceFileName = "file.iso";
+ newAction.addAction.destinationFullPath = "/dest/folder1/file.iso";
+ newAction.addAction.destinationFileName = "file.iso";
+ newAction.addAction.size = 100*1024*1024;
+ newAction.addAction.mode = Ultracopier::CopyMode::Copy;
+ actionsList.push_back(newAction);
+
+ newAction.addAction.id = 2;
+ newAction.addAction.sourceFullPath = "/file.mp3";
+ newAction.addAction.sourceFileName = "file.mp3";
+ newAction.addAction.destinationFullPath = "/dest/file.mp3";
+ newAction.addAction.destinationFileName = "file.mp3";
+ newAction.addAction.size = 10*1024*1024;
+ newAction.addAction.mode = Ultracopier::CopyMode::Copy;
+ actionsList.push_back(newAction);
+
+ newAction.addAction.id = 3;
+ newAction.addAction.sourceFullPath = "/file.mp4";
+ newAction.addAction.sourceFileName = "file.mp4";
+ newAction.addAction.destinationFullPath = "/dest/file.mp4";
+ newAction.addAction.destinationFileName = "file.mp4";
+ newAction.addAction.size = 50*1024*1024;
+ newAction.addAction.mode = Ultracopier::CopyMode::Copy;
+ actionsList.push_back(newAction);
+
+ newAction.addAction.id = 1;
+ newAction.addAction.sourceFullPath = "/folder1/file.iso";
+ newAction.addAction.sourceFileName = "file.iso";
+ newAction.addAction.destinationFullPath = "/dest/folder1/file.iso";
+ newAction.addAction.destinationFileName = "file.iso";
+ newAction.addAction.size = 100*1024*1024;
+ newAction.addAction.mode = Ultracopier::CopyMode::Copy;
+ newAction.type = Ultracopier::PreOperation;
+ actionsList.push_back(newAction);
+ newAction.type = Ultracopier::Transfer;
+ actionsList.push_back(newAction);
+
+ emit newActionOnList(actionsList);
+}
+
+bool CopyEngine::userAddFolder(const Ultracopier::CopyMode &mode)
+{
+ (void)mode;
+ return true;
+}
+
+bool CopyEngine::userAddFile(const Ultracopier::CopyMode &mode)
+{
+ (void)mode;
+ return true;
+}
+
+void CopyEngine::pause()
+{
+}
+
+void CopyEngine::resume()
+{
+}
+
+void CopyEngine::skip(const uint64_t &id)
+{
+ (void)id;
+}
+
+void CopyEngine::cancel()
+{
+ emit canBeDeleted();
+}
+
+void CopyEngine::removeItems(const std::vector<uint64_t> &ids)
+{
+ (void)ids;
+}
+
+void CopyEngine::moveItemsOnTop(const std::vector<uint64_t> &ids)
+{
+ (void)ids;
+}
+
+void CopyEngine::moveItemsUp(const std::vector<uint64_t> &ids)
+{
+ (void)ids;
+}
+
+void CopyEngine::moveItemsDown(const std::vector<uint64_t> &ids)
+{
+ (void)ids;
+}
+
+void CopyEngine::moveItemsOnBottom(const std::vector<uint64_t> &ids)
+{
+ (void)ids;
+}
+
+/** \brief give the forced mode, to export/import transfer list */
+void CopyEngine::forceMode(const Ultracopier::CopyMode &mode)
+{
+ (void)mode;
+}
+
+void CopyEngine::exportTransferList()
+{
+}
+
+void CopyEngine::importTransferList()
+{
+}
+
+bool CopyEngine::setSpeedLimitation(const int64_t &speedLimitation)
+{
+ (void)speedLimitation;
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"maxSpeed: "+std::to_string(speedLimitation));
+ return false;
+}
+
+void CopyEngine::exportErrorIntoTransferList()
+{
+}
diff --git a/plugins/CopyEngine/Random/CopyEngine.h b/plugins/CopyEngine/Random/CopyEngine.h
new file mode 100755
index 0000000..2da5da5
--- /dev/null
+++ b/plugins/CopyEngine/Random/CopyEngine.h
@@ -0,0 +1,128 @@
+/** \file copyEngine.h
+\brief Define the copy engine
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include "../../../interface/PluginInterface_CopyEngine.h"
+
+#ifndef COPY_ENGINE_H
+#define COPY_ENGINE_H
+
+#include <QTimer>
+
+namespace Ui {
+ class copyEngineOptions;
+}
+
+/// \brief the implementation of copy engine plugin, manage directly few stuff, else pass to ListThread class.
+class CopyEngine : public PluginInterface_CopyEngine
+{
+ Q_OBJECT
+public:
+ CopyEngine();
+ ~CopyEngine();
+ void exportErrorIntoTransferList() override;
+public:
+ /** \brief to send the options panel
+ * \return return false if have not the options
+ * \param tempWidget the widget to generate on it the options */
+ bool getOptionsEngine(QWidget * tempWidget) override;
+ /** \brief to have interface widget to do modal dialog
+ * \param interface to have the widget of the interface, useful for modal dialog */
+ void setInterfacePointer(QWidget * uiinterface) override;
+ //return empty if multiple
+ /** \brief compare the current sources of the copy, with the passed arguments
+ * \param sources the sources list to compares with the current sources list
+ * \return true if have same sources, else false (or empty) */
+ bool haveSameSource(const std::vector<std::string> &sources) override;
+ /** \brief compare the current destination of the copy, with the passed arguments
+ * \param destination the destination to compares with the current destination
+ * \return true if have same destination, else false (or empty) */
+ bool haveSameDestination(const std::string &destination) override;
+ //external soft like file browser have send copy/move list to do
+ /** \brief send copy without destination, ask the destination
+ * \param sources the sources list to copy
+ * \return true if the copy have been accepted */
+ bool newCopy(const std::vector<std::string> &sources) override;
+ /** \brief send copy with destination
+ * \param sources the sources list to copy
+ * \param destination the destination to copy
+ * \return true if the copy have been accepted */
+ bool newCopy(const std::vector<std::string> &sources,const std::string &destination) override;
+ /** \brief send move without destination, ask the destination
+ * \param sources the sources list to move
+ * \return true if the move have been accepted */
+ bool newMove(const std::vector<std::string> &sources) override;
+ /** \brief send move without destination, ask the destination
+ * \param sources the sources list to move
+ * \param destination the destination to move
+ * \return true if the move have been accepted */
+ bool newMove(const std::vector<std::string> &sources,const std::string &destination) override;
+ /** \brief send the new transfer list
+ * \param file the transfer list */
+ void newTransferList(const std::string &file) override;
+
+ /** \brief to get byte read, use by Ultracopier for the speed calculation
+ * real size transfered to right speed calculation */
+ uint64_t realByteTransfered() override;
+ /** \brief support speed limitation */
+ bool supportSpeedLimitation() const override;
+
+ /** \brief to set drives detected
+ * specific to this copy engine */
+
+ /** \brief to sync the transfer list
+ * Used when the interface is changed, useful to minimize the memory size */
+ void syncTransferList() override;
+public slots:
+ //user ask ask to add folder (add it with interface ask source/destination)
+ /** \brief add folder called on the interface
+ * Used by manual adding */
+ bool userAddFolder(const Ultracopier::CopyMode &mode) override;
+ /** \brief add file called on the interface
+ * Used by manual adding */
+ bool userAddFile(const Ultracopier::CopyMode &mode) override;
+ //action on the copy
+ /// \brief put the transfer in pause
+ void pause() override;
+ /// \brief resume the transfer
+ void resume() override;
+ /** \brief skip one transfer entry
+ * \param id id of the file to remove */
+ void skip(const uint64_t &id) override;
+ /// \brief cancel all the transfer
+ void cancel() override;
+ //edit the transfer list
+ /** \brief remove the selected item
+ * \param ids ids is the id list of the selected items */
+ void removeItems(const std::vector<uint64_t> &ids) override;
+ /** \brief move on top of the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsOnTop(const std::vector<uint64_t> &ids) override;
+ /** \brief move up the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsUp(const std::vector<uint64_t> &ids) override;
+ /** \brief move down the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsDown(const std::vector<uint64_t> &ids) override;
+ /** \brief move on bottom of the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsOnBottom(const std::vector<uint64_t> &ids) override;
+
+ /** \brief give the forced mode, to export/import transfer list */
+ void forceMode(const Ultracopier::CopyMode &mode) override;
+ /// \brief export the transfer list into a file
+ void exportTransferList() override;
+ /// \brief import the transfer list into a file
+ void importTransferList() override;
+
+ /** \brief to set the speed limitation
+ * -1 if not able, 0 if disabled */
+ bool setSpeedLimitation(const int64_t &speedLimitation) override;
+private:
+ bool send;
+ QTimer *timer;
+ void timerSlot();
+};
+
+#endif // COPY_ENGINE_H
diff --git a/plugins/CopyEngine/Random/CopyEngine.pro b/plugins/CopyEngine/Random/CopyEngine.pro
new file mode 100755
index 0000000..f65ce88
--- /dev/null
+++ b/plugins/CopyEngine/Random/CopyEngine.pro
@@ -0,0 +1,26 @@
+CONFIG += c++11
+QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
+mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
+
+QT += widgets xml
+DEFINES += UNICODE _UNICODE
+TEMPLATE = lib
+CONFIG += plugin
+
+HEADERS += \
+ $$PWD/../../../interface/PluginInterface_CopyEngine.h \
+ $$PWD/../../../interface/OptionInterface.h \
+ $$PWD/../../../interface/FacilityInterface.h \
+ $$PWD/../../../cpp11addition.h \
+ $$PWD/CopyEngine.h \
+ $$PWD/CopyEngineFactory.h
+SOURCES += \
+ $$PWD/../../../cpp11addition.cpp \
+ $$PWD/../../../cpp11additionstringtointcpp.cpp \
+ $$PWD/CopyEngine.cpp \
+ $$PWD/CopyEngineFactory.cpp
+TARGET = $$qtLibraryTarget(copyEngine)
+
+win32 {
+ LIBS += -ladvapi32
+}
diff --git a/plugins/CopyEngine/Random/CopyEngineFactory.cpp b/plugins/CopyEngine/Random/CopyEngineFactory.cpp
new file mode 100755
index 0000000..8fe5ad6
--- /dev/null
+++ b/plugins/CopyEngine/Random/CopyEngineFactory.cpp
@@ -0,0 +1,78 @@
+/** \file factory.cpp
+\brief Define the factory to create new instance
+\author alpha_one_x86 */
+
+#include "../../../cpp11addition.h"
+#include "CopyEngineFactory.h"
+
+CopyEngineFactory::CopyEngineFactory()
+{
+}
+
+CopyEngineFactory::~CopyEngineFactory()
+{
+}
+
+PluginInterface_CopyEngine * CopyEngineFactory::getInstance()
+{
+ CopyEngine *realObject=new CopyEngine();
+ return realObject;
+}
+
+void CopyEngineFactory::setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath,
+ FacilityInterface * facilityInterface,const bool &portableVersion)
+{
+ (void)options;
+ (void)writePath;
+ (void)pluginPath;
+ (void)facilityInterface;
+ (void)portableVersion;
+}
+
+std::vector<std::string> CopyEngineFactory::supportedProtocolsForTheSource() const
+{
+ std::vector<std::string> l;
+ l.push_back("file");
+ return l;
+}
+
+std::vector<std::string> CopyEngineFactory::supportedProtocolsForTheDestination() const
+{
+ std::vector<std::string> l;
+ l.push_back("file");
+ return l;
+}
+
+Ultracopier::CopyType CopyEngineFactory::getCopyType()
+{
+ return Ultracopier::FileAndFolder;
+}
+
+Ultracopier::TransferListOperation CopyEngineFactory::getTransferListOperation()
+{
+ return Ultracopier::TransferListOperation_ImportExport;
+}
+
+bool CopyEngineFactory::canDoOnlyCopy() const
+{
+ return false;
+}
+
+void CopyEngineFactory::resetOptions()
+{
+}
+
+QWidget * CopyEngineFactory::options()
+{
+ return nullptr;
+}
+
+/// \brief to get if have pause
+bool CopyEngineFactory::havePause()
+{
+ return false;
+}
+
+void CopyEngineFactory::newLanguageLoaded()
+{
+}
diff --git a/plugins/CopyEngine/Random/CopyEngineFactory.h b/plugins/CopyEngine/Random/CopyEngineFactory.h
new file mode 100755
index 0000000..b1bad6a
--- /dev/null
+++ b/plugins/CopyEngine/Random/CopyEngineFactory.h
@@ -0,0 +1,58 @@
+/** \file factory.h
+\brief Define the factory to create new instance
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include <QObject>
+#include <QList>
+#include <QStringList>
+#include <QFileInfo>
+#include <QProcess>
+#include <QTimer>
+
+#include "../../../interface/PluginInterface_CopyEngine.h"
+#include "CopyEngine.h"
+
+#ifndef FACTORY_H
+#define FACTORY_H
+
+namespace Ui {
+ class copyEngineOptions;
+}
+
+/** \brief to generate copy engine instance */
+class CopyEngineFactory : public PluginInterface_CopyEngineFactory
+{
+ Q_OBJECT
+ #ifndef ULTRACOPIER_PLUGIN_ALL_IN_ONE_DIRECT
+ Q_PLUGIN_METADATA(IID "first-world.info.ultracopier.PluginInterface.CopyEngineFactory/2.0.0.0" FILE "plugin.json")
+ Q_INTERFACES(PluginInterface_CopyEngineFactory)
+ #endif
+public:
+ CopyEngineFactory();
+ ~CopyEngineFactory();
+ /// \brief to return the instance of the copy engine
+ PluginInterface_CopyEngine * getInstance();
+ /// \brief set the resources, to store options, to have facilityInterface
+ void setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath,FacilityInterface * facilityInterface,const bool &portableVersion) override;
+ //get mode allowed
+ /// \brief define if can copy file, folder or both
+ Ultracopier::CopyType getCopyType() override;
+ /// \brief to return which kind of transfer list operation is supported
+ Ultracopier::TransferListOperation getTransferListOperation() override;
+ /// \brief define if can only copy, or copy and move
+ bool canDoOnlyCopy() const override;
+ /// \brief to get the supported protocols for the source
+ std::vector<std::string> supportedProtocolsForTheSource() const override;
+ /// \brief to get the supported protocols for the destination
+ std::vector<std::string> supportedProtocolsForTheDestination() const override;
+ /// \brief to get the options of the copy engine
+ QWidget * options() override;
+ /// \brief to get if have pause
+ bool havePause() override;
+public slots:
+ void resetOptions() override;
+ void newLanguageLoaded() override;
+};
+
+#endif // FACTORY_H
diff --git a/plugins/CopyEngine/Random/README.md b/plugins/CopyEngine/Random/README.md
new file mode 100755
index 0000000..a15b943
--- /dev/null
+++ b/plugins/CopyEngine/Random/README.md
@@ -0,0 +1,3 @@
+# Copy Engine: Ultracopier
+
+This is the default copy engine.
diff --git a/plugins/CopyEngine/Random/informations.xml b/plugins/CopyEngine/Random/informations.xml
new file mode 100755
index 0000000..490980f
--- /dev/null
+++ b/plugins/CopyEngine/Random/informations.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package>
+ <title xml:lang="en"><![CDATA[Random copy engine]]></title><!-- english is required -->
+ <!-- What kind of plugin this is -->
+ <category>CopyEngine</category>
+ <!-- Who wrote this plugin -->
+ <author><![CDATA[BRULE Herman, alpha_one_x86 (alpha_one_x86@first-world.info)]]></author>
+ <!-- URL of page or site for this plugin (may provide additional information, bug reports, feature requests). -->
+ <website xml:lang="en"><![CDATA[http://ultracopier.first-world.info/]]></website><!-- not required -->
+ <website xml:lang="fr"><![CDATA[http://ultracopier-fr.first-world.info/]]></website><!-- not required -->
+ <!-- the date-time format should be in timestamps format -->
+ <pubDate>1287496800</pubDate>
+ <!-- the architecture code of this plugin, found PlatformMacro.h into ultracopier source -->
+ <architecture>windows-x86</architecture>
+ <!-- Detailed description -->
+ <description xml:lang="en"><![CDATA[TODO]]></description>
+ <!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
+ <version>2.2.4.4</version>
+ <!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
+ <name>Random</name>
+ <!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
+ <dependencies><![CDATA[
+ ]]></dependencies>
+</package>
diff --git a/plugins/CopyEngine/Random/plugin.json b/plugins/CopyEngine/Random/plugin.json
new file mode 100755
index 0000000..9e26dfe
--- /dev/null
+++ b/plugins/CopyEngine/Random/plugin.json
@@ -0,0 +1 @@
+{} \ No newline at end of file
diff --git a/plugins/CopyEngine/Rsync/CopyEngine.pro b/plugins/CopyEngine/Rsync/CopyEngine.pro
new file mode 100755
index 0000000..9728dc0
--- /dev/null
+++ b/plugins/CopyEngine/Rsync/CopyEngine.pro
@@ -0,0 +1,2 @@
+include($$PWD/../Ultracopier/Ultracopier.pro)
+DEFINES += ULTRACOPIER_PLUGIN_RSYNC
diff --git a/plugins/CopyEngine/Rsync/README.md b/plugins/CopyEngine/Rsync/README.md
index 94452a4..94452a4 100644..100755
--- a/plugins/CopyEngine/Rsync/README.md
+++ b/plugins/CopyEngine/Rsync/README.md
diff --git a/plugins/CopyEngine/Rsync/Rsync.pro b/plugins/CopyEngine/Rsync/Rsync.pro
index e525f27..e525f27 100644..100755
--- a/plugins/CopyEngine/Rsync/Rsync.pro
+++ b/plugins/CopyEngine/Rsync/Rsync.pro
diff --git a/plugins/CopyEngine/Rsync/informations.xml b/plugins/CopyEngine/Rsync/informations.xml
index 990809e..5ded350 100644..100755
--- a/plugins/CopyEngine/Rsync/informations.xml
+++ b/plugins/CopyEngine/Rsync/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[Rsync copy engine, variant of the official copy engine to provide simple way to do backups]]></description>
<description xml:lang="fr"><![CDATA[Moteur de copie rsync, variante du moteur de copie officiel pour fournir une maniére simple de faire des backups]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>Rsync</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/CopyEngine/Ultracopier-Spec/CallBackEventLoop.h b/plugins/CopyEngine/Ultracopier-Spec/CallBackEventLoop.h
new file mode 100755
index 0000000..811bf86
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/CallBackEventLoop.h
@@ -0,0 +1,15 @@
+#ifndef CALLBACKEVENTLOOP_H
+#define CALLBACKEVENTLOOP_H
+
+#include <QObject>
+#include "Variable.h"
+
+#ifdef POSIXFILEMANIP
+class CallBackEventLoop
+{
+public:
+ virtual void callBack() = 0;
+};
+#endif
+
+#endif // CALLBACKEVENTLOOP_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/CompilerInfo.h b/plugins/CopyEngine/Ultracopier-Spec/CompilerInfo.h
new file mode 100755
index 0000000..84625b9
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/CompilerInfo.h
@@ -0,0 +1 @@
+#include "../../../CompilerInfo.h"
diff --git a/plugins/CopyEngine/Ultracopier-Spec/CopyEngine-collision-and-error.cpp b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine-collision-and-error.cpp
new file mode 100755
index 0000000..fcf43ff
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine-collision-and-error.cpp
@@ -0,0 +1,719 @@
+/** \file copyEngine.cpp
+\brief Define the copy engine
+\author alpha_one_x86 */
+
+#include "CopyEngine.h"
+#include "FolderExistsDialog.h"
+#include "DiskSpace.h"
+
+//dialog message
+/// \note Can be call without queue because all call will be serialized
+void CopyEngine::fileAlreadyExistsSlot(INTERNALTYPEPATH source,INTERNALTYPEPATH destination,bool isSame,TransferThreadAsync * thread)
+{
+ fileAlreadyExists(source,destination,isSame,thread);
+}
+
+/// \note Can be call without queue because all call will be serialized
+void CopyEngine::errorOnFileSlot(INTERNALTYPEPATH fileInfo,std::string errorString,TransferThreadAsync * thread,const ErrorType &errorType)
+{
+ errorOnFile(fileInfo,errorString,thread,errorType);
+}
+
+/// \note Can be call without queue because all call will be serialized
+void CopyEngine::folderAlreadyExistsSlot(INTERNALTYPEPATH source,INTERNALTYPEPATH destination,bool isSame,ScanFileOrFolder * thread)
+{
+ folderAlreadyExists(source,destination,isSame,thread);
+}
+
+/// \note Can be call without queue because all call will be serialized
+void CopyEngine::errorOnFolderSlot(INTERNALTYPEPATH fileInfo,std::string errorString,ScanFileOrFolder * thread,ErrorType errorType)
+{
+ errorOnFolder(fileInfo,errorString,thread,errorType);
+}
+
+//mkpath event
+void CopyEngine::mkPathErrorOnFolderSlot(INTERNALTYPEPATH folder,std::string error,ErrorType errorType)
+{
+ mkPathErrorOnFolder(folder,error,errorType);
+}
+
+/// \note Can be call without queue because all call will be serialized
+void CopyEngine::fileAlreadyExists(INTERNALTYPEPATH source,INTERNALTYPEPATH destination,bool isSame,TransferThreadAsync * thread,bool isCalledByShowOneNewDialog)
+{
+ if(stopIt)
+ return;
+ if(thread==NULL)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to locate the thread");
+ return;
+ }
+ //load the action
+ if(isSame)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file is same: "+TransferThread::internalStringTostring(source));
+ FileExistsAction tempFileExistsAction=alwaysDoThisActionForFileExists;
+ if(tempFileExistsAction==FileExists_Overwrite || tempFileExistsAction==FileExists_OverwriteIfNewer || tempFileExistsAction==FileExists_OverwriteIfNotSameMdate || tempFileExistsAction==FileExists_OverwriteIfOlder)
+ tempFileExistsAction=FileExists_NotSet;
+ switch(tempFileExistsAction)
+ {
+ case FileExists_Skip:
+ case FileExists_Rename:
+ thread->setFileExistsAction(tempFileExistsAction);
+ break;
+ default:
+ if(dialogIsOpen)
+ {
+ alreadyExistsQueueItem newItem;
+ newItem.source=source;
+ newItem.destination=destination;
+ newItem.isSame=isSame;
+ newItem.transfer=thread;
+ newItem.scan=NULL;
+ alreadyExistsQueue.push_back(newItem);
+ return;
+ }
+ dialogIsOpen=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
+ FileIsSameDialog dialog(uiinterface,source,firstRenamingRule,otherRenamingRule,facilityEngine);
+ emit isInPause(true);
+ dialog.exec();/// \bug crash when external close
+ FileExistsAction newAction=dialog.getAction();
+ emit isInPause(false);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction));
+ if(newAction==FileExists_Cancel)
+ {
+ emit cancelAll();
+ return;
+ }
+ if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileExists)
+ {
+ alwaysDoThisActionForFileExists=newAction;
+ listThread->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists);
+ if(uiIsInstalled)
+ switch(newAction)
+ {
+ default:
+ case FileExists_Skip:
+ ui->comboBoxFileCollision->setCurrentIndex(1);
+ break;
+ case FileExists_Rename:
+ ui->comboBoxFileCollision->setCurrentIndex(6);
+ break;
+ }
+ }
+ if(dialog.getAlways() || newAction!=FileExists_Rename)
+ thread->setFileExistsAction(newAction);
+ else
+ thread->setFileRename(dialog.getNewName());
+ dialogIsOpen=false;
+ if(!isCalledByShowOneNewDialog)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit queryOneNewDialog()");
+ emit queryOneNewDialog();
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"NOT emit queryOneNewDialog(), !isCalledByShowOneNewDialog");
+ return;
+ break;
+ }
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file already exists: "+TransferThread::internalStringTostring(source)+
+ ", destination: "+TransferThread::internalStringTostring(destination));
+ FileExistsAction tempFileExistsAction=alwaysDoThisActionForFileExists;
+ switch(tempFileExistsAction)
+ {
+ case FileExists_Skip:
+ case FileExists_Rename:
+ case FileExists_Overwrite:
+ case FileExists_OverwriteIfNewer:
+ case FileExists_OverwriteIfOlder:
+ case FileExists_OverwriteIfNotSameMdate:
+ case FileExists_OverwriteIfNotSameSize:
+ case FileExists_OverwriteIfNotSameSizeAndDate:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"always do this action: "+std::to_string(tempFileExistsAction));
+ thread->setFileExistsAction(tempFileExistsAction);
+ break;
+ default:
+ if(dialogIsOpen)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"dialog open, put in queue: "+
+ TransferThread::internalStringTostring(source)+" "+
+ TransferThread::internalStringTostring(destination)
+ );
+ alreadyExistsQueueItem newItem;
+ newItem.source=source;
+ newItem.destination=destination;
+ newItem.isSame=isSame;
+ newItem.transfer=thread;
+ newItem.scan=NULL;
+ alreadyExistsQueue.push_back(newItem);
+ return;
+ }
+ dialogIsOpen=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
+ FileExistsDialog dialog(uiinterface,source,destination,firstRenamingRule,otherRenamingRule,facilityEngine);
+ emit isInPause(true);
+ dialog.exec();/// \bug crash when external close
+ FileExistsAction newAction=dialog.getAction();
+ emit isInPause(false);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction));
+ if(newAction==FileExists_Cancel)
+ {
+ emit cancelAll();
+ return;
+ }
+ if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileExists)
+ {
+ alwaysDoThisActionForFileExists=newAction;
+ listThread->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists);
+ if(uiIsInstalled)
+ switch(newAction)
+ {
+ default:
+ case FileExists_Skip:
+ ui->comboBoxFileCollision->setCurrentIndex(1);
+ break;
+ case FileExists_Rename:
+ ui->comboBoxFileCollision->setCurrentIndex(6);
+ break;
+ case FileExists_Overwrite:
+ ui->comboBoxFileCollision->setCurrentIndex(2);
+ break;
+ case FileExists_OverwriteIfNotSameMdate:
+ ui->comboBoxFileCollision->setCurrentIndex(3);
+ break;
+ case FileExists_OverwriteIfNewer:
+ ui->comboBoxFileCollision->setCurrentIndex(4);
+ break;
+ case FileExists_OverwriteIfOlder:
+ ui->comboBoxFileCollision->setCurrentIndex(5);
+ break;
+ case FileExists_OverwriteIfNotSameSize:
+ ui->comboBoxFileCollision->setCurrentIndex(7);
+ break;
+ case FileExists_OverwriteIfNotSameSizeAndDate:
+ ui->comboBoxFileCollision->setCurrentIndex(8);
+ break;
+ }
+ }
+ if(dialog.getAlways() || newAction!=FileExists_Rename)
+ thread->setFileExistsAction(newAction);
+ else
+ thread->setFileRename(dialog.getNewName());
+ dialogIsOpen=false;
+ if(!isCalledByShowOneNewDialog)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit queryOneNewDialog()");
+ emit queryOneNewDialog();
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"NOT emit queryOneNewDialog(), !isCalledByShowOneNewDialog");
+ return;
+ break;
+ }
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop");
+}
+
+void CopyEngine::haveNeedPutAtBottom(bool needPutAtBottom, const INTERNALTYPEPATH &fileInfo, const std::string &errorString,TransferThreadAsync *thread,const ErrorType &errorType)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ if(!needPutAtBottom)
+ {
+ alwaysDoThisActionForFileError=FileError_NotSet;
+ if(uiIsInstalled)
+ ui->comboBoxFileError->setCurrentIndex(0);
+ errorQueueItem newItem;
+ newItem.errorString=errorString;
+ newItem.inode=fileInfo;
+ newItem.mkPath=false;
+ newItem.rmPath=false;
+ newItem.scan=NULL;
+ newItem.transfer=thread;
+ newItem.errorType=errorType;
+ errorQueue.push_back(newItem);
+ showOneNewDialog();
+ }
+}
+
+void CopyEngine::missingDiskSpace(std::vector<Diskspace> list)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
+ DiskSpace dialog(facilityEngine,list,uiinterface);
+ emit isInPause(true);
+ dialog.exec();/// \bug crash when external close
+ bool ok=dialog.getAction();
+ emit isInPause(false);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"cancel: "+std::to_string(ok));
+ if(!ok)
+ emit cancelAll();
+ else
+ listThread->autoStartIfNeeded();
+}
+
+/// \note Can be call without queue because all call will be serialized
+void CopyEngine::errorOnFile(INTERNALTYPEPATH fileInfo,std::string errorString,TransferThreadAsync * thread,const ErrorType &errorType,bool isCalledByShowOneNewDialog)
+{
+ if(stopIt)
+ return;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file have error: "+TransferThread::internalStringTostring(fileInfo)+
+ ", error: "+errorString);
+ if(thread==NULL)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to locate the thread");
+ return;
+ }
+ //load the action
+ FileErrorAction tempFileErrorAction=alwaysDoThisActionForFileError;
+ switch(tempFileErrorAction)
+ {
+ case FileError_Skip:
+ thread->skip();
+ return;
+ case FileError_Retry:
+ thread->retryAfterError();
+ return;
+ case FileError_PutToEndOfTheList:
+ errorPutAtEnd++;
+ emit getNeedPutAtBottom(fileInfo,errorString,thread,errorType);
+ if(errorPutAtEnd>listThread->actionToDoListInode.size() || listThread->actionToDoListInode.size()==0)
+ {
+ alwaysDoThisActionForFileError=FileError_NotSet;
+ errorPutAtEnd=0;
+ }
+ return;
+ case FileError_Cancel:
+ return;
+ default:
+ if(dialogIsOpen)
+ {
+ errorQueueItem newItem;
+ newItem.errorString=errorString;
+ newItem.inode=fileInfo;
+ newItem.mkPath=false;
+ newItem.rmPath=false;
+ newItem.scan=NULL;
+ newItem.transfer=thread;
+ newItem.errorType=errorType;
+ errorQueue.push_back(newItem);
+ return;
+ }
+ dialogIsOpen=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
+
+ uint64_t size=0;
+ uint64_t mdate=0;
+ #ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA sourceW;
+ if(GetFileAttributesExW(fileInfo.c_str(),GetFileExInfoStandard,&sourceW))
+ {
+ mdate=sourceW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=sourceW.ftLastWriteTime.dwLowDateTime;
+ size=sourceW.nFileSizeHigh;
+ size<<=32;
+ size|=sourceW.nFileSizeLow;
+ }
+ #else
+ struct stat source_statbuf;
+ #ifdef Q_OS_UNIX
+ if(lstat(TransferThread::internalStringTostring(fileInfo).c_str(), &source_statbuf)==0)
+ #else
+ if(stat(TransferThread::internalStringTostring(fileInfo).c_str(), &source_statbuf)==0)
+ #endif
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ mdate=source_statbuf.st_mtimespec.tv_sec;
+ #else
+ mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtim);
+ #endif
+ #else
+ mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtime);
+ #endif
+ size=source_statbuf.st_size;
+ }
+ #endif
+
+ emit error(TransferThread::internalStringTostring(fileInfo),size,mdate,errorString);
+ FileErrorDialog dialog(uiinterface,fileInfo,errorString,errorType,facilityEngine);
+ emit isInPause(true);
+ dialog.exec();/// \bug crash when external close
+ FileErrorAction newAction=dialog.getAction();
+ emit isInPause(false);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction));
+ if(newAction==FileError_Cancel)
+ {
+ emit cancelAll();
+ return;
+ }
+ if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileError)
+ {
+ alwaysDoThisActionForFileError=newAction;
+ if(uiIsInstalled)
+ switch(newAction)
+ {
+ default:
+ case FileError_Skip:
+ ui->comboBoxFileError->setCurrentIndex(1);
+ break;
+ case FileError_PutToEndOfTheList:
+ ui->comboBoxFileError->setCurrentIndex(2);
+ break;
+ }
+ }
+ switch(newAction)
+ {
+ case FileError_Skip:
+ thread->skip();
+ break;
+ case FileError_Retry:
+ thread->retryAfterError();
+ break;
+ case FileError_PutToEndOfTheList:
+ errorPutAtEnd++;
+ thread->putAtBottom();
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"file error action wrong");
+ break;
+ }
+ dialogIsOpen=false;
+ if(!isCalledByShowOneNewDialog)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit queryOneNewDialog()");
+ emit queryOneNewDialog();
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"isCalledByShowOneNewDialog==true then not show other dial");
+ return;
+ break;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop");
+}
+
+/// \note Can be call without queue because all call will be serialized
+void CopyEngine::folderAlreadyExists(INTERNALTYPEPATH source,INTERNALTYPEPATH destination,bool isSame,ScanFileOrFolder * thread,bool isCalledByShowOneNewDialog)
+{
+ if(stopIt)
+ return;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"folder already exists: "+TransferThread::internalStringTostring(source)+
+ ", destination: "+TransferThread::internalStringTostring(destination));
+ if(thread==NULL)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to locate the thread");
+ return;
+ }
+ //load the always action
+ FolderExistsAction tempFolderExistsAction=alwaysDoThisActionForFolderExists;
+ switch(tempFolderExistsAction)
+ {
+ case FolderExists_Skip:
+ case FolderExists_Rename:
+ case FolderExists_Merge:
+ thread->setFolderExistsAction(tempFolderExistsAction);
+ break;
+ default:
+ if(dialogIsOpen)
+ {
+ alreadyExistsQueueItem newItem;
+ newItem.source=source;
+ newItem.destination=destination;
+ newItem.isSame=isSame;
+ newItem.transfer=NULL;
+ newItem.scan=thread;
+ alreadyExistsQueue.push_back(newItem);
+ return;
+ }
+ dialogIsOpen=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
+ FolderExistsDialog dialog(uiinterface,source,isSame,destination,firstRenamingRule,otherRenamingRule);
+ dialog.exec();/// \bug crash when external close
+ FolderExistsAction newAction=dialog.getAction();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction));
+ if(newAction==FolderExists_Cancel)
+ {
+ emit cancelAll();
+ return;
+ }
+ if(dialog.getAlways() && newAction!=alwaysDoThisActionForFolderExists)
+ setComboBoxFolderCollision(newAction);
+ if(!dialog.getAlways() && newAction==FolderExists_Rename)
+ thread->setFolderExistsAction(newAction,dialog.getNewName());
+ else
+ thread->setFolderExistsAction(newAction);
+ dialogIsOpen=false;
+ if(!isCalledByShowOneNewDialog)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit queryOneNewDialog()");
+ emit queryOneNewDialog();
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"NOT emit queryOneNewDialog(), !isCalledByShowOneNewDialog");
+ return;
+ break;
+ }
+}
+
+/// \note Can be call without queue because all call will be serialized
+/// \todo all this part
+void CopyEngine::errorOnFolder(INTERNALTYPEPATH fileInfo, std::string errorString, ScanFileOrFolder * thread, ErrorType errorType, bool isCalledByShowOneNewDialog)
+{
+ if(stopIt)
+ return;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file have error: "+TransferThread::internalStringTostring(fileInfo)+", error: "+errorString);
+ if(thread==NULL)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to locate the thread");
+ return;
+ }
+ //load the always action
+ FileErrorAction tempFileErrorAction=alwaysDoThisActionForFolderError;
+ switch(tempFileErrorAction)
+ {
+ case FileError_Skip:
+ case FileError_Retry:
+ case FileError_PutToEndOfTheList:
+ thread->setFolderErrorAction(tempFileErrorAction);
+ break;
+ default:
+ if(dialogIsOpen)
+ {
+ errorQueueItem newItem;
+ newItem.errorString=errorString;
+ newItem.inode=fileInfo;
+ newItem.mkPath=false;
+ newItem.rmPath=false;
+ newItem.scan=thread;
+ newItem.transfer=NULL;
+ newItem.errorType=errorType;
+ errorQueue.push_back(newItem);
+ return;
+ }
+ dialogIsOpen=true;
+
+ uint64_t size=0;
+ uint64_t mdate=0;
+ #ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA sourceW;
+ if(GetFileAttributesExW(fileInfo.c_str(),GetFileExInfoStandard,&sourceW))
+ {
+ mdate=sourceW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=sourceW.ftLastWriteTime.dwLowDateTime;
+ size=sourceW.nFileSizeHigh;
+ size<<=32;
+ size|=sourceW.nFileSizeLow;
+ }
+ #else
+ struct stat source_statbuf;
+ #ifdef Q_OS_UNIX
+ if(lstat(TransferThread::internalStringTostring(fileInfo).c_str(), &source_statbuf)==0)
+ #else
+ if(stat(TransferThread::internalStringTostring(fileInfo).c_str(), &source_statbuf)==0)
+ #endif
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ mdate=source_statbuf.st_mtimespec.tv_sec;
+ #else
+ mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtim);
+ #endif
+ #else
+ mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtime);
+ #endif
+ size=source_statbuf.st_size;
+ }
+ #endif
+
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
+ emit error(TransferThread::internalStringTostring(fileInfo),size,mdate,errorString);
+ FileErrorDialog dialog(uiinterface,fileInfo,errorString,errorType,facilityEngine);
+ dialog.exec();/// \bug crash when external close
+ FileErrorAction newAction=dialog.getAction();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction));
+ if(newAction==FileError_Cancel)
+ {
+ emit cancelAll();
+ return;
+ }
+ if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileError)
+ {
+ setComboBoxFolderError(newAction);
+ alwaysDoThisActionForFolderError=newAction;
+ }
+ dialogIsOpen=false;
+ thread->setFolderErrorAction(newAction);
+ if(!isCalledByShowOneNewDialog)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit queryOneNewDialog()");
+ emit queryOneNewDialog();
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"NOT emit queryOneNewDialog(), !isCalledByShowOneNewDialog");
+ return;
+ break;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop");
+}
+
+// -----------------------------------------------------
+
+//mkpath event
+void CopyEngine::mkPathErrorOnFolder(INTERNALTYPEPATH folder, std::string errorString, const ErrorType &errorType, bool isCalledByShowOneNewDialog)
+{
+ if(stopIt)
+ return;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file have error: "+TransferThread::internalStringTostring(folder)+", error: "+errorString);
+ //load the always action
+ FileErrorAction tempFileErrorAction=alwaysDoThisActionForFolderError;
+ switch(tempFileErrorAction)
+ {
+ case FileError_Skip:
+ listThread->mkPathQueue.skip();
+ return;
+ case FileError_Retry:
+ listThread->mkPathQueue.retry();
+ return;
+ default:
+ if(dialogIsOpen)
+ {
+ errorQueueItem newItem;
+ newItem.errorString=errorString;
+ newItem.inode=folder;
+ newItem.mkPath=true;
+ newItem.rmPath=false;
+ newItem.scan=NULL;
+ newItem.transfer=NULL;
+ newItem.errorType=errorType;
+ errorQueue.push_back(newItem);
+ return;
+ }
+ dialogIsOpen=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
+
+ uint64_t size=0;
+ uint64_t mdate=0;
+ #ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA sourceW;
+ if(GetFileAttributesExW(folder.c_str(),GetFileExInfoStandard,&sourceW))
+ {
+ mdate=sourceW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=sourceW.ftLastWriteTime.dwLowDateTime;
+ size=sourceW.nFileSizeHigh;
+ size<<=32;
+ size|=sourceW.nFileSizeLow;
+ }
+ #else
+ struct stat source_statbuf;
+ #ifdef Q_OS_UNIX
+ if(lstat(TransferThread::internalStringTostring(folder).c_str(), &source_statbuf)==0)
+ #else
+ if(stat(TransferThread::internalStringTostring(folder).c_str(), &source_statbuf)==0)
+ #endif
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ mdate=source_statbuf.st_mtimespec.tv_sec;
+ #else
+ mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtim);
+ #endif
+ #else
+ mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtime);
+ #endif
+ size=source_statbuf.st_size;
+ }
+ #endif
+
+ emit error(TransferThread::internalStringTostring(folder),size,mdate,errorString);
+ FileErrorDialog dialog(uiinterface,folder,errorString,errorType,facilityEngine);
+ dialog.exec();/// \bug crash when external close
+ FileErrorAction newAction=dialog.getAction();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction));
+ if(newAction==FileError_Cancel)
+ {
+ emit cancelAll();
+ return;
+ }
+ if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileError)
+ {
+ setComboBoxFolderError(newAction);
+ alwaysDoThisActionForFolderError=newAction;
+ }
+ dialogIsOpen=false;
+ switch(newAction)
+ {
+ case FileError_Skip:
+ listThread->mkPathQueue.skip();
+ break;
+ case FileError_Retry:
+ listThread->mkPathQueue.retry();
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unknow switch case: "+std::to_string(newAction));
+ break;
+ }
+ if(!isCalledByShowOneNewDialog)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit queryOneNewDialog()");
+ emit queryOneNewDialog();
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"NOT emit queryOneNewDialog(), !isCalledByShowOneNewDialog");
+ return;
+ break;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop");
+}
+
+//show one new dialog if needed
+void CopyEngine::showOneNewDialog()
+{
+ if(stopIt)
+ return;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"alreadyExistsQueue.size(): "+std::to_string(alreadyExistsQueue.size()));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"errorQueue.size(): "+std::to_string(errorQueue.size()));
+ //reset to always show the dialog
+ dialogIsOpen=false;
+ int loop_size=alreadyExistsQueue.size();
+ while(loop_size>0)
+ {
+ if(alreadyExistsQueue.front().transfer!=NULL)
+ {
+ fileAlreadyExists(alreadyExistsQueue.front().source,
+ alreadyExistsQueue.front().destination,
+ alreadyExistsQueue.front().isSame,
+ alreadyExistsQueue.front().transfer,
+ true);
+ }
+ else if(alreadyExistsQueue.front().scan!=NULL)
+ folderAlreadyExists(alreadyExistsQueue.front().source,
+ alreadyExistsQueue.front().destination,
+ alreadyExistsQueue.front().isSame,
+ alreadyExistsQueue.front().scan,
+ true);
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"bug, no thread actived");
+ alreadyExistsQueue.erase(alreadyExistsQueue.cbegin());
+ loop_size--;
+ }
+ loop_size=errorQueue.size();
+ while(errorQueue.size()>0 && loop_size>0)
+ {
+ if(errorQueue.front().transfer!=NULL)
+ errorOnFile(errorQueue.front().inode,errorQueue.front().errorString,errorQueue.front().transfer,errorQueue.front().errorType,true);
+ else if(errorQueue.front().scan!=NULL)
+ errorOnFolder(errorQueue.front().inode,errorQueue.front().errorString,errorQueue.front().scan,errorQueue.front().errorType,true);
+ else if(errorQueue.front().mkPath)
+ mkPathErrorOnFolder(errorQueue.front().inode,errorQueue.front().errorString,errorQueue.front().errorType,true);
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"bug, no thread actived");
+ errorQueue.erase(errorQueue.cbegin());
+ loop_size--;
+ }
+ //no more to show then reset
+ dialogIsOpen=false;
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp
new file mode 100755
index 0000000..8ec21e1
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp
@@ -0,0 +1,1129 @@
+/** \file copyEngine.cpp
+\brief Define the copy engine
+\author alpha_one_x86 */
+
+#include <QFileDialog>
+#include <QMessageBox>
+#include <cmath>
+
+#include "CopyEngine.h"
+#include "FolderExistsDialog.h"
+#include "../../../interface/PluginInterface_CopyEngine.h"
+
+// The cmath header from MSVC does not contain round()
+#if (defined(_WIN64) || defined(_WIN32)) && defined(_MSC_VER)
+inline double round(double d) {
+ return floor( d + 0.5 );
+}
+#endif
+
+CopyEngine::CopyEngine(FacilityInterface * facilityEngine) :
+ listThread(NULL),
+ tempWidget(NULL),
+ ui(new Ui::copyEngineOptions()),
+ uiIsInstalled(false),
+ uiinterface(NULL),
+ filters(NULL),
+ renamingRules(NULL),
+ facilityEngine(NULL),
+ doRightTransfer(false),
+ keepDate(false),
+ followTheStrictOrder(false),
+ deletePartiallyTransferredFiles(false),
+ inodeThreads(0),
+ renameTheOriginalDestination(false),
+ moveTheWholeFolder(false),
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ rsync(false),
+ #endif
+ checkDestinationFolderExists(false),
+ mkFullPath(false),
+ checksum(false),
+ alwaysDoThisActionForFileExists(FileExistsAction::FileExists_NotSet),
+ alwaysDoThisActionForFileError(FileErrorAction::FileError_NotSet),
+ alwaysDoThisActionForFolderError(FileErrorAction::FileError_NotSet),
+ alwaysDoThisActionForFolderExists(FolderExistsAction::FolderExists_NotSet),
+ dialogIsOpen(false),
+ stopIt(false),
+ size_for_speed(0),
+ mode(Ultracopier::CopyMode::Copy),
+ forcedMode(false),
+ checkDiskSpace(false),
+ osBufferLimit(0),
+ errorPutAtEnd(0),
+ putAtBottom(0)
+{
+ listThread=new ListThread(facilityEngine);
+ this->facilityEngine = facilityEngine;
+ filters = NULL;
+ renamingRules = NULL;
+
+ uiinterface = NULL;
+ tempWidget = NULL;
+ uiIsInstalled = false;
+ dialogIsOpen = false;
+ renameTheOriginalDestination = false;
+ alwaysDoThisActionForFileExists = FileExists_NotSet;
+ alwaysDoThisActionForFileError = FileError_NotSet;
+ checkDestinationFolderExists = false;
+ stopIt = false;
+ size_for_speed = 0;
+ putAtBottom = 0;
+ forcedMode = false;
+ followTheStrictOrder = false;
+ deletePartiallyTransferredFiles = true;
+ inodeThreads = 16;
+ moveTheWholeFolder = true;
+
+ //implement the SingleShot in this class
+ //timerActionDone.setSingleShot(true);
+ timerActionDone.setInterval(ULTRACOPIER_PLUGIN_TIME_UPDATE_TRASNFER_LIST);
+ //timerProgression.setSingleShot(true);
+ timerProgression.setInterval(ULTRACOPIER_PLUGIN_TIME_UPDATE_PROGRESSION);
+
+ timerUpdateMount.setInterval(ULTRACOPIER_PLUGIN_TIME_UPDATE_MOUNT_MS);
+}
+
+CopyEngine::~CopyEngine()
+{
+ /*if(filters!=NULL)
+ delete filters;
+ if(renamingRules!=NULL)
+ delete renamingRules;
+ destroyed by the widget parent, here the interface
+ */
+ stopIt=true;
+ delete listThread;
+ delete ui;
+}
+
+void CopyEngine::connectTheSignalsSlots()
+{
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+ debugDialogWindow.show();
+ debugDialogWindow.copyEngine=this;
+ #endif
+ if(!connect(listThread,&ListThread::isInPause, this,&CopyEngine::isInPause, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect isInPause()");
+ if(!connect(listThread,&ListThread::actionInProgess, this,&CopyEngine::actionInProgess, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect actionInProgess()");
+ if(!connect(listThread,&ListThread::actionInProgess, this,&CopyEngine::newActionInProgess, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect actionInProgess() to slot");
+ if(!connect(listThread,&ListThread::newFolderListing, this,&CopyEngine::newFolderListing, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect newFolderListing()");
+ if(!connect(listThread,&ListThread::error, this,&CopyEngine::error, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect error()");
+ if(!connect(listThread,&ListThread::rmPath, this,&CopyEngine::rmPath, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect rmPath()");
+ if(!connect(listThread,&ListThread::mkPath, this,&CopyEngine::mkPath, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect mkPath()");
+ if(!connect(listThread,&ListThread::newActionOnList, this,&CopyEngine::newActionOnList, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect newActionOnList()");
+ if(!connect(listThread,&ListThread::doneTime, this,&CopyEngine::doneTime, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect doneTime()");
+ if(!connect(listThread,&ListThread::pushFileProgression, this,&CopyEngine::pushFileProgression, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect pushFileProgression()");
+ if(!connect(listThread,&ListThread::pushGeneralProgression, this,&CopyEngine::pushGeneralProgression, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect pushGeneralProgression()");
+ if(!connect(listThread,&ListThread::syncReady, this,&CopyEngine::syncReady, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect syncReady()");
+ if(!connect(listThread,&ListThread::canBeDeleted, this,&CopyEngine::canBeDeleted, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect canBeDeleted()");
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+ if(!connect(listThread,&ListThread::debugInformation, this,&CopyEngine::debugInformation, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect debugInformation()");
+ #endif
+
+ if(!connect(listThread,&ListThread::send_fileAlreadyExists, this,&CopyEngine::fileAlreadyExistsSlot, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_fileAlreadyExists()");
+ if(!connect(listThread,&ListThread::send_errorOnFile, this,&CopyEngine::errorOnFileSlot, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_errorOnFile()");
+ if(!connect(listThread,&ListThread::send_folderAlreadyExists, this,&CopyEngine::folderAlreadyExistsSlot, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_folderAlreadyExists()");
+ if(!connect(listThread,&ListThread::send_errorOnFolder, this,&CopyEngine::errorOnFolderSlot, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_errorOnFolder()");
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+ if(!connect(listThread,&ListThread::updateTheDebugInfo, this,&CopyEngine::updateTheDebugInfo, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect updateTheDebugInfo()");
+ #endif
+ if(!connect(listThread,&ListThread::errorTransferList, this,&CopyEngine::errorTransferList, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect errorTransferList()");
+ if(!connect(listThread,&ListThread::warningTransferList, this,&CopyEngine::warningTransferList, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect warningTransferList()");
+ if(!connect(listThread,&ListThread::mkPathErrorOnFolder, this,&CopyEngine::mkPathErrorOnFolderSlot, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect mkPathErrorOnFolder()");
+ if(!connect(listThread,&ListThread::send_realBytesTransfered, this,&CopyEngine::get_realBytesTransfered, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_realBytesTransfered()");
+
+ if(!connect(this,&CopyEngine::tryCancel, listThread,&ListThread::cancel, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect tryCancel()");
+ if(!connect(this,&CopyEngine::getNeedPutAtBottom, listThread,&ListThread::getNeedPutAtBottom, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect getNeedPutAtBottom()");
+ if(!connect(listThread,&ListThread::haveNeedPutAtBottom, this,&CopyEngine::haveNeedPutAtBottom, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect haveNeedPutAtBottom()");
+
+
+ if(!connect(this,&CopyEngine::signal_pause, listThread,&ListThread::pause, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_pause()");
+ if(!connect(this,&CopyEngine::signal_setSpeedLimitation, listThread,&ListThread::setSpeedLimitation, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect setSpeedLimitation()");
+ if(!connect(this,&CopyEngine::signal_exportErrorIntoTransferList,listThread,&ListThread::exportErrorIntoTransferList, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_exportErrorIntoTransferList()");
+ if(!connect(this,&CopyEngine::signal_resume, listThread,&ListThread::resume, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_resume()");
+ if(!connect(this,&CopyEngine::signal_skip, listThread,&ListThread::skip, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_skip()");
+ if(!connect(this,&CopyEngine::signal_setCollisionAction, listThread,&ListThread::setAlwaysFileExistsAction, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_setCollisionAction()");
+ if(!connect(this,&CopyEngine::signal_setFolderCollision, listThread,&ListThread::setFolderCollision, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_setFolderCollision()");
+ if(!connect(this,&CopyEngine::signal_removeItems, listThread,&ListThread::removeItems, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_removeItems()");
+ if(!connect(this,&CopyEngine::signal_moveItemsOnTop, listThread,&ListThread::moveItemsOnTop, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_moveItemsOnTop()");
+ if(!connect(this,&CopyEngine::signal_moveItemsUp, listThread,&ListThread::moveItemsUp, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_moveItemsUp()");
+ if(!connect(this,&CopyEngine::signal_moveItemsDown, listThread,&ListThread::moveItemsDown, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_moveItemsDown()");
+ if(!connect(this,&CopyEngine::signal_moveItemsOnBottom, listThread,&ListThread::moveItemsOnBottom, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_moveItemsOnBottom()");
+ if(!connect(this,&CopyEngine::signal_exportTransferList, listThread,&ListThread::exportTransferList, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_exportTransferList()");
+ if(!connect(this,&CopyEngine::signal_importTransferList, listThread,&ListThread::importTransferList, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_importTransferList()");
+ if(!connect(this,&CopyEngine::signal_forceMode, listThread,&ListThread::forceMode, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_forceMode()");
+ if(!connect(this,&CopyEngine::send_moveTheWholeFolder, listThread,&ListThread::setMoveTheWholeFolder, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect moveTheWholeFolder()");
+ if(!connect(this,&CopyEngine::send_deletePartiallyTransferredFiles, listThread,&ListThread::setDeletePartiallyTransferredFiles, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect deletePartiallyTransferredFiles()");
+ if(!connect(this,&CopyEngine::send_setRenameTheOriginalDestination, listThread,&ListThread::setRenameTheOriginalDestination, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect setRenameTheOriginalDestination()");
+ if(!connect(this,&CopyEngine::send_setInodeThreads, listThread,&ListThread::setInodeThreads, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect setInodeThreads()");
+ if(!connect(this,&CopyEngine::send_followTheStrictOrder, listThread,&ListThread::setFollowTheStrictOrder, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect followTheStrictOrder()");
+ if(!connect(this,&CopyEngine::send_setFilters,listThread,&ListThread::set_setFilters, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_setFilters()");
+ if(!connect(this,&CopyEngine::send_sendNewRenamingRules,listThread,&ListThread::set_sendNewRenamingRules, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_sendNewRenamingRules()");
+ if(!connect(&timerActionDone,&QTimer::timeout, listThread,&ListThread::sendActionDone))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect timerActionDone");
+ if(!connect(&timerProgression,&QTimer::timeout, listThread,&ListThread::sendProgression))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect timerProgression");
+ if(!connect(listThread,&ListThread::missingDiskSpace, this,&CopyEngine::missingDiskSpace,Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect timerProgression");
+
+ if(!connect(this,&CopyEngine::queryOneNewDialog,this,&CopyEngine::showOneNewDialog,Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect queryOneNewDialog()");
+ if(!connect(listThread,&ListThread::errorToRetry,this,&CopyEngine::errorToRetry,Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect errorToRetry()");
+
+ if(!connect(&timerUpdateMount,&QTimer::timeout,listThread,&ListThread::set_updateMount, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect set_updateMount()");
+}
+
+#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+void CopyEngine::updateTheDebugInfo(const std::vector<std::string> &newList, const std::vector<std::string> &newList2, const int &numberOfInodeOperation)
+{
+ debugDialogWindow.setTransferThreadList(newList);
+ debugDialogWindow.setTransferList(newList2);
+ debugDialogWindow.setInodeUsage(numberOfInodeOperation);
+}
+#endif
+
+//to send the options panel
+bool CopyEngine::getOptionsEngine(QWidget * tempWidget)
+{
+ this->tempWidget=tempWidget;
+ ui->setupUi(tempWidget);
+ ui->toolBox->setCurrentIndex(0);
+ connect(tempWidget, &QWidget::destroyed, this, &CopyEngine::resetTempWidget);
+
+ //here else, the default settings can't be loaded
+ uiIsInstalled=true;
+
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ setRsync(rsync);
+ #else
+ ui->label_rsync->setVisible(false);
+ ui->rsync->setVisible(false);
+ #endif
+ setAutoStart(autoStart);
+ setCheckDestinationFolderExists(checkDestinationFolderExists);
+ setMkFullPath(mkFullPath);
+ setChecksum(checksum);
+ setRightTransfer(doRightTransfer);
+ setKeepDate(keepDate);
+ setOsSpecFlags(os_spec_flags);
+ setNativeCopy(native_copy);
+ setFollowTheStrictOrder(followTheStrictOrder);
+ setDeletePartiallyTransferredFiles(deletePartiallyTransferredFiles);
+ setInodeThreads(inodeThreads);
+ setRenameTheOriginalDestination(renameTheOriginalDestination);
+ setMoveTheWholeFolder(moveTheWholeFolder);
+ setCheckDiskSpace(checkDiskSpace);
+ setDefaultDestinationFolder(defaultDestinationFolder);
+
+ switch(alwaysDoThisActionForFileExists)
+ {
+ case FileExists_NotSet:
+ ui->comboBoxFileCollision->setCurrentIndex(0);
+ break;
+ case FileExists_Skip:
+ ui->comboBoxFileCollision->setCurrentIndex(1);
+ break;
+ case FileExists_Overwrite:
+ ui->comboBoxFileCollision->setCurrentIndex(2);
+ break;
+ case FileExists_OverwriteIfNotSameMdate:
+ ui->comboBoxFileCollision->setCurrentIndex(3);
+ break;
+ case FileExists_OverwriteIfNewer:
+ ui->comboBoxFileCollision->setCurrentIndex(4);
+ break;
+ case FileExists_OverwriteIfOlder:
+ ui->comboBoxFileCollision->setCurrentIndex(5);
+ break;
+ case FileExists_Rename:
+ ui->comboBoxFileCollision->setCurrentIndex(6);
+ break;
+ case FileExists_OverwriteIfNotSameSize:
+ ui->comboBoxFileCollision->setCurrentIndex(6);
+ break;
+ case FileExists_OverwriteIfNotSameSizeAndDate:
+ ui->comboBoxFileCollision->setCurrentIndex(6);
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored");
+ ui->comboBoxFileCollision->setCurrentIndex(0);
+ break;
+ }
+ switch(alwaysDoThisActionForFileError)
+ {
+ case FileError_NotSet:
+ ui->comboBoxFileError->setCurrentIndex(0);
+ break;
+ case FileError_Skip:
+ ui->comboBoxFileError->setCurrentIndex(1);
+ break;
+ case FileError_PutToEndOfTheList:
+ ui->comboBoxFileError->setCurrentIndex(2);
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored");
+ ui->comboBoxFileError->setCurrentIndex(0);
+ break;
+ }
+ switch(alwaysDoThisActionForFolderExists)
+ {
+ case FolderExists_NotSet:
+ ui->comboBoxFolderCollision->setCurrentIndex(0);
+ break;
+ case FolderExists_Merge:
+ ui->comboBoxFolderCollision->setCurrentIndex(1);
+ break;
+ case FolderExists_Skip:
+ ui->comboBoxFolderCollision->setCurrentIndex(2);
+ break;
+ case FolderExists_Rename:
+ ui->comboBoxFolderCollision->setCurrentIndex(3);
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored");
+ ui->comboBoxFolderCollision->setCurrentIndex(0);
+ break;
+ }
+ switch(alwaysDoThisActionForFolderError)
+ {
+ case FileError_NotSet:
+ ui->comboBoxFolderError->setCurrentIndex(0);
+ break;
+ case FileError_Skip:
+ ui->comboBoxFolderError->setCurrentIndex(1);
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored: "+std::to_string(alwaysDoThisActionForFolderError));
+ ui->comboBoxFolderError->setCurrentIndex(0);
+ break;
+ }
+ return true;
+}
+
+//to have interface widget to do modal dialog
+void CopyEngine::setInterfacePointer(QWidget * uiinterface)
+{
+ this->uiinterface=uiinterface;
+ if(filters==NULL)
+ filters=new Filters(tempWidget);
+ if(renamingRules==NULL)
+ renamingRules=new RenamingRules(tempWidget);
+
+ if(uiIsInstalled)
+ {
+ connect(ui->autoStart, &QCheckBox::toggled, this,&CopyEngine::setAutoStart);
+ connect(ui->doRightTransfer, &QCheckBox::toggled, this,&CopyEngine::setRightTransfer);
+ connect(ui->keepDate, &QCheckBox::toggled, this,&CopyEngine::setKeepDate);
+ connect(ui->os_spec_flags, &QCheckBox::toggled, this,&CopyEngine::setOsSpecFlags);
+ connect(ui->native_copy, &QCheckBox::toggled, this,&CopyEngine::setNativeCopy);
+ connect(ui->moveTheWholeFolder, &QCheckBox::toggled, this,&CopyEngine::setMoveTheWholeFolder);
+ connect(ui->deletePartiallyTransferredFiles, &QCheckBox::toggled, this,&CopyEngine::setDeletePartiallyTransferredFiles);
+ connect(ui->followTheStrictOrder, &QCheckBox::toggled, this,&CopyEngine::setFollowTheStrictOrder);
+ connect(ui->checkBoxDestinationFolderExists, &QCheckBox::toggled, this,&CopyEngine::setCheckDestinationFolderExists);
+ connect(ui->mkpath, &QCheckBox::toggled, this,&CopyEngine::setMkFullPath);
+ connect(ui->checksum, &QCheckBox::toggled, this,&CopyEngine::setChecksum);
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ connect(ui->rsync, &QCheckBox::toggled, this,&CopyEngine::setRsync);
+ #endif
+ connect(ui->renameTheOriginalDestination, &QCheckBox::toggled, this,&CopyEngine::setRenameTheOriginalDestination);
+ connect(filters, &Filters::haveNewFilters, this,&CopyEngine::sendNewFilters);
+ connect(ui->filters, &QPushButton::clicked, this,&CopyEngine::showFilterDialog);
+ connect(ui->inodeThreads, &QSpinBox::editingFinished, this,&CopyEngine::inodeThreadsFinished);
+ connect(ui->inodeThreads, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngine::setInodeThreads);
+ connect(ui->defaultDestinationFolderBrowse, &QPushButton::clicked, this,&CopyEngine::defaultDestinationFolderBrowse);
+
+ connect(ui->comboBoxFolderError, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setFolderError);
+ connect(ui->comboBoxFolderCollision, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setFolderCollision);
+ connect(ui->comboBoxFileError, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setFileError);
+ connect(ui->comboBoxFileCollision, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setFileCollision);
+
+ if(!connect(renamingRules,&RenamingRules::sendNewRenamingRules,this,&CopyEngine::sendNewRenamingRules))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect sendNewRenamingRules()");
+ if(!connect(ui->renamingRules,&QPushButton::clicked,this,&CopyEngine::showRenamingRules))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect renamingRules.clicked()");
+ }
+
+ if(!filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions))
+ {
+ includeStrings.clear();
+ includeOptions.clear();
+ excludeStrings.clear();
+ excludeOptions.clear();
+ set_setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
+ }
+
+ renamingRules->setRenamingRules(firstRenamingRule,otherRenamingRule);
+ emit send_sendNewRenamingRules(firstRenamingRule,otherRenamingRule);
+}
+
+bool CopyEngine::haveSameSource(const std::vector<std::string> &sources)
+{
+ return listThread->haveSameSource(sources);
+}
+
+bool CopyEngine::haveSameDestination(const std::string &destination)
+{
+ return listThread->haveSameDestination(destination);
+}
+
+std::string CopyEngine::stringimplode(const std::vector<std::string>& elems, const std::string &delim)
+{
+ std::string newString;
+ for (std::vector<std::string>::const_iterator ii = elems.begin(); ii != elems.cend(); ++ii)
+ {
+ newString += (*ii);
+ if ( ii + 1 != elems.end() ) {
+ newString += delim;
+ }
+ }
+ return newString;
+}
+
+bool CopyEngine::newCopy(const std::vector<std::string> &sources)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,stringimplode(sources,", "));
+ if(forcedMode && mode!=Ultracopier::Copy)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The engine is forced to move, you can't copy with it");
+ QMessageBox::critical(NULL,QString::fromStdString(facilityEngine->translateText("Internal error")),tr("The engine is forced to move, you can't copy with it"));
+ return false;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ std::string destination;
+ if(!defaultDestinationFolder.empty() && QDir(QString::fromStdString(defaultDestinationFolder)).exists())
+ destination = defaultDestinationFolder;
+ else
+ destination = askDestination();
+ if(destination.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Canceled by the user");
+ return false;
+ }
+ return listThread->newCopy(sources,destination);
+}
+
+bool CopyEngine::newCopy(const std::vector<std::string> &sources,const std::string &destination)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,stringimplode(sources,", ")+" "+destination);
+ if(forcedMode && mode!=Ultracopier::Copy)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The engine is forced to move, you can't copy with it");
+ QMessageBox::critical(NULL,QString::fromStdString(facilityEngine->translateText("Internal error")),tr("The engine is forced to move, you can't copy with it"));
+ return false;
+ }
+ return listThread->newCopy(sources,destination);
+}
+
+bool CopyEngine::newMove(const std::vector<std::string> &sources)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,stringimplode(sources,", "));
+ if(forcedMode && mode!=Ultracopier::Move)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The engine is forced to copy, you can't move with it");
+ QMessageBox::critical(NULL,QString::fromStdString(facilityEngine->translateText("Internal error")),tr("The engine is forced to copy, you can't move with it"));
+ return false;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ std::string destination;
+ if(!ui->defaultDestinationFolder->text().isEmpty() && QDir(ui->defaultDestinationFolder->text()).exists())
+ destination = ui->defaultDestinationFolder->text().toStdString();
+ else
+ destination = askDestination();
+ if(destination.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Canceled by the user");
+ return false;
+ }
+ return listThread->newMove(sources,destination);
+}
+
+bool CopyEngine::newMove(const std::vector<std::string> &sources,const std::string &destination)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,stringimplode(sources,", ")+" "+destination);
+ if(forcedMode && mode!=Ultracopier::Move)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The engine is forced to copy, you can't move with it");
+ QMessageBox::critical(NULL,QString::fromStdString(facilityEngine->translateText("Internal error")),tr("The engine is forced to copy, you can't move with it"));
+ return false;
+ }
+ return listThread->newMove(sources,destination);
+}
+
+void CopyEngine::defaultDestinationFolderBrowse()
+{
+ std::string destination = askDestination();
+ if(destination.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Canceled by the user");
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(uiIsInstalled)
+ ui->defaultDestinationFolder->setText(QString::fromStdString(destination));
+}
+
+std::string CopyEngine::askDestination()
+{
+ std::string destination = listThread->getUniqueDestinationFolder();
+ if(!destination.empty())
+ {
+ QMessageBox::StandardButton button=QMessageBox::question(uiinterface,tr("Destination"),tr("Use the actual destination \"%1\"?")
+ .arg(QString::fromStdString(destination)),
+ QMessageBox::Yes | QMessageBox::No,QMessageBox::Yes);
+ if(button==QMessageBox::Yes)
+ return destination;
+ }
+ destination=QFileDialog::getExistingDirectory(uiinterface,QString::fromStdString(facilityEngine->translateText("Select destination directory")),QStringLiteral(""),QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks).toStdString();
+ return destination;
+}
+
+void CopyEngine::newTransferList(const std::string &file)
+{
+ emit signal_importTransferList(file);
+}
+
+//because direct access to list thread into the main thread can't be do
+uint64_t CopyEngine::realByteTransfered()
+{
+ return size_for_speed;
+}
+
+//speed limitation
+bool CopyEngine::supportSpeedLimitation() const
+{
+ return true;
+}
+
+/** \brief to sync the transfer list
+ * Used when the interface is changed, useful to minimize the memory size */
+void CopyEngine::syncTransferList()
+{
+ listThread->syncTransferList();
+}
+
+void CopyEngine::set_setFilters(std::vector<std::string> includeStrings,std::vector<std::string> includeOptions,std::vector<std::string> excludeStrings,std::vector<std::string> excludeOptions)
+{
+ if(filters==NULL)
+ filters=new Filters();
+ if(filters!=NULL)
+ {
+ if(!filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions))
+ {
+ includeStrings.clear();
+ includeOptions.clear();
+ excludeStrings.clear();
+ excludeOptions.clear();
+ }
+ emit send_setFilters(filters->getInclude(),filters->getExclude());
+ listThread->set_setFilters(filters->getInclude(),filters->getExclude());
+ }
+ this->includeStrings=includeStrings;
+ this->includeOptions=includeOptions;
+ this->excludeStrings=excludeStrings;
+ this->excludeOptions=excludeOptions;
+}
+
+void CopyEngine::setRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule)
+{
+ sendNewRenamingRules(firstRenamingRule,otherRenamingRule);
+}
+
+bool CopyEngine::userAddFolder(const Ultracopier::CopyMode &mode)
+{
+ std::string source = QFileDialog::getExistingDirectory(uiinterface,QString::fromStdString(facilityEngine->translateText("Select source directory")),
+ QStringLiteral(""),
+ QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks).toStdString();
+ if(source.empty() || source=="")
+ return false;
+ std::vector<std::string> sources;
+ sources.push_back(source);
+ if(mode==Ultracopier::Copy)
+ return newCopy(sources);
+ else
+ return newMove(sources);
+}
+
+bool CopyEngine::userAddFile(const Ultracopier::CopyMode &mode)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ QStringList sources = QFileDialog::getOpenFileNames(
+ uiinterface,
+ QString::fromStdString(facilityEngine->translateText("Select one or more files to open")),
+ QStringLiteral(""),
+ QString::fromStdString(facilityEngine->translateText("All files"))+QStringLiteral(" (*)"));
+
+ std::vector<std::string> sourcesstd;
+ unsigned int index=0;
+ while(index<(unsigned int)sources.size())
+ {
+ sourcesstd.push_back(sources.at(index).toStdString());
+ index++;
+ }
+
+ if(sourcesstd.empty())
+ return false;
+ if(mode==Ultracopier::Copy)
+ return newCopy(sourcesstd);
+ else
+ return newMove(sourcesstd);
+}
+
+void CopyEngine::pause()
+{
+ emit signal_pause();
+}
+
+void CopyEngine::resume()
+{
+ emit signal_resume();
+}
+
+void CopyEngine::skip(const uint64_t &id)
+{
+ emit signal_skip(id);
+}
+
+void CopyEngine::cancel()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ stopIt=true;
+ timerProgression.stop();
+ timerActionDone.stop();
+ emit tryCancel();
+}
+
+void CopyEngine::removeItems(const std::vector<uint64_t> &ids)
+{
+ emit signal_removeItems(ids);
+}
+
+void CopyEngine::moveItemsOnTop(const std::vector<uint64_t> &ids)
+{
+ emit signal_moveItemsOnTop(ids);
+}
+
+void CopyEngine::moveItemsUp(const std::vector<uint64_t> &ids)
+{
+ emit signal_moveItemsUp(ids);
+}
+
+void CopyEngine::moveItemsDown(const std::vector<uint64_t> &ids)
+{
+ emit signal_moveItemsDown(ids);
+}
+
+void CopyEngine::moveItemsOnBottom(const std::vector<uint64_t> &ids)
+{
+ emit signal_moveItemsOnBottom(ids);
+}
+
+/** \brief give the forced mode, to export/import transfer list */
+void CopyEngine::forceMode(const Ultracopier::CopyMode &mode)
+{
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ if(mode==Ultracopier::Move)
+ {
+ listThread->setRsync(false);
+ rsync=false;
+ }
+ if(uiIsInstalled)
+ ui->rsync->setEnabled(mode==Ultracopier::Copy);
+ #endif
+ if(forcedMode)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Mode forced previously");
+ QMessageBox::critical(NULL,QString::fromStdString(facilityEngine->translateText("Internal error")),tr("The mode has been forced previously. This is an internal error, please report it"));
+ return;
+ }
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ if(mode==Ultracopier::Move)
+ rsync=false;
+ #endif
+ if(mode==Ultracopier::Copy)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Force mode to copy");
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Force mode to move");
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ if(uiIsInstalled)
+ ui->rsync->setEnabled(mode==Ultracopier::Copy);
+ #endif
+ this->mode=mode;
+ forcedMode=true;
+ emit signal_forceMode(mode);
+}
+
+void CopyEngine::exportTransferList()
+{
+ std::string fileName = QFileDialog::getSaveFileName(uiinterface,QString::fromStdString(facilityEngine->translateText("Save transfer list")),QStringLiteral("transfer-list.lst"),QString::fromStdString(facilityEngine->translateText("Transfer list"))+QStringLiteral(" (*.lst)")).toStdString();
+ if(fileName.empty())
+ return;
+ emit signal_exportTransferList(fileName);
+}
+
+void CopyEngine::importTransferList()
+{
+ std::string fileName = QFileDialog::getOpenFileName(uiinterface,QString::fromStdString(facilityEngine->translateText("Open transfer list")),QStringLiteral("transfer-list.lst"),QString::fromStdString(facilityEngine->translateText("Transfer list"))+QStringLiteral(" (*.lst)")).toStdString();
+ if(fileName.empty())
+ return;
+ emit signal_importTransferList(fileName);
+}
+
+void CopyEngine::warningTransferList(const std::string &warning)
+{
+ QMessageBox::warning(uiinterface,QString::fromStdString(facilityEngine->translateText("Error")),QString::fromStdString(warning));
+}
+
+void CopyEngine::errorTransferList(const std::string &error)
+{
+ QMessageBox::critical(uiinterface,QString::fromStdString(facilityEngine->translateText("Error")),QString::fromStdString(error));
+}
+
+bool CopyEngine::setSpeedLimitation(const int64_t &speedLimitation)
+{
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"maxSpeed: "+std::to_string(speedLimitation));
+ emit signal_setSpeedLimitation(speedLimitation);
+ return false;
+}
+
+void CopyEngine::setFileCollision(int index)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index));
+ if(uiIsInstalled)
+ if(index!=ui->comboBoxFileCollision->currentIndex())
+ ui->comboBoxFileCollision->setCurrentIndex(index);
+ switch(index)
+ {
+ case 0:
+ alwaysDoThisActionForFileExists=FileExists_NotSet;
+ break;
+ case 1:
+ alwaysDoThisActionForFileExists=FileExists_Skip;
+ break;
+ case 2:
+ alwaysDoThisActionForFileExists=FileExists_Overwrite;
+ break;
+ case 3:
+ alwaysDoThisActionForFileExists=FileExists_OverwriteIfNotSameMdate;
+ break;
+ case 4:
+ alwaysDoThisActionForFileExists=FileExists_OverwriteIfNewer;
+ break;
+ case 5:
+ alwaysDoThisActionForFileExists=FileExists_OverwriteIfOlder;
+ break;
+ case 6:
+ alwaysDoThisActionForFileExists=FileExists_Rename;
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored");
+ alwaysDoThisActionForFileExists=FileExists_NotSet;
+ break;
+ }
+ emit signal_setCollisionAction(alwaysDoThisActionForFileExists);
+}
+
+void CopyEngine::setFileError(int index)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index));
+ if(uiIsInstalled)
+ if(index!=ui->comboBoxFileError->currentIndex())
+ ui->comboBoxFileError->setCurrentIndex(index);
+ switch(index)
+ {
+ case 0:
+ alwaysDoThisActionForFileError=FileError_NotSet;
+ break;
+ case 1:
+ alwaysDoThisActionForFileError=FileError_Skip;
+ break;
+ case 2:
+ alwaysDoThisActionForFileError=FileError_PutToEndOfTheList;
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored");
+ alwaysDoThisActionForFileError=FileError_NotSet;
+ break;
+ }
+ //emit signal_setCollisionAction(alwaysDoThisActionForFileExists);
+}
+
+void CopyEngine::setRightTransfer(const bool doRightTransfer)
+{
+ this->doRightTransfer=doRightTransfer;
+ if(uiIsInstalled)
+ ui->doRightTransfer->setChecked(doRightTransfer);
+ listThread->setRightTransfer(doRightTransfer);
+}
+
+//set keep date
+void CopyEngine::setKeepDate(const bool keepDate)
+{
+ this->keepDate=keepDate;
+ if(uiIsInstalled)
+ ui->keepDate->setChecked(keepDate);
+ listThread->setKeepDate(keepDate);
+}
+
+void CopyEngine::setOsSpecFlags(const bool os_spec_flags)
+{
+ this->os_spec_flags=os_spec_flags;
+ if(uiIsInstalled)
+ ui->os_spec_flags->setChecked(os_spec_flags);
+ listThread->setOsSpecFlags(os_spec_flags);
+}
+
+void CopyEngine::setNativeCopy(const bool native_copy)
+{
+ this->native_copy=native_copy;
+ if(uiIsInstalled)
+ ui->native_copy->setChecked(native_copy);
+ listThread->setNativeCopy(native_copy);
+}
+
+void CopyEngine::setMoveTheWholeFolder(const bool &moveTheWholeFolder)
+{
+ this->moveTheWholeFolder=moveTheWholeFolder;
+ if(uiIsInstalled)
+ ui->moveTheWholeFolder->setChecked(moveTheWholeFolder);
+ emit send_moveTheWholeFolder(moveTheWholeFolder);
+}
+
+void CopyEngine::setFollowTheStrictOrder(const bool &followTheStrictOrder)
+{
+ this->followTheStrictOrder=followTheStrictOrder;
+ if(uiIsInstalled)
+ ui->followTheStrictOrder->setChecked(followTheStrictOrder);
+ listThread->setFollowTheStrictOrder(followTheStrictOrder);
+ emit send_followTheStrictOrder(followTheStrictOrder);
+}
+
+void CopyEngine::setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles)
+{
+ this->deletePartiallyTransferredFiles=deletePartiallyTransferredFiles;
+ if(uiIsInstalled)
+ ui->deletePartiallyTransferredFiles->setChecked(deletePartiallyTransferredFiles);
+ emit send_deletePartiallyTransferredFiles(deletePartiallyTransferredFiles);
+}
+
+void CopyEngine::setInodeThreads(const int &inodeThreads)
+{
+ this->inodeThreads=inodeThreads;
+ if(uiIsInstalled)
+ ui->inodeThreads->setValue(inodeThreads);
+ emit send_setInodeThreads(inodeThreads);
+}
+
+void CopyEngine::setRenameTheOriginalDestination(const bool &renameTheOriginalDestination)
+{
+ this->renameTheOriginalDestination=renameTheOriginalDestination;
+ if(uiIsInstalled)
+ ui->renameTheOriginalDestination->setChecked(renameTheOriginalDestination);
+ emit send_setRenameTheOriginalDestination(renameTheOriginalDestination);
+}
+
+void CopyEngine::inodeThreadsFinished()
+{
+ this->inodeThreads=ui->inodeThreads->value();
+ emit send_setInodeThreads(inodeThreads);
+}
+
+#ifdef ULTRACOPIER_PLUGIN_RSYNC
+/// \brief set rsync
+void CopyEngine::setRsync(const bool rsync)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"set rsync: "+std::to_string(rsync));
+ this->rsync=rsync;
+ if(uiIsInstalled)
+ {
+ ui->rsync->setChecked(rsync);
+ ui->rsync->setEnabled(forcedMode && mode==Ultracopier::Copy);
+ ui->label_rsync->setEnabled(forcedMode && mode==Ultracopier::Copy);
+ }
+ listThread->setRsync(rsync);
+}
+#endif
+
+//set check destination folder
+void CopyEngine::setCheckDestinationFolderExists(const bool checkDestinationFolderExists)
+{
+ this->checkDestinationFolderExists=checkDestinationFolderExists;
+ if(uiIsInstalled)
+ ui->checkBoxDestinationFolderExists->setChecked(checkDestinationFolderExists);
+ listThread->setCheckDestinationFolderExists(checkDestinationFolderExists);
+}
+
+void CopyEngine::setMkFullPath(const bool mkFullPath)
+{
+ this->mkFullPath=mkFullPath;
+ if(uiIsInstalled)
+ ui->mkpath->setChecked(mkFullPath);
+ listThread->setMkFullPath(mkFullPath);
+}
+
+void CopyEngine::setChecksum(const bool checksum)
+{
+ this->checksum=checksum;
+ if(uiIsInstalled)
+ ui->checksum->setChecked(checksum);
+}
+
+//reset widget
+void CopyEngine::resetTempWidget()
+{
+ uiIsInstalled=false;
+ tempWidget=NULL;
+}
+
+void CopyEngine::setFolderCollision(int index)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index));
+ if(uiIsInstalled)
+ if(index!=ui->comboBoxFolderCollision->currentIndex())
+ ui->comboBoxFolderCollision->setCurrentIndex(index);
+ switch(index)
+ {
+ case 0:
+ setComboBoxFolderCollision(FolderExists_NotSet,false);
+ break;
+ case 1:
+ setComboBoxFolderCollision(FolderExists_Merge,false);
+ break;
+ case 2:
+ setComboBoxFolderCollision(FolderExists_Skip,false);
+ break;
+ case 3:
+ setComboBoxFolderCollision(FolderExists_Rename,false);
+ break;
+ }
+ emit signal_setFolderCollision(alwaysDoThisActionForFolderExists);
+}
+
+void CopyEngine::setFolderError(int index)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index));
+ if(uiIsInstalled)
+ if(index!=ui->comboBoxFolderError->currentIndex())
+ ui->comboBoxFolderError->setCurrentIndex(index);
+ switch(index)
+ {
+ case 0:
+ setComboBoxFolderError(FileError_NotSet,false);
+ break;
+ case 1:
+ setComboBoxFolderError(FileError_Skip,false);
+ break;
+ }
+ emit signal_setCollisionAction(alwaysDoThisActionForFileExists);
+}
+
+//set the translate
+void CopyEngine::newLanguageLoaded()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, retranslate the widget options");
+ if(tempWidget!=NULL)
+ {
+ ui->retranslateUi(tempWidget);
+ ui->comboBoxFolderError->setItemText(0,tr("Ask"));
+ ui->comboBoxFolderError->setItemText(1,tr("Skip"));
+
+ ui->comboBoxFolderCollision->setItemText(0,tr("Ask"));
+ ui->comboBoxFolderCollision->setItemText(1,tr("Merge"));
+ ui->comboBoxFolderCollision->setItemText(2,tr("Skip"));
+ ui->comboBoxFolderCollision->setItemText(3,tr("Rename"));
+
+ ui->comboBoxFileError->setItemText(0,tr("Ask"));
+ ui->comboBoxFileError->setItemText(1,tr("Skip"));
+ ui->comboBoxFileError->setItemText(2,tr("Put at the end"));
+
+ ui->comboBoxFileCollision->setItemText(0,tr("Ask"));
+ ui->comboBoxFileCollision->setItemText(1,tr("Skip"));
+ ui->comboBoxFileCollision->setItemText(2,tr("Overwrite"));
+ ui->comboBoxFileCollision->setItemText(3,tr("Overwrite if different"));
+ ui->comboBoxFileCollision->setItemText(4,tr("Overwrite if newer"));
+ ui->comboBoxFileCollision->setItemText(5,tr("Overwrite if older"));
+ ui->comboBoxFileCollision->setItemText(6,tr("Rename"));
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"ui not loaded!");
+}
+
+void CopyEngine::setComboBoxFolderCollision(FolderExistsAction action,bool changeComboBox)
+{
+ alwaysDoThisActionForFolderExists=action;
+ emit signal_setFolderCollision(alwaysDoThisActionForFolderExists);
+ if(!changeComboBox || !uiIsInstalled)
+ return;
+ switch(action)
+ {
+ case FolderExists_Merge:
+ ui->comboBoxFolderCollision->setCurrentIndex(1);
+ break;
+ case FolderExists_Skip:
+ ui->comboBoxFolderCollision->setCurrentIndex(2);
+ break;
+ case FolderExists_Rename:
+ ui->comboBoxFolderCollision->setCurrentIndex(3);
+ break;
+ default:
+ ui->comboBoxFolderCollision->setCurrentIndex(0);
+ break;
+ }
+}
+
+void CopyEngine::setComboBoxFolderError(FileErrorAction action,bool changeComboBox)
+{
+ alwaysDoThisActionForFolderError=action;
+ if(!changeComboBox || !uiIsInstalled)
+ return;
+ switch(action)
+ {
+ case FileError_Skip:
+ ui->comboBoxFolderError->setCurrentIndex(1);
+ break;
+ default:
+ ui->comboBoxFolderError->setCurrentIndex(0);
+ break;
+ }
+}
+
+
+void CopyEngine::showFilterDialog()
+{
+ if(filters!=NULL)
+ filters->exec();
+}
+
+void CopyEngine::sendNewFilters()
+{
+ if(filters!=NULL)
+ emit send_setFilters(filters->getInclude(),filters->getExclude());
+}
+
+void CopyEngine::sendNewRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"new filter");
+ this->firstRenamingRule=firstRenamingRule;
+ this->otherRenamingRule=otherRenamingRule;
+ emit send_sendNewRenamingRules(firstRenamingRule,otherRenamingRule);
+}
+
+void CopyEngine::showRenamingRules()
+{
+ if(renamingRules==NULL)
+ {
+ QMessageBox::critical(NULL,tr("Options error"),tr("Options engine is not loaded. Unable to access the filters"));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"options not loaded");
+ return;
+ }
+ renamingRules->exec();
+}
+
+void CopyEngine::get_realBytesTransfered(quint64 realBytesTransfered)
+{
+ size_for_speed=realBytesTransfered;
+}
+
+void CopyEngine::newActionInProgess(Ultracopier::EngineActionInProgress action)
+{
+ if(action==Ultracopier::Idle)
+ {
+ timerProgression.stop();
+ timerActionDone.stop();
+ }
+ else
+ {
+ timerProgression.start();
+ timerActionDone.start();
+ }
+}
+
+void CopyEngine::setCheckDiskSpace(const bool &checkDiskSpace)
+{
+ this->checkDiskSpace=checkDiskSpace;
+ if(uiIsInstalled)
+ ui->checkDiskSpace->setChecked(checkDiskSpace);
+ listThread->setCheckDiskSpace(checkDiskSpace);
+}
+
+void CopyEngine::setBuffer(const bool &buffer)
+{
+ this->buffer=buffer;
+ if(uiIsInstalled)
+ ui->buffer->setChecked(buffer);
+ listThread->setBuffer(buffer);
+}
+
+void CopyEngine::setDefaultDestinationFolder(const std::string &defaultDestinationFolder)
+{
+ this->defaultDestinationFolder=defaultDestinationFolder;
+ if(uiIsInstalled)
+ ui->defaultDestinationFolder->setText(QString::fromStdString(defaultDestinationFolder));
+}
+
+void CopyEngine::exportErrorIntoTransferList()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"exportErrorIntoTransferList");
+ std::string fileName = QFileDialog::getSaveFileName(uiinterface,QString::fromStdString(facilityEngine->translateText("Save transfer list")),QStringLiteral("transfer-list.lst"),QString::fromStdString(facilityEngine->translateText("Transfer list"))+QStringLiteral(" (*.lst)")).toStdString();
+ if(fileName.empty())
+ return;
+ emit signal_exportErrorIntoTransferList(fileName);
+}
+
+//set auto start
+void CopyEngine::setAutoStart(const bool autoStart)
+{
+ this->autoStart=autoStart;
+ if(uiIsInstalled)
+ ui->autoStart->setChecked(autoStart);
+ listThread->setAutoStart(autoStart);
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.h b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.h
new file mode 100755
index 0000000..caba5b5
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.h
@@ -0,0 +1,356 @@
+/** \file copyEngine.h
+\brief Define the copy engine
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include <QWidget>
+#include <QObject>
+#include <QList>
+#include <vector>
+#include <string>
+#include <QFile>
+#include <QFileDialog>
+#include <QMessageBox>
+
+#include "../../../interface/PluginInterface_CopyEngine.h"
+#include "FileErrorDialog.h"
+#include "FileExistsDialog.h"
+#include "FolderExistsDialog.h"
+#include "FileIsSameDialog.h"
+#include "ui_copyEngineOptions.h"
+#include "Environment.h"
+#include "ListThread.h"
+#include "Filters.h"
+#include "RenamingRules.h"
+
+#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+#include "DebugDialog.h"
+#include <QTimer>
+#endif
+
+#ifndef COPY_ENGINE_H
+#define COPY_ENGINE_H
+
+namespace Ui {
+ class copyEngineOptions;
+}
+
+/// \brief the implementation of copy engine plugin, manage directly few stuff, else pass to ListThread class.
+class CopyEngine : public PluginInterface_CopyEngine
+{
+ Q_OBJECT
+public:
+ CopyEngine(FacilityInterface * facilityEngine);
+ ~CopyEngine();
+ void connectTheSignalsSlots();
+private:
+ ListThread * listThread;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+ DebugDialog debugDialogWindow;
+ #endif
+ QWidget * tempWidget;
+ Ui::copyEngineOptions * ui;
+ bool uiIsInstalled;
+ QWidget * uiinterface;
+ Filters * filters;
+ RenamingRules * renamingRules;
+ FacilityInterface * facilityEngine;
+ bool doRightTransfer;
+ bool keepDate;
+ bool os_spec_flags;
+ bool native_copy;
+ bool followTheStrictOrder;
+ bool deletePartiallyTransferredFiles;
+ int inodeThreads;
+ bool renameTheOriginalDestination;
+ bool moveTheWholeFolder;
+ bool autoStart;
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ bool rsync;
+ #endif
+ bool checkDestinationFolderExists;
+ bool mkFullPath;
+ bool checksum;
+ FileExistsAction alwaysDoThisActionForFileExists;
+ FileErrorAction alwaysDoThisActionForFileError;
+ FileErrorAction alwaysDoThisActionForFolderError;
+ FolderExistsAction alwaysDoThisActionForFolderExists;
+ bool dialogIsOpen;
+ volatile bool stopIt;
+ std::string defaultDestinationFolder;
+ /// \brief error queue
+ struct errorQueueItem
+ {
+ TransferThreadAsync * transfer; ///< NULL if send by scan thread
+ ScanFileOrFolder * scan; ///< NULL if send by transfer thread
+ bool mkPath;
+ bool rmPath;
+ INTERNALTYPEPATH inode;
+ std::string errorString;
+ ErrorType errorType;
+ };
+ std::vector<errorQueueItem> errorQueue;
+ /// \brief already exists queue
+ struct alreadyExistsQueueItem
+ {
+ TransferThreadAsync * transfer; ///< NULL if send by scan thread
+ ScanFileOrFolder * scan; ///< NULL if send by transfer thread
+ INTERNALTYPEPATH source;
+ INTERNALTYPEPATH destination;
+ bool isSame;
+ };
+ std::vector<alreadyExistsQueueItem> alreadyExistsQueue;
+ uint64_t size_for_speed;//because direct access to list thread into the main thread can't be do
+ Ultracopier::CopyMode mode;
+ bool forcedMode;
+
+ bool checkDiskSpace;
+ bool buffer;
+ unsigned int osBufferLimit;
+ std::vector<std::string> includeStrings,includeOptions,excludeStrings,excludeOptions;
+ std::string firstRenamingRule;
+ std::string otherRenamingRule;
+ uint64_t errorPutAtEnd;
+
+ //send action done timer
+ QTimer timerActionDone;
+ //send progression timer
+ QTimer timerProgression;
+
+ QTimer timerUpdateMount;
+ int putAtBottom;//to keep how many automatic put at bottom have been used
+private slots:
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+ void updateTheDebugInfo(const std::vector<std::string> &newList, const std::vector<std::string> &newList2, const int &numberOfInodeOperation);
+ friend class DebugDialog;
+ #endif
+
+ /************* External call ********************/
+ //dialog message
+ /// \note Can be call without queue because all call will be serialized
+ void fileAlreadyExistsSlot(INTERNALTYPEPATH source, INTERNALTYPEPATH destination, bool isSame, TransferThreadAsync * thread);
+ /// \note Can be call without queue because all call will be serialized
+ void errorOnFileSlot(INTERNALTYPEPATH fileInfo, std::string errorString, TransferThreadAsync * thread, const ErrorType &errorType);
+ /// \note Can be call without queue because all call will be serialized
+ void folderAlreadyExistsSlot(INTERNALTYPEPATH source,INTERNALTYPEPATH destination,bool isSame,ScanFileOrFolder * thread);
+ /// \note Can be call without queue because all call will be serialized
+ void errorOnFolderSlot(INTERNALTYPEPATH fileInfo, std::string errorString, ScanFileOrFolder * thread, ErrorType errorType);
+ //mkpath event
+ void mkPathErrorOnFolderSlot(INTERNALTYPEPATH, std::string, ErrorType errorType);
+
+ //dialog message
+ /// \note Can be call without queue because all call will be serialized
+ void fileAlreadyExists(INTERNALTYPEPATH source, INTERNALTYPEPATH destination, bool isSame, TransferThreadAsync * thread, bool isCalledByShowOneNewDialog=false);
+ /// \note Can be call without queue because all call will be serialized
+ void errorOnFile(INTERNALTYPEPATH fileInfo, std::string errorString, TransferThreadAsync * thread, const ErrorType &errorType, bool isCalledByShowOneNewDialog=false);
+ /// \note Can be call without queue because all call will be serialized
+ void folderAlreadyExists(INTERNALTYPEPATH source,INTERNALTYPEPATH destination,bool isSame,ScanFileOrFolder * thread,bool isCalledByShowOneNewDialog=false);
+ /// \note Can be call without queue because all call will be serialized
+ void errorOnFolder(INTERNALTYPEPATH fileInfo, std::string errorString, ScanFileOrFolder * thread, ErrorType errorType, bool isCalledByShowOneNewDialog=false);
+ //mkpath event
+ void mkPathErrorOnFolder(INTERNALTYPEPATH, std::string, const ErrorType &errorType, bool isCalledByShowOneNewDialog=false);
+
+ //show one new dialog if needed
+ void showOneNewDialog();
+ void sendNewFilters();
+
+ void showFilterDialog();
+ void sendNewRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule);
+ void showRenamingRules();
+ void get_realBytesTransfered(quint64 realBytesTransfered);
+ void newActionInProgess(Ultracopier::EngineActionInProgress);
+ void haveNeedPutAtBottom(bool needPutAtBottom, const INTERNALTYPEPATH &fileInfo, const std::string &errorString, TransferThreadAsync *thread, const ErrorType &errorType);
+ void missingDiskSpace(std::vector<Diskspace> list);
+ void exportErrorIntoTransferList() override;
+public:
+ /** \brief to send the options panel
+ * \return return false if have not the options
+ * \param tempWidget the widget to generate on it the options */
+ bool getOptionsEngine(QWidget * tempWidget) override;
+ /** \brief to have interface widget to do modal dialog
+ * \param interface to have the widget of the interface, useful for modal dialog */
+ void setInterfacePointer(QWidget * uiinterface) override;
+ //return empty if multiple
+ /** \brief compare the current sources of the copy, with the passed arguments
+ * \param sources the sources list to compares with the current sources list
+ * \return true if have same sources, else false (or empty) */
+ bool haveSameSource(const std::vector<std::string> &sources) override;
+ /** \brief compare the current destination of the copy, with the passed arguments
+ * \param destination the destination to compares with the current destination
+ * \return true if have same destination, else false (or empty) */
+ bool haveSameDestination(const std::string &destination) override;
+ //external soft like file browser have send copy/move list to do
+ /** \brief send copy without destination, ask the destination
+ * \param sources the sources list to copy
+ * \return true if the copy have been accepted */
+ bool newCopy(const std::vector<std::string> &sources) override;
+ /** \brief send copy with destination
+ * \param sources the sources list to copy
+ * \param destination the destination to copy
+ * \return true if the copy have been accepted */
+ bool newCopy(const std::vector<std::string> &sources,const std::string &destination) override;
+ /** \brief send move without destination, ask the destination
+ * \param sources the sources list to move
+ * \return true if the move have been accepted */
+ bool newMove(const std::vector<std::string> &sources) override;
+ /** \brief send move without destination, ask the destination
+ * \param sources the sources list to move
+ * \param destination the destination to move
+ * \return true if the move have been accepted */
+ bool newMove(const std::vector<std::string> &sources,const std::string &destination) override;
+ /** \brief send the new transfer list
+ * \param file the transfer list */
+ void newTransferList(const std::string &file) override;
+
+ /** \brief to get byte read, use by Ultracopier for the speed calculation
+ * real size transfered to right speed calculation */
+ uint64_t realByteTransfered() override;
+ /** \brief support speed limitation */
+ bool supportSpeedLimitation() const override;
+
+ /** \brief to set drives detected
+ * specific to this copy engine */
+
+ /** \brief to sync the transfer list
+ * Used when the interface is changed, useful to minimize the memory size */
+ void syncTransferList() override;
+
+ void set_setFilters(std::vector<std::string> includeStrings,std::vector<std::string> includeOptions,std::vector<std::string> excludeStrings,std::vector<std::string> excludeOptions);
+ void setRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule);
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ void setRsync(const bool rsync);
+ #endif
+ void setCheckDiskSpace(const bool &checkDiskSpace);
+ void setDefaultDestinationFolder(const std::string &defaultDestinationFolder);
+ void defaultDestinationFolderBrowse();
+ std::string askDestination();
+ static std::string stringimplode(const std::vector<std::string>& elems, const std::string &delim);
+ void setBuffer(const bool &buffer);
+public slots:
+ //user ask ask to add folder (add it with interface ask source/destination)
+ /** \brief add folder called on the interface
+ * Used by manual adding */
+ bool userAddFolder(const Ultracopier::CopyMode &mode) override;
+ /** \brief add file called on the interface
+ * Used by manual adding */
+ bool userAddFile(const Ultracopier::CopyMode &mode) override;
+ //action on the copy
+ /// \brief put the transfer in pause
+ void pause() override;
+ /// \brief resume the transfer
+ void resume() override;
+ /** \brief skip one transfer entry
+ * \param id id of the file to remove */
+ void skip(const uint64_t &id) override;
+ /// \brief cancel all the transfer
+ void cancel() override;
+ //edit the transfer list
+ /** \brief remove the selected item
+ * \param ids ids is the id list of the selected items */
+ void removeItems(const std::vector<uint64_t> &ids) override;
+ /** \brief move on top of the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsOnTop(const std::vector<uint64_t> &ids) override;
+ /** \brief move up the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsUp(const std::vector<uint64_t> &ids) override;
+ /** \brief move down the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsDown(const std::vector<uint64_t> &ids) override;
+ /** \brief move on bottom of the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsOnBottom(const std::vector<uint64_t> &ids) override;
+
+ /** \brief give the forced mode, to export/import transfer list */
+ void forceMode(const Ultracopier::CopyMode &mode) override;
+ /// \brief export the transfer list into a file
+ void exportTransferList() override;
+ /// \brief import the transfer list into a file
+ void importTransferList() override;
+
+ /** \brief to set the speed limitation
+ * -1 if not able, 0 if disabled */
+ bool setSpeedLimitation(const int64_t &speedLimitation) override;
+
+ // specific to this copy engine
+
+ /// \brief set if the rights shoul be keep
+ void setRightTransfer(const bool doRightTransfer);
+ /// \brief set keep date
+ void setKeepDate(const bool keepDate);
+ void setOsSpecFlags(bool os_spec_flags);
+ void setNativeCopy(bool native_copy);
+
+ void setMoveTheWholeFolder(const bool &moveTheWholeFolder);
+ void setFollowTheStrictOrder(const bool &followTheStrictOrder);
+ void setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles);
+ void setInodeThreads(const int &inodeThreads);
+ void setRenameTheOriginalDestination(const bool &renameTheOriginalDestination);
+ void inodeThreadsFinished();
+
+ /// \brief set auto start
+ void setAutoStart(const bool autoStart);
+ /// \brief set if need check if the destination folder exists
+ void setCheckDestinationFolderExists(const bool checkDestinationFolderExists);
+ void setMkFullPath(const bool mkFullPath);
+ void setChecksum(const bool checksum);
+ /// \brief reset widget
+ void resetTempWidget();
+ //autoconnect
+ void setFolderCollision(int index);
+ void setFolderError(int index);
+ void setFileCollision(int index);
+ void setFileError(int index);
+ /// \brief need retranslate the insterface
+ void newLanguageLoaded();
+private slots:
+ void setComboBoxFolderCollision(FolderExistsAction action,bool changeComboBox=true);
+ void setComboBoxFolderError(FileErrorAction action,bool changeComboBox=true);
+ void warningTransferList(const std::string &warning);
+ void errorTransferList(const std::string &error);
+signals:
+ //action on the copy
+ void signal_pause() const;
+ void signal_resume() const;
+ void signal_skip(const uint64_t &id) const;
+ void signal_setSpeedLimitation(const int64_t &speedLimitation);
+
+ //edit the transfer list
+ void signal_removeItems(const std::vector<uint64_t> &ids) const;
+ void signal_moveItemsOnTop(const std::vector<uint64_t> &ids) const;
+ void signal_moveItemsUp(const std::vector<uint64_t> &ids) const;
+ void signal_moveItemsDown(const std::vector<uint64_t> &ids) const;
+ void signal_moveItemsOnBottom(const std::vector<uint64_t> &ids) const;
+
+ void signal_forceMode(const Ultracopier::CopyMode &mode) const;
+ void signal_exportTransferList(const std::string &fileName) const;
+ void signal_importTransferList(const std::string &fileName) const;
+ void signal_exportErrorIntoTransferList(const std::string &fileName) const;
+
+ //action
+ void signal_setCollisionAction(FileExistsAction alwaysDoThisActionForFileExists) const;
+ //void signal_setComboBoxFolderCollision(FolderExistsAction action) const;// -> duplicate with signal_setFolderCollision ?
+ void signal_setFolderCollision(FolderExistsAction action) const;
+
+ //internal cancel
+ void tryCancel() const;
+ void getNeedPutAtBottom(const INTERNALTYPEPATH &fileInfo,const std::string &errorString,TransferThreadAsync * thread,const ErrorType &errorType) const;
+
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,std::string fonction,std::string text,std::string file,int ligne) const;
+ #endif
+
+ //other signals
+ void queryOneNewDialog() const;
+
+ void send_setFilters(const std::vector<Filters_rules> &include,const std::vector<Filters_rules> &exclude) const;
+ void send_sendNewRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule) const;
+ void send_followTheStrictOrder(const bool &followTheStrictOrder) const;
+ void send_deletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles) const;
+ void send_setInodeThreads(const int &inodeThreads) const;
+ void send_moveTheWholeFolder(const bool &moveTheWholeFolder) const;
+ void send_setRenameTheOriginalDestination(const bool &renameTheOriginalDestination) const;
+};
+
+#endif // COPY_ENGINE_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.pro b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.pro
new file mode 100755
index 0000000..c7b7651
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.pro
@@ -0,0 +1,115 @@
+CONFIG += c++11
+QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
+mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
+
+QT += widgets xml
+DEFINES += _FILE_OFFSET_BITS=64 UNICODE _UNICODE WIDESTRING _LARGE_FILE_SOURCE=1
+TEMPLATE = lib
+CONFIG += plugin
+
+HEADERS += \
+ $$PWD/StructEnumDefinition.h \
+ $$PWD/StructEnumDefinition_CopyEngine.h \
+ $$PWD/DebugEngineMacro.h \
+ $$PWD/CopyEngineUltracopier-SpecVariable.h \
+ $$PWD/TransferThread.h \
+ $$PWD/MkPath.h \
+ $$PWD/ListThread.h \
+ $$PWD/../../../interface/PluginInterface_CopyEngine.h \
+ $$PWD/../../../interface/OptionInterface.h \
+ $$PWD/../../../interface/FacilityInterface.h \
+ $$PWD/../../../cpp11addition.h \
+ $$PWD/Filters.h \
+ $$PWD/FilterRules.h \
+ $$PWD/RenamingRules.h \
+ $$PWD/DriveManagement.h \
+ $$PWD/CopyEngine.h \
+ $$PWD/DebugDialog.h \
+ $$PWD/CopyEngineFactory.h \
+ $$PWD/FileErrorDialog.h \
+ $$PWD/FileExistsDialog.h \
+ $$PWD/FileIsSameDialog.h \
+ $$PWD/FolderExistsDialog.h \
+ $$PWD/ScanFileOrFolder.h \
+ $$PWD/DiskSpace.h \
+ async/ReadThread.h \
+ async/WriteThread.h
+SOURCES += \
+ $$PWD/TransferThread.cpp \
+ $$PWD/MkPath.cpp \
+ $$PWD/ListThread.cpp \
+ $$PWD/../../../cpp11addition.cpp \
+ $$PWD/../../../cpp11additionstringtointcpp.cpp \
+ $$PWD/Filters.cpp \
+ $$PWD/FilterRules.cpp \
+ $$PWD/RenamingRules.cpp \
+ $$PWD/ListThread_InodeAction.cpp \
+ $$PWD/DriveManagement.cpp \
+ $$PWD/CopyEngine-collision-and-error.cpp \
+ $$PWD/CopyEngine.cpp \
+ $$PWD/DebugDialog.cpp \
+ $$PWD/CopyEngineFactory.cpp \
+ $$PWD/FileErrorDialog.cpp \
+ $$PWD/FileExistsDialog.cpp \
+ $$PWD/FileIsSameDialog.cpp \
+ $$PWD/FolderExistsDialog.cpp \
+ $$PWD/ScanFileOrFolder.cpp \
+ $$PWD/DiskSpace.cpp \
+ ListThreadActions.cpp \
+ ListThreadListChange.cpp \
+ ListThreadMedia.cpp \
+ ListThreadNew.cpp \
+ ListThreadOptions.cpp \
+ ListThreadScan.cpp \
+ ListThreadStat.cpp \
+ async/ReadThread.cpp \
+ async/WriteThread.cpp
+TARGET = $$qtLibraryTarget(copyEngine)
+TRANSLATIONS += \
+ $$PWD/Languages/ar/translation.ts \
+ $$PWD/Languages/de/translation.ts \
+ $$PWD/Languages/el/translation.ts \
+ $$PWD/Languages/en/translation.ts \
+ $$PWD/Languages/es/translation.ts \
+ $$PWD/Languages/fr/translation.ts \
+ $$PWD/Languages/hi/translation.ts \
+ $$PWD/Languages/hu/translation.ts \
+ $$PWD/Languages/id/translation.ts \
+ $$PWD/Languages/it/translation.ts \
+ $$PWD/Languages/ja/translation.ts \
+ $$PWD/Languages/ko/translation.ts \
+ $$PWD/Languages/nl/translation.ts \
+ $$PWD/Languages/no/translation.ts \
+ $$PWD/Languages/pl/translation.ts \
+ $$PWD/Languages/pt/translation.ts \
+ $$PWD/Languages/ru/translation.ts \
+ $$PWD/Languages/th/translation.ts \
+ $$PWD/Languages/tr/translation.ts \
+ $$PWD/Languages/zh/translation.ts
+
+FORMS += \
+ $$PWD/fileErrorDialog.ui \
+ $$PWD/fileExistsDialog.ui \
+ $$PWD/fileIsSameDialog.ui \
+ $$PWD/debugDialog.ui \
+ $$PWD/folderExistsDialog.ui \
+ $$PWD/Filters.ui \
+ $$PWD/FilterRules.ui \
+ $$PWD/RenamingRules.ui \
+ $$PWD/copyEngineOptions.ui \
+ $$PWD/DiskSpace.ui
+
+OTHER_FILES += \
+ $$PWD/informations.xml
+
+!CONFIG(static) {
+RESOURCES += \
+ $$PWD/copyEngineResources.qrc
+}
+
+win32 {
+ LIBS += -ladvapi32
+ DEFINES += WIDESTRING
+}
+HEADERS += $$PWD/async/TransferThreadAsync.h
+SOURCES += $$PWD/async/TransferThreadAsync.cpp
diff --git a/plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp b/plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp
new file mode 100755
index 0000000..9dc9bc2
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp
@@ -0,0 +1,654 @@
+/** \file factory.cpp
+\brief Define the factory to create new instance
+\author alpha_one_x86 */
+
+#include <QFileDialog>
+#include <QList>
+#include <QDebug>
+#include <cmath>
+#include <QStorageInfo>
+
+#include "../../../cpp11addition.h"
+#include "CopyEngineFactory.h"
+#include "TransferThread.h"
+#ifdef Q_OS_LINUX
+#include <sys/sysinfo.h>
+#endif
+#ifdef Q_OS_WIN32
+#include <sysinfoapi.h>
+#endif
+
+// The cmath header from MSVC does not contain round()
+#if (defined(_WIN64) || defined(_WIN32)) && defined(_MSC_VER)
+inline double round(double d) {
+ return floor( d + 0.5 );
+}
+#endif
+
+CopyEngineFactory::CopyEngineFactory() :
+ ui(new Ui::copyEngineOptions())
+{
+ qRegisterMetaType<FolderExistsAction>("FolderExistsAction");
+ qRegisterMetaType<FileExistsAction>("FileExistsAction");
+ qRegisterMetaType<std::vector<Filters_rules> >("std::vector<Filters_rules>");
+ qRegisterMetaType<TransferStat>("TransferStat");
+ qRegisterMetaType<ActionType>("ActionType");
+ qRegisterMetaType<ErrorType>("ErrorType");
+ qRegisterMetaType<Diskspace>("Diskspace");
+ qRegisterMetaType<std::vector<Diskspace> >("std::vector<Diskspace>");
+ qRegisterMetaType<Ultracopier::CopyMode>("Ultracopier::CopyMode");
+ qRegisterMetaType<TransferThread::dirent_uc>("TransferThread::dirent_uc");
+ #ifdef WIDESTRING
+ qRegisterMetaType<std::wstring>("std::wstring");
+ qRegisterMetaType<wchar_t *>("wchar_t *");
+ #endif
+
+ tempWidget=new QWidget();
+ ui->setupUi(tempWidget);
+ ui->toolBox->setCurrentIndex(0);
+ errorFound=false;
+ optionsEngine=NULL;
+ filters=new Filters(tempWidget);
+ renamingRules=new RenamingRules(tempWidget);
+
+ connect(ui->doRightTransfer, &QCheckBox::toggled, this,&CopyEngineFactory::setDoRightTransfer);
+ connect(ui->keepDate, &QCheckBox::toggled, this,&CopyEngineFactory::setKeepDate);
+ connect(ui->native_copy, &QCheckBox::toggled, this,&CopyEngineFactory::setNativeCopy);
+ connect(ui->os_spec_flags, &QCheckBox::toggled, this,&CopyEngineFactory::setOsSpecFlags);
+ connect(ui->inodeThreads, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngineFactory::on_inodeThreads_editingFinished);
+ connect(ui->autoStart, &QCheckBox::toggled, this,&CopyEngineFactory::setAutoStart);
+ connect(ui->comboBoxFolderError, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setFolderError);
+ connect(ui->comboBoxFolderCollision, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setFolderCollision);
+ connect(ui->comboBoxFileError, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setFileError);
+ connect(ui->comboBoxFileCollision, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setFileCollision);
+ connect(ui->checkBoxDestinationFolderExists, &QCheckBox::toggled, this,&CopyEngineFactory::setCheckDestinationFolder);
+ connect(ui->mkpath, &QCheckBox::toggled, this,&CopyEngineFactory::setMkFullPath);
+ connect(ui->checksum, &QCheckBox::toggled, this,&CopyEngineFactory::setChecksum);
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ connect(ui->rsync, &QCheckBox::toggled, this,&CopyEngineFactory::setRsync);
+ #endif
+ connect(ui->inodeThreads, &QSpinBox::editingFinished, this,&CopyEngineFactory::on_inodeThreads_editingFinished);
+ connect(ui->moveTheWholeFolder, &QCheckBox::toggled, this,&CopyEngineFactory::moveTheWholeFolder);
+ connect(ui->followTheStrictOrder, &QCheckBox::toggled, this,&CopyEngineFactory::followTheStrictOrder);
+ connect(ui->deletePartiallyTransferredFiles,&QCheckBox::toggled, this,&CopyEngineFactory::deletePartiallyTransferredFiles);
+ connect(ui->renameTheOriginalDestination,&QCheckBox::toggled, this,&CopyEngineFactory::renameTheOriginalDestination);
+ connect(ui->checkDiskSpace, &QCheckBox::toggled, this,&CopyEngineFactory::checkDiskSpace);
+ connect(ui->buffer, &QCheckBox::toggled, this,&CopyEngineFactory::setBuffer);
+ connect(ui->defaultDestinationFolderBrowse,&QPushButton::clicked, this,&CopyEngineFactory::defaultDestinationFolderBrowse);
+ connect(ui->defaultDestinationFolder,&QLineEdit::editingFinished, this,&CopyEngineFactory::defaultDestinationFolder);
+
+ connect(filters,&Filters::sendNewFilters,this,&CopyEngineFactory::sendNewFilters);
+ connect(ui->filters,&QPushButton::clicked,this,&CopyEngineFactory::showFilterDialog);
+ connect(renamingRules,&RenamingRules::sendNewRenamingRules,this,&CopyEngineFactory::sendNewRenamingRules);
+ connect(ui->renamingRules,&QPushButton::clicked,this,&CopyEngineFactory::showRenamingRules);
+
+ lunchInitFunction.setInterval(0);
+ lunchInitFunction.setSingleShot(true);
+ connect(&lunchInitFunction,&QTimer::timeout,this,&CopyEngineFactory::init,Qt::QueuedConnection);
+ lunchInitFunction.start();
+}
+
+CopyEngineFactory::~CopyEngineFactory()
+{
+ delete renamingRules;
+ delete filters;
+ delete ui;
+}
+
+void CopyEngineFactory::init()
+{
+}
+
+PluginInterface_CopyEngine * CopyEngineFactory::getInstance()
+{
+ CopyEngine *realObject=new CopyEngine(facilityEngine);
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ connect(realObject,&CopyEngine::debugInformation,this,&CopyEngineFactory::debugInformation);
+ #endif
+ realObject->connectTheSignalsSlots();
+ PluginInterface_CopyEngine * newTransferEngine=realObject;
+ connect(this,&CopyEngineFactory::reloadLanguage,realObject,&CopyEngine::newLanguageLoaded);
+ realObject->setRightTransfer(ui->doRightTransfer->isChecked());
+ realObject->setKeepDate(ui->keepDate->isChecked());
+ realObject->setOsSpecFlags(ui->os_spec_flags->isChecked());
+ realObject->setNativeCopy(ui->native_copy->isChecked());
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ realObject->setRsync(ui->rsync->isChecked());
+ #endif
+ realObject->setAutoStart(ui->autoStart->isChecked());
+ realObject->setFolderCollision(ui->comboBoxFolderCollision->currentIndex());
+ realObject->setFolderError(ui->comboBoxFolderError->currentIndex());
+ realObject->setFileCollision(ui->comboBoxFileCollision->currentIndex());
+ realObject->setFileError(ui->comboBoxFileError->currentIndex());
+ realObject->setCheckDestinationFolderExists(ui->checkBoxDestinationFolderExists->isChecked());
+ realObject->setMkFullPath(ui->mkpath->isChecked());
+ realObject->setChecksum(ui->checksum->isChecked());
+ realObject->set_setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
+ realObject->setRenamingRules(firstRenamingRule,otherRenamingRule);
+ realObject->setMoveTheWholeFolder(ui->moveTheWholeFolder->isChecked());
+ realObject->setFollowTheStrictOrder(ui->followTheStrictOrder->isChecked());
+ realObject->setDeletePartiallyTransferredFiles(ui->deletePartiallyTransferredFiles->isChecked());
+ realObject->setInodeThreads(ui->inodeThreads->value());
+ realObject->setRenameTheOriginalDestination(ui->renameTheOriginalDestination->isChecked());
+ realObject->setCheckDiskSpace(ui->checkDiskSpace->isChecked());
+ realObject->setDefaultDestinationFolder(ui->defaultDestinationFolder->text().toStdString());
+ realObject->setBuffer(ui->buffer->isChecked());
+ return newTransferEngine;
+}
+
+void CopyEngineFactory::setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath,
+ FacilityInterface * facilityInterface,const bool &portableVersion)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, writePath: "+writePath+", pluginPath:"+pluginPath);
+ this->facilityEngine=facilityInterface;
+ Q_UNUSED(portableVersion);
+ #ifndef ULTRACOPIER_PLUGIN_DEBUG
+ Q_UNUSED(writePath);
+ Q_UNUSED(pluginPath);
+ #endif
+ #if ! defined (Q_CC_GNU)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,QStringLiteral("Unable to change date time of files, only gcc is supported"));
+ #endif
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,COMPILERINFO);
+ #if defined (UNICODE)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"UNICODE set");
+ #endif
+ #if defined (_FILE_OFFSET_BITS)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"_FILE_OFFSET_BITS set to "+std::to_string(_FILE_OFFSET_BITS));
+ #endif
+ #if defined (WIDESTRING)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"WIDESTRING set");
+ #endif
+ #if defined (_LARGE_FILE_SOURCE)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"_LARGE_FILE_SOURCE set to "+std::to_string(_LARGE_FILE_SOURCE));
+ #endif
+ #if defined (ULTRACOPIER_PLUGIN_CHECKLISTTYPE)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"CHECK LIST TYPE set");
+ #else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"CHECK LIST TYPE not set");
+ #endif
+ #ifdef Q_OS_WIN32
+ MEMORYSTATUSEX memoryStatus;
+ if(GlobalMemoryStatusEx(&memoryStatus))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Detected Memory MB Windows: "+std::to_string(memoryStatus.ullTotalPhys/1024));
+ #endif
+ #ifdef Q_OS_LINUX
+ struct sysinfo info;
+ if(sysinfo(&info)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Detected Memory MB Linux: "+std::to_string(info.totalhigh*info.mem_unit/1024/1024));
+ #endif
+ if(options!=NULL)
+ {
+ //load the options
+ std::vector<std::pair<std::string, std::string> > KeysList;
+ KeysList.push_back(std::pair<std::string, std::string>("doRightTransfer","true"));
+ #ifndef Q_OS_LINUX
+ KeysList.push_back(std::pair<std::string, std::string>("keepDate","false"));
+ #else
+ KeysList.push_back(std::pair<std::string, std::string>("keepDate","true"));
+ #endif
+ KeysList.push_back(std::pair<std::string, std::string>("native_copy","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("os_spec_flags","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("blockSize",std::to_string(ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE)));
+ //to prevent swap and other bad effect, only under windows and unix for now
+ #if defined(Q_OS_WIN32) or (defined(Q_OS_LINUX) and defined(_SC_PHYS_PAGES))
+ size_t max_memory=getTotalSystemMemory()/1024;
+ if(max_memory>2147483648)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,QStringLiteral("detected memory: %1MB").arg(max_memory/1024).toStdString());
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,QStringLiteral("detected memory: %1GB").arg(max_memory/(1024*1024)).toStdString());
+ #endif
+ KeysList.push_back(std::pair<std::string, std::string>("parallelizeIfSmallerThan",std::to_string(128)));//128KB, better for modern hardware: Multiple queue en linux, SSD, ...
+ KeysList.push_back(std::pair<std::string, std::string>("autoStart","true"));
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ KeysList.push_back(std::pair<std::string, std::string>("rsync","true"));
+ #endif
+ KeysList.push_back(std::pair<std::string, std::string>("folderError",std::to_string(0)));
+ KeysList.push_back(std::pair<std::string, std::string>("folderCollision",std::to_string(0)));
+ KeysList.push_back(std::pair<std::string, std::string>("fileError",std::to_string(2)));
+ KeysList.push_back(std::pair<std::string, std::string>("fileCollision",std::to_string(0)));
+ KeysList.push_back(std::pair<std::string, std::string>("transferAlgorithm",std::to_string(0)));
+ KeysList.push_back(std::pair<std::string, std::string>("checkDestinationFolder","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("mkpath","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("checksum","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("includeStrings",""));
+ KeysList.push_back(std::pair<std::string, std::string>("includeOptions",""));
+ KeysList.push_back(std::pair<std::string, std::string>("excludeStrings",""));
+ KeysList.push_back(std::pair<std::string, std::string>("excludeOptions",""));
+ KeysList.push_back(std::pair<std::string, std::string>("checksumIgnoreIfImpossible","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("checksumOnlyOnError","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("firstRenamingRule",""));
+ KeysList.push_back(std::pair<std::string, std::string>("otherRenamingRule",""));
+ KeysList.push_back(std::pair<std::string, std::string>("osBufferLimited","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("osBufferLimit",std::to_string(512)));
+ KeysList.push_back(std::pair<std::string, std::string>("deletePartiallyTransferredFiles","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("moveTheWholeFolder","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("followTheStrictOrder","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("renameTheOriginalDestination","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("checkDiskSpace","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("defaultDestinationFolder",""));
+ KeysList.push_back(std::pair<std::string, std::string>("inodeThreads",std::to_string(16)));
+ #ifdef Q_OS_WIN32
+ //un Windows, without buffer the write seam should be aligned and full block, Ultracopier not support this
+ KeysList.push_back(std::pair<std::string, std::string>("osBuffer","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("buffer","true"));
+ #else
+ KeysList.push_back(std::pair<std::string, std::string>("osBuffer","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("buffer","false"));
+ #endif
+ options->addOptionGroup(KeysList);
+
+ optionsEngine=options;
+ resetOptions();
+
+ std::string firstRenamingRule=options->getOptionValue("firstRenamingRule");
+ if(firstRenamingRule.find("%name%")==std::string::npos || firstRenamingRule.find("%suffix%")==std::string::npos)
+ options->setOptionValue("firstRenamingRule","");
+ std::string otherRenamingRule=options->getOptionValue("otherRenamingRule");
+ if(otherRenamingRule.find("%name%")==std::string::npos || otherRenamingRule.find("%suffix%")==std::string::npos
+ || otherRenamingRule.find("%number%")==std::string::npos)
+ options->setOptionValue("otherRenamingRule","");
+ }
+}
+
+std::vector<std::string> CopyEngineFactory::supportedProtocolsForTheSource() const
+{
+ std::vector<std::string> l;
+ l.push_back("file");
+ return l;
+}
+
+std::vector<std::string> CopyEngineFactory::supportedProtocolsForTheDestination() const
+{
+ std::vector<std::string> l;
+ l.push_back("file");
+ return l;
+}
+
+Ultracopier::CopyType CopyEngineFactory::getCopyType()
+{
+ return Ultracopier::FileAndFolder;
+}
+
+Ultracopier::TransferListOperation CopyEngineFactory::getTransferListOperation()
+{
+ return Ultracopier::TransferListOperation_ImportExport;
+}
+
+bool CopyEngineFactory::canDoOnlyCopy() const
+{
+ return false;
+}
+
+/// \brief to get if have pause
+bool CopyEngineFactory::havePause()
+{
+ return true;
+}
+
+void CopyEngineFactory::resetOptions()
+{
+ auto options=optionsEngine;
+ optionsEngine=NULL;
+ #if ! defined (Q_CC_GNU)
+ ui->keepDate->setEnabled(false);
+ ui->keepDate->setToolTip(QStringLiteral("Not supported with this compiler"));
+ #endif
+ ui->doRightTransfer->setChecked(stringtobool(options->getOptionValue("doRightTransfer")));
+ ui->keepDate->setChecked(stringtobool(options->getOptionValue("keepDate")));
+ ui->os_spec_flags->setChecked(stringtobool(options->getOptionValue("os_spec_flags")));
+ ui->native_copy->setChecked(stringtobool(options->getOptionValue("native_copy")));
+ #ifdef Q_OS_WIN32
+ ui->native_copy->setEnabled(false);
+ ui->native_copy->setToolTip(tr("Supported only on Windows"));
+ #endif
+ ui->autoStart->setChecked(stringtobool(options->getOptionValue("autoStart")));
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ ui->rsync->setChecked(stringtobool(options->getOptionValue("rsync")));
+ #else
+ ui->label_rsync->setVisible(false);
+ ui->rsync->setVisible(false);
+ #endif
+ ui->comboBoxFolderError->setCurrentIndex(stringtouint32(options->getOptionValue("folderError")));
+ ui->comboBoxFolderCollision->setCurrentIndex(stringtouint32(options->getOptionValue("folderCollision")));
+ ui->comboBoxFileError->setCurrentIndex(stringtouint32(options->getOptionValue("fileError")));
+ ui->comboBoxFileCollision->setCurrentIndex(stringtouint32(options->getOptionValue("fileCollision")));
+ ui->checkBoxDestinationFolderExists->setChecked(stringtobool(options->getOptionValue("checkDestinationFolder")));
+ ui->mkpath->setChecked(stringtobool(options->getOptionValue("mkpath")));
+ ui->checksum->setChecked(stringtobool(options->getOptionValue("checksum")));
+ ui->deletePartiallyTransferredFiles->setChecked(stringtobool(options->getOptionValue("deletePartiallyTransferredFiles")));
+ ui->moveTheWholeFolder->setChecked(stringtobool(options->getOptionValue("moveTheWholeFolder")));
+ ui->followTheStrictOrder->setChecked(stringtobool(options->getOptionValue("followTheStrictOrder")));
+ ui->inodeThreads->setValue(stringtouint32(options->getOptionValue("inodeThreads")));
+ ui->renameTheOriginalDestination->setChecked(stringtobool(options->getOptionValue("renameTheOriginalDestination")));
+ ui->checkDiskSpace->setChecked(stringtobool(options->getOptionValue("checkDiskSpace")));
+ ui->defaultDestinationFolder->setText(QString::fromStdString(options->getOptionValue("defaultDestinationFolder")));
+ ui->buffer->setChecked(stringtobool(options->getOptionValue("buffer")));
+
+ //ui->autoStart->setChecked(options->getOptionValue("autoStart").toBool());//moved from options(), wrong previous place
+ std::string s;
+ s=options->getOptionValue("includeStrings");
+ includeStrings=stringtostringlist(s);
+ s=options->getOptionValue("includeOptions");
+ includeOptions=stringtostringlist(s);
+ s=options->getOptionValue("excludeStrings");
+ excludeStrings=stringtostringlist(s);
+ s=options->getOptionValue("excludeOptions");
+ excludeOptions=stringtostringlist(s);
+ if(!filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions))
+ {
+ includeStrings.clear();
+ includeOptions.clear();
+ excludeStrings.clear();
+ excludeOptions.clear();
+ options->setOptionValue("includeStrings","");
+ options->setOptionValue("includeOptions","");
+ options->setOptionValue("excludeStrings","");
+ options->setOptionValue("excludeOptions","");
+ }
+ firstRenamingRule=options->getOptionValue("firstRenamingRule");
+ otherRenamingRule=options->getOptionValue("otherRenamingRule");
+ renamingRules->setRenamingRules(firstRenamingRule,otherRenamingRule);
+
+ optionsEngine=options;
+}
+
+QWidget * CopyEngineFactory::options()
+{
+ return tempWidget;
+}
+
+void CopyEngineFactory::setDoRightTransfer(bool doRightTransfer)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("doRightTransfer",booltostring(doRightTransfer));
+}
+
+void CopyEngineFactory::setKeepDate(bool keepDate)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("keepDate",booltostring(keepDate));
+}
+
+void CopyEngineFactory::setOsSpecFlags(bool os_spec_flags)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("os_spec_flags",booltostring(os_spec_flags));
+}
+
+void CopyEngineFactory::setNativeCopy(bool native_copy)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("native_copy",booltostring(native_copy));
+}
+
+void CopyEngineFactory::setFolderCollision(int index)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("folderCollision",std::to_string(index));
+}
+
+void CopyEngineFactory::setFolderError(int index)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("folderError",std::to_string(index));
+}
+
+void CopyEngineFactory::setCheckDestinationFolder()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("checkDestinationFolder",booltostring(ui->checkBoxDestinationFolderExists->isChecked()));
+}
+
+void CopyEngineFactory::setMkFullPath()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("mkpath",booltostring(ui->mkpath->isChecked()));
+}
+
+void CopyEngineFactory::setChecksum()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("checksum",booltostring(ui->checksum->isChecked()));
+}
+
+void CopyEngineFactory::newLanguageLoaded()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, retranslate the widget options");
+ OptionInterface * optionsEngine=this->optionsEngine;
+ this->optionsEngine=NULL;
+ ui->retranslateUi(tempWidget);
+ ui->comboBoxFolderError->setItemText(0,tr("Ask"));
+ ui->comboBoxFolderError->setItemText(1,tr("Skip"));
+
+ ui->comboBoxFolderCollision->setItemText(0,tr("Ask"));
+ ui->comboBoxFolderCollision->setItemText(1,tr("Merge"));
+ ui->comboBoxFolderCollision->setItemText(2,tr("Skip"));
+ ui->comboBoxFolderCollision->setItemText(3,tr("Rename"));
+
+ ui->comboBoxFileError->setItemText(0,tr("Ask"));
+ ui->comboBoxFileError->setItemText(1,tr("Skip"));
+ ui->comboBoxFileError->setItemText(2,tr("Put at the end"));
+
+ ui->comboBoxFileCollision->setItemText(0,tr("Ask"));
+ ui->comboBoxFileCollision->setItemText(1,tr("Skip"));
+ ui->comboBoxFileCollision->setItemText(2,tr("Overwrite"));
+ ui->comboBoxFileCollision->setItemText(3,tr("Overwrite if different"));
+ ui->comboBoxFileCollision->setItemText(4,tr("Overwrite if newer"));
+ ui->comboBoxFileCollision->setItemText(5,tr("Overwrite if older"));
+ ui->comboBoxFileCollision->setItemText(6,tr("Rename"));
+
+ if(optionsEngine!=NULL)
+ {
+ filters->newLanguageLoaded();
+ renamingRules->newLanguageLoaded();
+ }
+ emit reloadLanguage();
+ this->optionsEngine=optionsEngine;
+}
+
+void CopyEngineFactory::showFilterDialog()
+{
+ if(optionsEngine==NULL)
+ {
+ QMessageBox::critical(NULL,tr("Options error"),tr("Options engine is not loaded. Unable to access the filters"));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"options not loaded");
+ return;
+ }
+ filters->exec();
+}
+
+void CopyEngineFactory::sendNewFilters(const std::vector<std::string> &includeStrings,const std::vector<std::string> &includeOptions,const std::vector<std::string> &excludeStrings,const std::vector<std::string> &excludeOptions)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"new filter");
+ this->includeStrings=includeStrings;
+ this->includeOptions=includeOptions;
+ this->excludeStrings=excludeStrings;
+ this->excludeOptions=excludeOptions;
+ if(optionsEngine!=NULL)
+ {
+ optionsEngine->setOptionValue("includeStrings",stringlisttostring(includeStrings));
+ optionsEngine->setOptionValue("includeOptions",stringlisttostring(includeOptions));
+ optionsEngine->setOptionValue("excludeStrings",stringlisttostring(excludeStrings));
+ optionsEngine->setOptionValue("excludeOptions",stringlisttostring(excludeOptions));
+ }
+}
+
+void CopyEngineFactory::sendNewRenamingRules(const std::string &firstRenamingRule,const std::string &otherRenamingRule)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"new filter");
+ this->firstRenamingRule=firstRenamingRule;
+ this->otherRenamingRule=otherRenamingRule;
+ if(optionsEngine!=NULL)
+ {
+ optionsEngine->setOptionValue("firstRenamingRule",firstRenamingRule);
+ optionsEngine->setOptionValue("otherRenamingRule",otherRenamingRule);
+ }
+}
+
+void CopyEngineFactory::showRenamingRules()
+{
+ if(optionsEngine==NULL)
+ {
+ QMessageBox::critical(NULL,tr("Options error"),tr("Options engine is not loaded, can't access to the filters"));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"options not loaded");
+ return;
+ }
+ renamingRules->exec();
+}
+
+void CopyEngineFactory::setFileCollision(int index)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index));
+ if(optionsEngine==NULL)
+ return;
+ switch(index)
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ case 4:
+ case 5:
+ case 6:
+ optionsEngine->setOptionValue("fileCollision",std::to_string(index));
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored");
+ break;
+ }
+}
+
+void CopyEngineFactory::setFileError(int index)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index));
+ if(optionsEngine==NULL)
+ return;
+ switch(index)
+ {
+ case 0:
+ case 1:
+ case 2:
+ optionsEngine->setOptionValue("fileError",std::to_string(index));
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored");
+ break;
+ }
+}
+
+void CopyEngineFactory::deletePartiallyTransferredFiles(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("deletePartiallyTransferredFiles",booltostring(checked));
+}
+
+void CopyEngineFactory::renameTheOriginalDestination(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("renameTheOriginalDestination",booltostring(checked));
+}
+
+void CopyEngineFactory::checkDiskSpace(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("checkDiskSpace",booltostring(checked));
+}
+
+void CopyEngineFactory::defaultDestinationFolderBrowse()
+{
+ QString destination = QFileDialog::getExistingDirectory(ui->defaultDestinationFolder,
+ QString::fromStdString(facilityEngine->translateText("Select destination directory")),
+ "",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
+ if(destination.isEmpty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Canceled by the user");
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ ui->defaultDestinationFolder->setText(destination);
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("defaultDestinationFolder",destination.toStdString());
+}
+
+void CopyEngineFactory::defaultDestinationFolder()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("defaultDestinationFolder",ui->defaultDestinationFolder->text().toStdString());
+}
+
+void CopyEngineFactory::followTheStrictOrder(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("followTheStrictOrder",booltostring(checked));
+}
+
+void CopyEngineFactory::moveTheWholeFolder(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("moveTheWholeFolder",booltostring(checked));
+}
+
+void CopyEngineFactory::on_inodeThreads_editingFinished()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the spinbox have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("inodeThreads",std::to_string(ui->inodeThreads->value()));
+}
+
+#ifdef Q_OS_WIN32
+size_t CopyEngineFactory::getTotalSystemMemory()
+{
+ MEMORYSTATUSEX status;
+ status.dwLength = sizeof(status);
+ GlobalMemoryStatusEx(&status);
+ return status.ullTotalPhys;
+}
+#endif
+
+#ifdef Q_OS_LINUX
+size_t CopyEngineFactory::getTotalSystemMemory()
+{
+ long pages = sysconf(_SC_PHYS_PAGES);
+ long page_size = sysconf(_SC_PAGE_SIZE);
+ return pages * page_size;
+}
+#endif
+
+#ifdef ULTRACOPIER_PLUGIN_RSYNC
+void CopyEngineFactory::setRsync(bool rsync)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("rsync",std::to_string(rsync));
+}
+#endif
+
+void CopyEngineFactory::setBuffer(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("buffer",booltostring(checked));
+}
+
+void CopyEngineFactory::setAutoStart(bool autoStart)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("autoStart",booltostring(autoStart));
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.h b/plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.h
new file mode 100755
index 0000000..810af80
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.h
@@ -0,0 +1,127 @@
+/** \file factory.h
+\brief Define the factory to create new instance
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include "StructEnumDefinition_CopyEngine.h"
+
+#include <QObject>
+#include <QList>
+#include <QStringList>
+#include <QFileInfo>
+#include <QProcess>
+#include <QTimer>
+
+#include "../../../interface/PluginInterface_CopyEngine.h"
+#include "qstorageinfo.h"
+#include "StructEnumDefinition.h"
+#include "ui_copyEngineOptions.h"
+#include "CopyEngine.h"
+#include "Environment.h"
+#include "Filters.h"
+#include "RenamingRules.h"
+
+#ifdef Q_OS_WIN32
+ #ifndef NOMINMAX
+ #define NOMINMAX
+ #endif
+ #include <windows.h>
+#endif
+#ifdef Q_OS_LINUX
+ #include <unistd.h>
+#endif
+
+#ifndef FACTORY_H
+#define FACTORY_H
+
+namespace Ui {
+ class copyEngineOptions;
+}
+
+/** \brief to generate copy engine instance */
+class CopyEngineFactory : public PluginInterface_CopyEngineFactory
+{
+ Q_OBJECT
+ #ifndef ULTRACOPIER_PLUGIN_ALL_IN_ONE_DIRECT
+ Q_PLUGIN_METADATA(IID "first-world.info.ultracopier.PluginInterface.CopyEngineFactory/1.0.0.0" FILE "plugin.json")
+ Q_INTERFACES(PluginInterface_CopyEngineFactory)
+ #endif
+public:
+ CopyEngineFactory();
+ ~CopyEngineFactory();
+ /// \brief to return the instance of the copy engine
+ PluginInterface_CopyEngine * getInstance() override;
+ /// \brief set the resources, to store options, to have facilityInterface
+ void setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath,
+ FacilityInterface * facilityInterface,const bool &portableVersion) override;
+ //get mode allowed
+ /// \brief define if can copy file, folder or both
+ Ultracopier::CopyType getCopyType() override;
+ /// \brief to return which kind of transfer list operation is supported
+ Ultracopier::TransferListOperation getTransferListOperation() override;
+ /// \brief define if can only copy, or copy and move
+ bool canDoOnlyCopy() const override;
+ /// \brief to get the supported protocols for the source
+ std::vector<std::string> supportedProtocolsForTheSource() const override;
+ /// \brief to get the supported protocols for the destination
+ std::vector<std::string> supportedProtocolsForTheDestination() const override;
+ /// \brief to get the options of the copy engine
+ QWidget * options() override;
+ /// \brief to get if have pause
+ bool havePause() override;
+
+private:
+ Ui::copyEngineOptions *ui;
+ QWidget* tempWidget;
+ OptionInterface * optionsEngine;
+ bool errorFound;
+ FacilityInterface * facilityEngine;
+ Filters *filters;
+ RenamingRules *renamingRules;
+ QStorageInfo storageInfo;
+ QTimer lunchInitFunction;
+ std::vector<std::string> includeStrings,includeOptions,excludeStrings,excludeOptions;
+ std::string firstRenamingRule,otherRenamingRule;
+
+#if defined(Q_OS_WIN32) || (defined(Q_OS_LINUX) && defined(_SC_PHYS_PAGES))
+ static size_t getTotalSystemMemory();
+#endif
+private slots:
+ void init();
+ void setDoRightTransfer(bool doRightTransfer);
+ void setKeepDate(bool keepDate);
+ void setOsSpecFlags(bool os_spec_flags);
+ void setNativeCopy(bool native_copy);
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ void setRsync(bool rsync);
+ #endif
+ void setFolderCollision(int index);
+ void setFolderError(int index);
+ void setCheckDestinationFolder();
+ void setMkFullPath();
+ void setChecksum();
+ void showFilterDialog();
+ void sendNewFilters(const std::vector<std::string> &includeStrings,const std::vector<std::string> &includeOptions,
+ const std::vector<std::string> &excludeStrings,const std::vector<std::string> &excludeOptions);
+ void sendNewRenamingRules(const std::string &firstRenamingRule, const std::string &otherRenamingRule);
+ void showRenamingRules();
+ void setFileCollision(int index);
+ void setFileError(int index);
+ void deletePartiallyTransferredFiles(bool checked);
+ void renameTheOriginalDestination(bool checked);
+ void checkDiskSpace(bool checked);
+ void defaultDestinationFolderBrowse();
+ void defaultDestinationFolder();
+ void followTheStrictOrder(bool checked);
+ void moveTheWholeFolder(bool checked);
+ void on_inodeThreads_editingFinished();
+ void setBuffer(bool checked);
+ void setAutoStart(bool autoStart);
+public slots:
+ void resetOptions() override;
+ void newLanguageLoaded() override;
+signals:
+ void reloadLanguage() const;
+};
+
+#endif // FACTORY_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/CopyEngineUltracopier-SpecVariable.h b/plugins/CopyEngine/Ultracopier-Spec/CopyEngineUltracopier-SpecVariable.h
new file mode 100755
index 0000000..247680c
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngineUltracopier-SpecVariable.h
@@ -0,0 +1,43 @@
+/** \file Variable.h
+\brief Define the environment variable
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef VARIABLE_H
+#define VARIABLE_H
+
+//Un-comment this next line to put ultracopier plugin in debug mode
+#ifndef ULTRACOPIER_NODEBUG
+//#define ULTRACOPIER_PLUGIN_DEBUG
+//#define ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER
+//#define ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+#define ULTRACOPIER_PLUGIN_DEBUG_WINDOW_TIMER 150
+#endif
+
+#define ULTRACOPIER_PLUGIN_MINTIMERINTERVAL 50
+#define ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL 100
+#define ULTRACOPIER_PLUGIN_NUMSEMSPEEDMANAGEMENT 2
+#define ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER 1
+#define ULTRACOPIER_PLUGIN_MINIMALYEAR_TIMESTAMPS 788965200//1995
+#define ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE 256 //in KB
+#define ULTRACOPIER_PLUGIN_DEFAULT_SEQUENTIAL_NUMBER_OF_BLOCK 512
+#define ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK 128
+#define ULTRACOPIER_PLUGIN_MAX_BLOCK_SIZE 16*1024 //in KB
+#define ULTRACOPIER_PLUGIN_MAX_SEQUENTIAL_NUMBER_OF_BLOCK 2048
+#define ULTRACOPIER_PLUGIN_MAX_PARALLEL_NUMBER_OF_BLOCK 128 //in KB
+
+//if set, check the inode type at scanFileOrFolder, deprecated into the new algorithm and not used
+#define ULTRACOPIER_PLUGIN_CHECKLISTTYPE
+#define ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+
+//#define ULTRACOPIER_PLUGIN_RIGHTS
+
+/** \brief Need be greater than 2, but greater than 20 to be efficient */
+#define ULTRACOPIER_PLUGIN_TIME_UPDATE_TRASNFER_LIST 40
+#define ULTRACOPIER_PLUGIN_TIME_UPDATE_PROGRESSION 200
+#define ULTRACOPIER_PLUGIN_TIME_UPDATE_MOUNT_MS 60*1000
+
+#endif // VARIABLE_H
+
+
+
diff --git a/plugins/CopyEngine/Ultracopier-Spec/DebugDialog.cpp b/plugins/CopyEngine/Ultracopier-Spec/DebugDialog.cpp
new file mode 100755
index 0000000..79e1088
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/DebugDialog.cpp
@@ -0,0 +1,63 @@
+/** \file debugDialog.cpp
+\brief Define the dialog to have debug information
+\author alpha_one_x86 */
+
+#include "DebugDialog.h"
+#include "ui_debugDialog.h"
+#include "CopyEngine.h"
+
+#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+
+DebugDialog::DebugDialog(QWidget *parent) :
+ QWidget(parent),
+ ui(new Ui::debugDialog)
+{
+ ui->setupUi(this);
+ connect(&timer,&QTimer::timeout,this,&DebugDialog::updateOnTimer);
+ timer.start(200);
+}
+
+DebugDialog::~DebugDialog()
+{
+ delete ui;
+}
+
+void DebugDialog::setTransferList(const std::vector<std::string> &list)
+{
+ ui->tranferList->clear();
+ unsigned int index=0;
+ while(index<list.size())
+ {
+ ui->tranferList->addItem(QString::fromStdString(list.at(index)));
+ index++;
+ }
+}
+
+void DebugDialog::setActiveTransfer(const int &activeTransfer)
+{
+ ui->spinBoxActiveTransfer->setValue(activeTransfer);
+}
+
+void DebugDialog::setInodeUsage(const int &inodeUsage)
+{
+ ui->spinBoxNumberOfInode->setValue(inodeUsage);
+}
+
+void DebugDialog::setTransferThreadList(const std::vector<std::string> &list)
+{
+ ui->transferThreadList->clear();
+ unsigned int index=0;
+ while(index<list.size())
+ {
+ ui->transferThreadList->addItem(QString::fromStdString(list.at(index)));
+ index++;
+ }
+}
+
+void DebugDialog::updateOnTimer()
+{
+ ui->alreadyExistsQueue->setValue(copyEngine->alreadyExistsQueue.size());
+ ui->errorQueue->setValue(copyEngine->errorQueue.size());
+}
+
+#endif
diff --git a/plugins/CopyEngine/Ultracopier-Spec/DebugDialog.h b/plugins/CopyEngine/Ultracopier-Spec/DebugDialog.h
new file mode 100755
index 0000000..0da388e
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/DebugDialog.h
@@ -0,0 +1,48 @@
+/** \file debugDialog.h
+\brief Define the dialog to have debug information
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef DEBUGDAILOG_H
+#define DEBUGDAILOG_H
+
+#include "Environment.h"
+
+#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+#include <QWidget>
+#include <QTimer>
+
+namespace Ui {
+ class debugDialog;
+}
+
+class CopyEngine;
+
+/// \brief class to the dialog to have debug information
+class DebugDialog : public QWidget
+{
+ Q_OBJECT
+public:
+ explicit DebugDialog(QWidget *parent = 0);
+ ~DebugDialog();
+ /// \brief to set the transfer list, limited in result to not slow down the application
+ void setTransferList(const std::vector<std::string> &list);
+ /// \brief show the transfer thread, it show be a thread pool in normal time
+ void setTransferThreadList(const std::vector<std::string> &list);
+ /// \brief show how many transfer is active
+ void setActiveTransfer(const int &activeTransfer);
+ /// \brief show many many inode is manipulated
+ void setInodeUsage(const int &inodeUsage);
+
+ CopyEngine *copyEngine;
+private:
+ Ui::debugDialog *ui;
+ QTimer timer;
+
+private slots:
+ void updateOnTimer();
+};
+
+#endif // ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+
+#endif // DEBUGDAILOG_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/DebugEngineMacro.h b/plugins/CopyEngine/Ultracopier-Spec/DebugEngineMacro.h
new file mode 100755
index 0000000..f9b5349
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/DebugEngineMacro.h
@@ -0,0 +1,28 @@
+/** \file DebugEngineMacro.h
+\brief Define the macro for the debug
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef DEBUGENGINEMACRO_H
+#define DEBUGENGINEMACRO_H
+
+#ifdef WIN32
+# define __func__ __FUNCTION__
+#endif
+
+/// \brief Macro for the debug log
+#ifdef ULTRACOPIER_PLUGIN_DEBUG
+ #if defined (__FILE__) && defined (__LINE__)
+ #define ULTRACOPIER_DEBUGCONSOLE(a,b) emit debugInformation(a,__func__,b,__FILE__,__LINE__)
+ #else
+ #define ULTRACOPIER_DEBUGCONSOLE(a,b) emit debugInformation(a,__func__,b)
+ #endif
+#else // ULTRACOPIER_PLUGIN_DEBUG
+ #define ULTRACOPIER_DEBUGCONSOLE(a,b) void()
+#endif // ULTRACOPIER_PLUGIN_DEBUG
+
+#endif // DEBUGENGINEMACRO_H
+
+
+
+
diff --git a/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.cpp b/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.cpp
new file mode 100755
index 0000000..e9b996d
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.cpp
@@ -0,0 +1,53 @@
+#include "DiskSpace.h"
+#include "ui_DiskSpace.h"
+#include "StructEnumDefinition_CopyEngine.h"
+
+DiskSpace::DiskSpace(FacilityInterface * facilityEngine,std::vector<Diskspace> list,QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::DiskSpace)
+{
+ Qt::WindowFlags flags = windowFlags();
+ #ifdef Q_OS_LINUX
+ flags=flags & ~Qt::X11BypassWindowManagerHint;
+ #endif
+ flags=flags | Qt::WindowStaysOnTopHint;
+ setWindowFlags(flags);
+
+ ui->setupUi(this);
+ ok=false;
+ int index=0;
+ int size=list.size();
+ QString drives;
+ while(index<size)
+ {
+ drives+=tr("Drives %1 have %2 available but need %3")
+ .arg(QString::fromStdString(list.at(index).drive))
+ .arg(QString::fromStdString(facilityEngine->sizeToString(list.at(index).freeSpace)))
+ .arg(QString::fromStdString(facilityEngine->sizeToString(list.at(index).requiredSpace)));
+ drives+=QStringLiteral("<br />");
+ index++;
+ }
+ ui->drives->setText(drives);
+}
+
+DiskSpace::~DiskSpace()
+{
+ delete ui;
+}
+
+void DiskSpace::on_ok_clicked()
+{
+ ok=true;
+ close();
+}
+
+void DiskSpace::on_cancel_clicked()
+{
+ ok=false;
+ close();
+}
+
+bool DiskSpace::getAction() const
+{
+ return ok;
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.h b/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.h
new file mode 100755
index 0000000..5a923ab
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.h
@@ -0,0 +1,29 @@
+#ifndef DISKSPACE_H
+#define DISKSPACE_H
+
+#include <QDialog>
+#include <vector>
+#include "../../../interface/PluginInterface_CopyEngine.h"
+#include "StructEnumDefinition_CopyEngine.h"
+
+namespace Ui {
+class DiskSpace;
+}
+
+class DiskSpace : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit DiskSpace(FacilityInterface * facilityEngine,std::vector<Diskspace> list,QWidget *parent = 0);
+ ~DiskSpace();
+ bool getAction() const;
+private slots:
+ void on_ok_clicked();
+ void on_cancel_clicked();
+private:
+ Ui::DiskSpace *ui;
+ bool ok;
+};
+
+#endif // DISKSPACE_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.ui b/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.ui
new file mode 100755
index 0000000..ebf380f
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.ui
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DiskSpace</class>
+ <widget class="QDialog" name="DiskSpace">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>367</width>
+ <height>146</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Disk space</string>
+ </property>
+ <property name="windowIcon">
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/remove.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/remove.png</iconset>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>You need more space on this drive to finish this transfer</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QTextBrowser" name="drives"/>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="ok">
+ <property name="text">
+ <string>Continue</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="cancel">
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="copyEngineResources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/DriveManagement.cpp b/plugins/CopyEngine/Ultracopier-Spec/DriveManagement.cpp
new file mode 100755
index 0000000..148eabb
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/DriveManagement.cpp
@@ -0,0 +1,180 @@
+#include "DriveManagement.h"
+
+#include <QDir>
+#include <QFileInfoList>
+#include <QStorageInfo>
+
+#include "../../../cpp11addition.h"
+
+DriveManagement::DriveManagement()
+{
+ tryUpdate();
+ #ifdef Q_OS_WIN32
+ reg3=std::regex("^[a-zA-Z]:[\\\\/].*");
+ reg4=std::regex("^([a-zA-Z]:[\\\\/]).*$");
+ #endif
+ /// \warn ULTRACOPIER_DEBUGCONSOLE() don't work here because the sinal slot is not connected!
+}
+
+//get drive of an file or folder
+/// \todo do network drive support for windows
+std::string DriveManagement::getDrive(const std::string &fileOrFolder) const
+{
+ const std::string &inode=fileOrFolder;
+ Q_UNUSED(inode);
+ #ifdef Q_OS_WIN32
+ //optimized to windows version:
+ if(fileOrFolder.size()>=3)
+ {
+ if(fileOrFolder.at(1)==L':' && (fileOrFolder.at(2)==L'\\' || fileOrFolder.at(2)==L'/'))
+ {
+ char driveLetter=toupper(fileOrFolder.at(0));
+ return driveLetter+std::string(":/");
+ }
+ }
+
+ if(fileOrFolder.size()>=5)
+ {
+ char f1=fileOrFolder.at(0);
+ char f2=fileOrFolder.at(1);
+ if(f1=='/' || f1=='\\')
+ if(f2=='/' || f2=='\\')
+ {
+ bool postSeparador=false;
+ std::string post;
+ unsigned int index=2;
+ unsigned int s=2;
+ while(index<fileOrFolder.size())
+ {
+ const char c=fileOrFolder.at(index);
+ if(c=='/' || c=='\\')
+ {
+ if(postSeparador==false)
+ {
+ post="//"+fileOrFolder.substr(2,index-2);
+ postSeparador=true;
+ char c;
+ do
+ {
+ index++;
+ c=fileOrFolder.at(index);
+ } while((c=='/' || c=='\\') && index<fileOrFolder.size());
+ s=index;
+ }
+ else
+ return post+"/"+fileOrFolder.substr(s,index-s);
+ }
+ index++;
+ }
+ return post;
+ }
+ /*std::string returnString=fileOrFolder;
+ std::regex_replace(returnString,reg2,"$1");
+ return returnString;*/
+ }
+ //due to lack of WMI support into mingw, the new drive event is never called, this is a workaround
+ if(std::regex_match(fileOrFolder,reg3))
+ {
+ std::string returnString=fileOrFolder;
+ std::regex_replace(returnString,reg4,"$1");
+ return QDir::toNativeSeparators(QString::fromStdString(returnString)).toUpper().toStdString();
+ }
+ #else
+ int size=mountSysPoint.size();
+ for (int i = 0; i < size; ++i) {
+ if(stringStartWith(inode,mountSysPoint.at(i)))
+ return mountSysPoint.at(i);
+ }
+ #endif
+ //if unable to locate the right mount point
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"unable to locate the right mount point for: "+inode+", mount point: "+stringimplode(mountSysPoint,";"));
+ return std::string();
+}
+
+std::string DriveManagement::getDriveType(const std::string &drive) const
+{
+ int index=vectorindexOf(mountSysPoint,drive);
+ if(index!=-1)
+ return driveType.at(index);
+ return std::string();
+}
+
+bool DriveManagement::isSameDrive(const std::string &file1,const std::string &file2) const
+{
+ if(file1.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"file1 is empty");
+ return false;
+ }
+ if(file2.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"file2 is empty");
+ return false;
+ }
+ if(mountSysPoint.size()==0)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"no mount point found");
+ return false;
+ }
+ const std::string &drive1=getDrive(file1);
+ if(drive1.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"drive for the file1 not found: "+file1);
+ return false;
+ }
+ const std::string &drive2=getDrive(file2);
+ if(drive2.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"drive for the file2 not found: "+file2);
+ return false;
+ }
+ if(drive1==drive2)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,drive1+" is egal to "+drive2);
+ return true;
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,drive1+" is NOT egal to "+drive2);
+ return false;
+ }
+}
+
+void DriveManagement::tryUpdate()
+{
+ mountSysPoint.clear();
+ driveType.clear();
+ std::vector<std::pair<std::string/*mountSysPoint*/,std::string/*driveType*/> > temp;
+ const QList<QStorageInfo> mountedVolumesList=QStorageInfo::mountedVolumes();
+ int index=0;
+ while(index<mountedVolumesList.size())
+ {
+ std::string mountSysPoint=QDir::toNativeSeparators(mountedVolumesList.at(index).rootPath()).toStdString();
+ #ifdef Q_OS_WIN32
+ std::string driveType;
+ if(mountSysPoint!="A:\\" && mountSysPoint!="A:/" && mountSysPoint!="A:" && mountSysPoint!="A" &&
+ mountSysPoint!="a:\\" && mountSysPoint!="a:/" && mountSysPoint!="a:" && mountSysPoint!="a")
+ {
+ const QByteArray &data=mountedVolumesList.at(index).fileSystemType();
+ driveType=std::string(data.constData(),data.size());
+ }
+ #else
+ const QByteArray &data=mountedVolumesList.at(index).fileSystemType();
+ std::string driveType=std::string(data.constData(),data.size());
+ #endif
+ temp.push_back(std::pair<std::string/*mountSysPoint*/,std::string/*driveType*/>(mountSysPoint,driveType));
+ index++;
+ }
+ /*sort larger to small mount point, to correctly detect it: /mnt, /
+ then /mnt/folder/file will be detected as /mnt
+ then /folder/file will be detected as / */
+ std::sort(temp.begin(), temp.end(), [](
+ std::pair<std::string/*mountSysPoint*/,std::string/*driveType*/> a,
+ std::pair<std::string/*mountSysPoint*/,std::string/*driveType*/> b) {
+ return a.first.size() > b.first.size();
+ });
+ for(const std::pair<std::string/*mountSysPoint*/,std::string/*driveType*/> &a : temp) {
+ mountSysPoint.push_back(a.first);
+ driveType.push_back(a.second);
+ }
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/DriveManagement.h b/plugins/CopyEngine/Ultracopier-Spec/DriveManagement.h
new file mode 100755
index 0000000..24c8af6
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/DriveManagement.h
@@ -0,0 +1,34 @@
+#ifndef DRIVEMANAGEMENT_H
+#define DRIVEMANAGEMENT_H
+
+#include <QObject>
+#include <QString>
+#include <QStringList>
+#include <QRegularExpression>
+#include <QStorageInfo>
+#include <QTimer>
+
+#include "Environment.h"
+
+class DriveManagement : public QObject
+{
+ Q_OBJECT
+public:
+ explicit DriveManagement();
+ bool isSameDrive(const std::string &file1, const std::string &file2) const;
+ /// \brief get drive of an file or folder
+ std::string getDrive(const std::string &fileOrFolder) const;
+ std::string getDriveType(const std::string &drive) const;
+ void tryUpdate();
+protected:
+ std::vector<std::string> mountSysPoint;
+ std::vector<std::string> driveType;
+ #ifdef Q_OS_WIN32
+ std::regex reg3,reg4;
+ #endif
+signals:
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,const std::string &fonction,const std::string &text,const std::string &file,const int &ligne) const;
+};
+
+#endif // DRIVEMANAGEMENT_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Environment.h b/plugins/CopyEngine/Ultracopier-Spec/Environment.h
new file mode 100755
index 0000000..9cb5732
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Environment.h
@@ -0,0 +1,11 @@
+/** \file Environment.h
+\brief Define the environment variable and global function
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include "CopyEngineUltracopier-SpecVariable.h"
+/// \brief The global include
+#include "StructEnumDefinition.h"
+#include "StructEnumDefinition_CopyEngine.h"
+#include "DebugEngineMacro.h"
+#include "CompilerInfo.h"
diff --git a/plugins/CopyEngine/Ultracopier-Spec/EventLoop.cpp b/plugins/CopyEngine/Ultracopier-Spec/EventLoop.cpp
new file mode 100755
index 0000000..c2e237a
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/EventLoop.cpp
@@ -0,0 +1,71 @@
+#include "EventLoop.h"
+#include "CallBackEventLoop.h"
+
+#ifdef ASYNCFILEMANIP
+
+#ifdef Q_OS_LINUX
+#include <sys/epoll.h>
+#include <signal.h>
+#endif
+
+EventLoop EventLoop::eventLoop;
+
+EventLoop::EventLoop()
+{
+ int efd = epoll_create1(0);
+ if(efd==-1)
+ {
+ fprintf(stderr,"%s, errno %i\n", strerror(errno), errno);
+ abort();
+ }
+ //start();->put cpu at 100%
+ stopIt=false;
+}
+
+EventLoop::~EventLoop()
+{
+ stop();
+ QThread::wait();
+}
+
+void EventLoop::stop()
+{
+ stopIt=true;
+}
+
+void EventLoop::run()
+{
+ while(!stopIt)
+ {
+ int number_of_events = epoll_wait(efd, events, MAXEVENTS, -1);
+ if (-1 == number_of_events && EINTR == errno)
+ return;
+ for(int i = 0; i < number_of_events; i++)
+ static_cast<CallBackEventLoop *>(events[i].data.ptr)->callBack();
+ }
+}
+
+void EventLoop::watchSource(CallBackEventLoop * const object,const int &fd)
+{
+ epoll_event event;
+ event.events = EPOLLIN | EPOLLPRI | EPOLLERR | EPOLLET;
+ event.data.ptr = object;
+ if(epoll_ctl(efd, EPOLL_CTL_ADD, fd, &event)!=0)
+ {
+ printf("%s, errno %i\n", strerror(errno), errno);
+ //abort();
+ }
+}
+
+void EventLoop::watchDestination(CallBackEventLoop * const object,const int &fd)
+{
+ epoll_event event;
+ event.events = EPOLLOUT | EPOLLPRI | EPOLLERR | EPOLLET;
+ event.data.ptr = object;
+ if(epoll_ctl(efd, EPOLL_CTL_ADD, fd, &event)!=0)
+ {
+ printf("%s, errno %i\n", strerror(errno), errno);
+ //abort();
+ }
+}
+#endif
diff --git a/plugins/CopyEngine/Ultracopier-Spec/EventLoop.h b/plugins/CopyEngine/Ultracopier-Spec/EventLoop.h
new file mode 100755
index 0000000..3d68ce2
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/EventLoop.h
@@ -0,0 +1,30 @@
+#ifndef EVENTLOOP_H
+#define EVENTLOOP_H
+
+#include "Variable.h"
+
+#ifdef ASYNCFILEMANIP
+#include <QThread>
+#include "CallBackEventLoop.h"
+#include <sys/epoll.h>
+#define MAXEVENTS 64
+
+class EventLoop : public QThread
+{
+public:
+ EventLoop();
+ ~EventLoop();
+ static EventLoop eventLoop;
+ void watchSource(CallBackEventLoop * const object,const int &fd);
+ void watchDestination(CallBackEventLoop * const object,const int &fd);
+protected:
+ void run();
+ void stop();
+private:
+ epoll_event events[MAXEVENTS];
+ int efd;
+ bool stopIt;
+};
+#endif
+
+#endif // EVENTLOOP_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp b/plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp
new file mode 100755
index 0000000..587a889
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp
@@ -0,0 +1,209 @@
+#include "FileErrorDialog.h"
+#include "ui_fileErrorDialog.h"
+#include "TransferThread.h"
+#include "../../../cpp11addition.h"
+
+#include <QString>
+
+bool FileErrorDialog::isInAdmin=false;
+
+FileErrorDialog::FileErrorDialog(QWidget *parent, INTERNALTYPEPATH fileInfo, std::string errorString, const ErrorType &errorType,FacilityInterface * facilityEngine) :
+ QDialog(parent),
+ ui(new Ui::fileErrorDialog)
+{
+ Qt::WindowFlags flags = windowFlags();
+ #ifdef Q_OS_LINUX
+ flags=flags & ~Qt::X11BypassWindowManagerHint;
+ #endif
+ flags=flags | Qt::WindowStaysOnTopHint;
+ setWindowFlags(flags);
+
+ ui->setupUi(this);
+ action=FileError_Cancel;
+ ui->label_error->setText(QString::fromStdString(errorString));
+#ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA fileInfoW;
+ if(GetFileAttributesExW(fileInfo.c_str(),GetFileExInfoStandard,&fileInfoW))
+ {
+ uint64_t mdate=fileInfoW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=fileInfoW.ftLastWriteTime.dwLowDateTime;
+ uint64_t size=fileInfoW.nFileSizeHigh;
+ size<<=32;
+ size|=fileInfoW.nFileSizeLow;
+#else
+ struct stat p_statbuf;
+ if(stat(TransferThread::internalStringTostring(fileInfo).c_str(), &p_statbuf)==0)
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ uint64_t mdate=p_statbuf.st_mtimespec.tv_sec;
+ #else
+ uint64_t mdate=*reinterpret_cast<int64_t*>(&p_statbuf.st_mtim);
+ #endif
+ #else
+ uint64_t mdate=*reinterpret_cast<int64_t*>(&p_statbuf.st_mtime);
+ #endif
+ const uint64_t size=p_statbuf.st_size;
+#endif
+ ui->label_content_file_name->setText(
+ QString::fromStdString(
+ TransferThread::resolvedName(
+ TransferThread::internalStringTostring(fileInfo)
+ )
+ )
+ );
+ if(ui->label_content_file_name->text().isEmpty())
+ {
+ ui->label_content_file_name->setText(QString::fromStdString(TransferThread::internalStringTostring(fileInfo)));
+ ui->label_folder->setVisible(false);
+ ui->label_content_folder->setVisible(false);
+ }
+ else
+ {
+ std::string folder=TransferThread::internalStringTostring(fileInfo);
+ if(folder.size()>80)
+ folder=folder.substr(0,38)+"..."+folder.substr(folder.size()-38);
+ ui->label_content_folder->setText(QString::fromStdString(FSabsolutePath(TransferThread::internalStringTostring(fileInfo))));
+ }
+ ui->label_content_size->setText(QString::fromStdString(facilityEngine->sizeToString(size)));
+ if(ULTRACOPIER_PLUGIN_MINIMALYEAR_TIMESTAMPS<mdate)
+ {
+ ui->label_modified->setVisible(true);
+ ui->label_content_modified->setVisible(true);
+ ui->label_content_modified->setText(QDateTime::fromMSecsSinceEpoch(mdate*1000).toString());
+ }
+ else
+ {
+ ui->label_modified->setVisible(false);
+ ui->label_content_modified->setVisible(false);
+ }
+ #ifdef Q_OS_WIN32
+ if(fileInfoW.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
+ #else
+ if(S_ISDIR(p_statbuf.st_mode))
+ #endif
+ {
+ this->setWindowTitle(tr("Error on folder"));
+ ui->label_size->hide();
+ ui->label_content_size->hide();
+ ui->label_file_name->setText(tr("Folder name"));
+ }
+ #ifdef Q_OS_UNIX
+ ui->label_file_destination->setVisible(p_statbuf.st_mode==S_IFLNK);
+ ui->label_content_file_destination->setVisible(p_statbuf.st_mode==S_IFLNK);
+ if(S_ISLNK(p_statbuf.st_mode))
+ {
+ char buf[1024];
+ ssize_t len;
+ if ((len = readlink(TransferThread::internalStringTostring(fileInfo).c_str(), buf, sizeof(buf)-1)) != -1)
+ {
+ buf[len] = '\0';
+ ui->label_content_file_destination->setText(buf);
+ }
+ }
+ #else
+ ui->label_file_destination->setVisible(false);
+ ui->label_content_file_destination->setVisible(false);
+ #endif
+ }
+ else
+ {
+ ui->label_content_file_name->setText(QString::fromStdString(TransferThread::resolvedName(TransferThread::internalStringTostring(fileInfo))));
+ if(ui->label_content_file_name->text().isEmpty())
+ {
+ ui->label_content_file_name->setText(QString::fromStdString(TransferThread::internalStringTostring(fileInfo)));
+ ui->label_folder->setVisible(false);
+ ui->label_content_folder->setVisible(false);
+ }
+ else
+ ui->label_content_folder->setText(QString::fromStdString(FSabsolutePath(TransferThread::internalStringTostring(fileInfo))));
+
+ ui->label_file_destination->hide();
+ ui->label_content_file_destination->hide();
+ ui->label_size->hide();
+ ui->label_content_size->hide();
+ ui->label_modified->hide();
+ ui->label_content_modified->hide();
+ }
+ if(errorType==ErrorType_Folder || errorType==ErrorType_FolderWithRety)
+ ui->PutToBottom->hide();
+ if(errorType==ErrorType_Folder)
+ ui->Retry->hide();
+
+ ui->Rights->hide();
+ #ifdef ULTRACOPIER_PLUGIN_RIGHTS
+ if(isInAdmin)
+ ui->Rights->hide();
+ #ifdef Q_OS_WIN32
+ if(errorType!=ErrorType_Rights)
+ ui->Rights->hide();
+ #else
+ ui->Rights->hide();
+ #endif
+ #else
+ ui->Rights->hide();
+ #endif
+}
+
+FileErrorDialog::~FileErrorDialog()
+{
+ delete ui;
+}
+
+void FileErrorDialog::changeEvent(QEvent *e)
+{
+ QWidget::changeEvent(e);
+ switch (e->type()) {
+ case QEvent::LanguageChange:
+ ui->retranslateUi(this);
+ break;
+ default:
+ break;
+ }
+}
+
+void FileErrorDialog::on_PutToBottom_clicked()
+{
+ action=FileError_PutToEndOfTheList;
+ this->close();
+}
+
+void FileErrorDialog::on_Retry_clicked()
+{
+ action=FileError_Retry;
+ this->close();
+}
+
+void FileErrorDialog::on_Skip_clicked()
+{
+ action=FileError_Skip;
+ this->close();
+}
+
+void FileErrorDialog::on_Cancel_clicked()
+{
+ action=FileError_Cancel;
+ this->close();
+}
+
+bool FileErrorDialog::getAlways()
+{
+ return ui->checkBoxAlways->isChecked();
+}
+
+FileErrorAction FileErrorDialog::getAction()
+{
+ return action;
+}
+
+void FileErrorDialog::on_checkBoxAlways_clicked()
+{
+ ui->Rights->setEnabled(!ui->checkBoxAlways->isChecked());
+}
+
+#ifdef ULTRACOPIER_PLUGIN_RIGHTS
+void FileErrorDialog::on_Rights_clicked()
+{
+}
+#endif
diff --git a/plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.h b/plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.h
new file mode 100755
index 0000000..635eebc
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.h
@@ -0,0 +1,56 @@
+/** \file fileErrorDialog.h
+\brief Define the dialog error on the file
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include <QDialog>
+#include <QWidget>
+#include <QString>
+#include <QDateTime>
+#include <string>
+#include "Environment.h"
+#include "../../../interface/FacilityInterface.h"
+
+#ifndef FILEERRORDIALOG_H
+#define FILEERRORDIALOG_H
+
+#ifdef WIDESTRING
+#define INTERNALTYPEPATH std::wstring
+#else
+#define INTERNALTYPEPATH std::string
+#endif
+
+namespace Ui {
+ class fileErrorDialog;
+}
+
+/// \brief to show error dialog, and ask what do
+class FileErrorDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ /// \brief create the object and pass all the informations to it
+ explicit FileErrorDialog(QWidget *parent, INTERNALTYPEPATH fileInfo, std::string errorString, const ErrorType &errorType, FacilityInterface *facilityEngine);
+ ~FileErrorDialog();
+ /// \brief return the the always checkbox is checked
+ bool getAlways();
+ /// \brief return the action clicked
+ FileErrorAction getAction();
+protected:
+ void changeEvent(QEvent *e);
+ static bool isInAdmin;
+private slots:
+ void on_PutToBottom_clicked();
+ void on_Retry_clicked();
+ void on_Skip_clicked();
+ void on_Cancel_clicked();
+ void on_checkBoxAlways_clicked();
+ #ifdef ULTRACOPIER_PLUGIN_RIGHTS
+ void on_Rights_clicked();
+ #endif
+private:
+ Ui::fileErrorDialog *ui;
+ FileErrorAction action;
+};
+
+#endif // FILEERRORDIALOG_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp b/plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp
new file mode 100755
index 0000000..e0d841e
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp
@@ -0,0 +1,313 @@
+#include "FileExistsDialog.h"
+#include "ui_fileExistsDialog.h"
+#include "TransferThread.h"
+#include "../../../cpp11addition.h"
+
+#ifdef Q_OS_WIN32
+#define CURRENTSEPARATOR "\\"
+#else
+#define CURRENTSEPARATOR "/"
+#endif
+
+#include <QMessageBox>
+
+FileExistsDialog::FileExistsDialog(QWidget *parent, INTERNALTYPEPATH source,
+ INTERNALTYPEPATH destination, std::string firstRenamingRule,
+ std::string otherRenamingRule,FacilityInterface * facilityEngine) :
+ QDialog(parent),
+ ui(new Ui::fileExistsDialog)
+{
+ Qt::WindowFlags flags = windowFlags();
+ #ifdef Q_OS_LINUX
+ flags=flags & ~Qt::X11BypassWindowManagerHint;
+ #endif
+ flags=flags | Qt::WindowStaysOnTopHint;
+ setWindowFlags(flags);
+
+ ui->setupUi(this);
+ action=FileExists_Cancel;
+ destinationInfo=TransferThread::internalStringTostring(destination);
+ oldName=TransferThread::resolvedName(TransferThread::internalStringTostring(destination));
+ ui->lineEditNewName->setText(QString::fromStdString(oldName));
+ ui->lineEditNewName->setPlaceholderText(QString::fromStdString(oldName));
+
+ ui->Overwrite->addAction(ui->actionOverwrite_if_newer);
+ ui->Overwrite->addAction(ui->actionOverwrite_if_older);
+ ui->Overwrite->addAction(ui->actionOverwrite_if_not_same_modification_date);
+ ui->Overwrite->addAction(ui->actionOverwrite_if_not_same_size);
+ ui->Overwrite->addAction(ui->actionOverwrite_if_not_same_size_and_date);
+
+ ui->label_content_source_file_name->setText(QString::fromStdString(TransferThread::resolvedName(TransferThread::internalStringTostring(source))));
+ std::string folder=TransferThread::internalStringTostring(FSabsolutePath(source));
+ if(folder.size()>80)
+ folder=folder.substr(0,38)+"..."+folder.substr(folder.size()-38);
+ ui->label_content_source_folder->setText(QString::fromStdString(folder));
+ ui->label_content_destination_file_name->setText(QString::fromStdString(TransferThread::resolvedName(TransferThread::internalStringTostring(destination))));
+ folder=TransferThread::internalStringTostring(FSabsolutePath(destination));
+ if(folder.size()>80)
+ folder=folder.substr(0,38)+"..."+folder.substr(folder.size()-38);
+ ui->label_content_destination_folder->setText(QString::fromStdString(folder));
+ //QDateTime maxTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1));
+#ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA sourceW;
+ if(GetFileAttributesExW(source.c_str(),GetFileExInfoStandard,&sourceW))
+ {
+ uint64_t mdate=sourceW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=sourceW.ftLastWriteTime.dwLowDateTime;
+ uint64_t size=sourceW.nFileSizeHigh;
+ size<<=32;
+ size|=sourceW.nFileSizeLow;
+#else
+ struct stat source_statbuf;
+ #ifdef Q_OS_UNIX
+ if(lstat(TransferThread::internalStringTostring(source).c_str(), &source_statbuf)==0)
+ #else
+ if(stat(TransferThread::internalStringTostring(source).c_str(), &source_statbuf)==0)
+ #endif
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ const uint64_t mdate=source_statbuf.st_mtimespec.tv_sec;
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtim);
+ #endif
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtime);
+ #endif
+ const uint64_t size=source_statbuf.st_size;
+#endif
+ ui->label_source_modified->setVisible(true);
+ ui->label_content_source_size->setVisible(true);
+ ui->label_content_source_size->setText(QString::fromStdString(facilityEngine->sizeToString(size)));
+ ui->label_content_source_modified->setVisible(true);
+ ui->label_content_source_modified->setText(QDateTime::fromMSecsSinceEpoch(mdate*1000).toString());
+ }
+ else
+ {
+ ui->label_content_source_size->setVisible(false);
+ ui->label_source_size->setVisible(false);
+ ui->label_source_modified->setVisible(false);
+ ui->label_content_source_modified->setVisible(false);
+ ui->label_source_modified->setVisible(false);
+ ui->label_content_source_modified->setVisible(false);
+ }
+#ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA destinationW;
+ if(GetFileAttributesExW(destination.c_str(),GetFileExInfoStandard,&destinationW))
+ {
+ uint64_t mdate=destinationW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=destinationW.ftLastWriteTime.dwLowDateTime;
+ uint64_t size=destinationW.nFileSizeHigh;
+ size<<=32;
+ size|=destinationW.nFileSizeLow;
+#else
+ struct stat destination_statbuf;
+ #ifdef Q_OS_UNIX
+ if(lstat(TransferThread::internalStringTostring(destination).c_str(), &destination_statbuf)==0)
+ #else
+ if(stat(TransferThread::internalStringTostring(destination).c_str(), &destination_statbuf)==0)
+ #endif
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ const uint64_t mdate=destination_statbuf.st_mtimespec.tv_sec;
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&destination_statbuf.st_mtim);
+ #endif
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&destination_statbuf.st_mtime);
+ #endif
+ const uint64_t size=destination_statbuf.st_size;
+#endif
+ ui->label_destination_modified->setVisible(true);
+ ui->label_content_destination_size->setVisible(true);
+ ui->label_content_destination_size->setText(QString::fromStdString(facilityEngine->sizeToString(size)));
+ ui->label_content_destination_modified->setVisible(true);
+ ui->label_content_destination_modified->setText(QDateTime::fromMSecsSinceEpoch(mdate*1000).toString());
+ }
+ else
+ {
+ ui->label_destination_modified->setVisible(false);
+ ui->label_content_destination_modified->setVisible(false);
+ ui->label_content_destination_size->setVisible(false);
+ ui->label_destination_size->setVisible(false);
+ ui->label_destination_modified->setVisible(false);
+ ui->label_content_destination_modified->setVisible(false);
+ }
+ this->firstRenamingRule=firstRenamingRule;
+ this->otherRenamingRule=otherRenamingRule;
+ on_SuggestNewName_clicked();
+}
+
+FileExistsDialog::~FileExistsDialog()
+{
+ delete ui;
+}
+
+void FileExistsDialog::changeEvent(QEvent *e)
+{
+ QWidget::changeEvent(e);
+ switch (e->type()) {
+ case QEvent::LanguageChange:
+ ui->retranslateUi(this);
+ break;
+ default:
+ break;
+ }
+}
+
+std::string FileExistsDialog::getNewName()
+{
+ if(oldName==ui->lineEditNewName->text().toStdString() || ui->checkBoxAlways->isChecked())
+ return oldName;
+ else
+ return ui->lineEditNewName->text().toStdString();
+}
+
+void FileExistsDialog::on_SuggestNewName_clicked()
+{
+ std::string destinationInfo=this->destinationInfo;
+ QString absolutePath=QString::fromStdString(FSabsolutePath(destinationInfo));
+ QString fileName=QString::fromStdString(TransferThread::resolvedName(destinationInfo));
+ QString suffix="";
+ QString destination;
+ QString newFileName;
+ //resolv the suffix
+ if(fileName.contains(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$"))))
+ {
+ suffix=fileName;
+ suffix.replace(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")),QStringLiteral("\\2"));
+ fileName.replace(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")),QStringLiteral("\\1"));
+ }
+ //resolv the new name
+ int num=1;
+ do
+ {
+ if(num==1)
+ {
+ if(firstRenamingRule.empty())
+ newFileName=tr("%name% - copy%suffix%");
+ else
+ newFileName=QString::fromStdString(firstRenamingRule);
+ }
+ else
+ {
+ if(otherRenamingRule.empty())
+ newFileName=tr("%name% - copy (%number%)%suffix%");
+ else
+ newFileName=QString::fromStdString(otherRenamingRule);
+ newFileName.replace(QStringLiteral("%number%"),QString::number(num));
+ }
+ newFileName.replace(QStringLiteral("%name%"),fileName);
+ newFileName.replace(QStringLiteral("%suffix%"),suffix);
+ destination=absolutePath;
+ if(!destination.endsWith('/')
+ #ifdef Q_OS_WIN32
+ && !destination.endsWith('\\')
+ #endif
+ )
+ destination+=CURRENTSEPARATOR;
+ destination+=newFileName;
+ destinationInfo=destination.toStdString();
+ num++;
+ }
+ while(TransferThread::exists(destinationInfo.c_str()));
+ ui->lineEditNewName->setText(newFileName);
+}
+
+void FileExistsDialog::on_Rename_clicked()
+{
+ action=FileExists_Rename;
+ this->close();
+}
+
+void FileExistsDialog::on_Overwrite_clicked()
+{
+ action=FileExists_Overwrite;
+ this->close();
+}
+
+void FileExistsDialog::on_Skip_clicked()
+{
+ action=FileExists_Skip;
+ this->close();
+}
+
+void FileExistsDialog::on_Cancel_clicked()
+{
+ action=FileExists_Cancel;
+ this->close();
+}
+
+void FileExistsDialog::on_actionOverwrite_if_newer_triggered()
+{
+ action=FileExists_OverwriteIfNewer;
+ this->close();
+}
+
+void FileExistsDialog::on_actionOverwrite_if_not_same_modification_date_triggered()
+{
+ action=FileExists_OverwriteIfNotSameMdate;
+ this->close();
+}
+
+FileExistsAction FileExistsDialog::getAction()
+{
+ return action;
+}
+
+bool FileExistsDialog::getAlways()
+{
+ return ui->checkBoxAlways->isChecked();
+}
+
+void FileExistsDialog::updateRenameButton()
+{
+ ui->Rename->setEnabled(ui->checkBoxAlways->isChecked() || (!ui->lineEditNewName->text().contains(QRegularExpression("[/\\\\\\*]")) && oldName!=ui->lineEditNewName->text().toStdString() && !ui->lineEditNewName->text().isEmpty()));
+}
+
+void FileExistsDialog::on_checkBoxAlways_toggled(bool checked)
+{
+ Q_UNUSED(checked);
+ updateRenameButton();
+}
+
+void FileExistsDialog::on_lineEditNewName_textChanged(const QString &arg1)
+{
+ Q_UNUSED(arg1);
+ updateRenameButton();
+}
+
+void FileExistsDialog::on_lineEditNewName_returnPressed()
+{
+ updateRenameButton();
+ if(ui->Rename->isEnabled())
+ on_Rename_clicked();
+ else
+ QMessageBox::warning(this,tr("Error"),tr("Try rename with using special characters"));
+}
+
+void FileExistsDialog::on_actionOverwrite_if_older_triggered()
+{
+ action=FileExists_OverwriteIfOlder;
+ this->close();
+}
+
+void FileExistsDialog::on_lineEditNewName_editingFinished()
+{
+ updateRenameButton();
+}
+
+void FileExistsDialog::on_actionOverwrite_if_not_same_size_triggered()
+{
+ action=FileExists_OverwriteIfNotSameSize;
+ this->close();
+}
+
+void FileExistsDialog::on_actionOverwrite_if_not_same_size_and_date_triggered()
+{
+ action=FileExists_OverwriteIfNotSameSizeAndDate;
+ this->close();
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.h b/plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.h
new file mode 100755
index 0000000..ae3e02b
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.h
@@ -0,0 +1,68 @@
+/** \file fileExistsDialog.h
+\brief Define the dialog when file already exists
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include <QDialog>
+#include <QWidget>
+#include <QString>
+#include <QDateTime>
+#include <string>
+#include "Environment.h"
+#include "../../../interface/FacilityInterface.h"
+
+#ifndef FILEEXISTSDIALOG_H
+#define FILEEXISTSDIALOG_H
+
+#ifdef WIDESTRING
+#define INTERNALTYPEPATH std::wstring
+#else
+#define INTERNALTYPEPATH std::string
+#endif
+
+namespace Ui {
+ class fileExistsDialog;
+}
+
+/// \brief to show file exists dialog, and ask what do
+class FileExistsDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ /// \brief create the object and pass all the informations to it
+ explicit FileExistsDialog(QWidget *parent, INTERNALTYPEPATH source, INTERNALTYPEPATH destination, std::string firstRenamingRule, std::string otherRenamingRule, FacilityInterface *facilityEngine);
+ ~FileExistsDialog();
+ /// \brief return the the always checkbox is checked
+ bool getAlways();
+ /// \brief return the action clicked
+ FileExistsAction getAction();
+ /// \brief return the new rename is case in manual renaming
+ std::string getNewName();
+protected:
+ void changeEvent(QEvent *e);
+private slots:
+ void on_SuggestNewName_clicked();
+ void on_Rename_clicked();
+ void on_Overwrite_clicked();
+ void on_Skip_clicked();
+ void on_Cancel_clicked();
+ void on_actionOverwrite_if_newer_triggered();
+ void on_actionOverwrite_if_not_same_modification_date_triggered();
+ void updateRenameButton();
+ void on_checkBoxAlways_toggled(bool checked);
+ void on_lineEditNewName_textChanged(const QString &arg1);
+ void on_lineEditNewName_returnPressed();
+ void on_actionOverwrite_if_older_triggered();
+ void on_lineEditNewName_editingFinished();
+ void on_actionOverwrite_if_not_same_size_triggered();
+ void on_actionOverwrite_if_not_same_size_and_date_triggered();
+private:
+ Ui::fileExistsDialog *ui;
+ FileExistsAction action;
+ std::string oldName;
+ std::string destinationInfo;
+ std::string firstRenamingRule;
+ std::string otherRenamingRule;
+};
+
+#endif // FILEEXISTSDIALOG_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp b/plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp
new file mode 100755
index 0000000..69d63d0
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp
@@ -0,0 +1,226 @@
+#include "FileIsSameDialog.h"
+#include "ui_fileIsSameDialog.h"
+#include "TransferThread.h"
+#include "../../../cpp11addition.h"
+
+#ifdef Q_OS_WIN32
+#define CURRENTSEPARATOR "\\"
+#else
+#define CURRENTSEPARATOR "/"
+#endif
+
+#include <QMessageBox>
+
+FileIsSameDialog::FileIsSameDialog(QWidget *parent, INTERNALTYPEPATH fileInfo,
+ std::string firstRenamingRule, std::string otherRenamingRule,FacilityInterface * facilityEngine) :
+ QDialog(parent),
+ ui(new Ui::fileIsSameDialog)
+{
+ Qt::WindowFlags flags = windowFlags();
+ #ifdef Q_OS_LINUX
+ flags=flags & ~Qt::X11BypassWindowManagerHint;
+ #endif
+ flags=flags | Qt::WindowStaysOnTopHint;
+ setWindowFlags(flags);
+
+ ui->setupUi(this);
+ action=FileExists_Cancel;
+ oldName=TransferThread::resolvedName(TransferThread::internalStringTostring(fileInfo));
+ destinationInfo=TransferThread::internalStringTostring(fileInfo);
+ ui->lineEditNewName->setText(QString::fromStdString(oldName));
+ ui->lineEditNewName->setPlaceholderText(QString::fromStdString(oldName));
+ ui->label_content_file_name->setText(QString::fromStdString(TransferThread::resolvedName(TransferThread::internalStringTostring(fileInfo))));
+ std::string folder=FSabsolutePath(TransferThread::internalStringTostring(fileInfo));
+ if(folder.size()>80)
+ folder=folder.substr(0,38)+"..."+folder.substr(folder.size()-38);
+ ui->label_content_folder->setText(QString::fromStdString(folder));
+ updateRenameButton();
+#ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA fileInfoW;
+ if(GetFileAttributesExW(fileInfo.c_str(),GetFileExInfoStandard,&fileInfoW))
+ {
+ uint64_t mdate=fileInfoW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=fileInfoW.ftLastWriteTime.dwLowDateTime;
+ uint64_t size=fileInfoW.nFileSizeHigh;
+ size<<=32;
+ size|=fileInfoW.nFileSizeLow;
+#else
+ struct stat source_statbuf;
+ #ifdef Q_OS_UNIX
+ if(lstat(TransferThread::internalStringTostring(fileInfo).c_str(), &source_statbuf)==0)
+ #else
+ if(stat(TransferThread::internalStringTostring(fileInfo).c_str(), &source_statbuf)==0)
+ #endif
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ const uint64_t mdate=source_statbuf.st_mtimespec.tv_sec;
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtim);
+ #endif
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtime);
+ #endif
+ const uint64_t size=source_statbuf.st_size;
+#endif
+ ui->label_content_size->setText(QString::fromStdString(facilityEngine->sizeToString(size)));
+ ui->label_content_size->setVisible(true);
+ if(ULTRACOPIER_PLUGIN_MINIMALYEAR_TIMESTAMPS<mdate)
+ {
+ ui->label_modified->setVisible(true);
+ ui->label_content_modified->setVisible(true);
+ ui->label_content_modified->setText(QDateTime::fromMSecsSinceEpoch(mdate*1000).toString());
+ }
+ else
+ {
+ ui->label_modified->setVisible(false);
+ ui->label_content_modified->setVisible(false);
+ }
+ }
+ else
+ {
+ ui->label_content_size->setVisible(false);
+ ui->label_size->setVisible(false);
+ ui->label_modified->setVisible(false);
+ ui->label_content_modified->setVisible(false);
+ }
+ this->firstRenamingRule=firstRenamingRule;
+ this->otherRenamingRule=otherRenamingRule;
+ on_SuggestNewName_clicked();
+}
+
+FileIsSameDialog::~FileIsSameDialog()
+{
+ delete ui;
+}
+
+void FileIsSameDialog::changeEvent(QEvent *e)
+{
+ QWidget::changeEvent(e);
+ switch (e->type()) {
+ case QEvent::LanguageChange:
+ ui->retranslateUi(this);
+ break;
+ default:
+ break;
+ }
+}
+
+std::string FileIsSameDialog::getNewName()
+{
+ if(oldName==ui->lineEditNewName->text().toStdString() || ui->checkBoxAlways->isChecked())
+ return oldName;
+ else
+ return ui->lineEditNewName->text().toStdString();
+}
+
+void FileIsSameDialog::on_SuggestNewName_clicked()
+{
+ std::string destinationInfo=this->destinationInfo;
+ QString absolutePath=QString::fromStdString(FSabsolutePath(destinationInfo));
+ QString fileName=QString::fromStdString(TransferThread::resolvedName(destinationInfo));
+ QString suffix="";
+ QString destination;
+ QString newFileName;
+ //resolv the suffix
+ if(fileName.contains(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$"))))
+ {
+ suffix=fileName;
+ suffix.replace(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")),QStringLiteral("\\2"));
+ fileName.replace(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")),QStringLiteral("\\1"));
+ }
+ //resolv the new name
+ int num=1;
+ do
+ {
+ if(num==1)
+ {
+ if(firstRenamingRule.empty())
+ newFileName=tr("%name% - copy%suffix%");
+ else
+ newFileName=QString::fromStdString(firstRenamingRule);
+ }
+ else
+ {
+ if(otherRenamingRule.empty())
+ newFileName=tr("%name% - copy (%number%)%suffix%");
+ else
+ newFileName=QString::fromStdString(otherRenamingRule);
+ newFileName.replace(QStringLiteral("%number%"),QString::number(num));
+ }
+ newFileName.replace(QStringLiteral("%name%"),fileName);
+ newFileName.replace(QStringLiteral("%suffix%"),suffix);
+ destination=absolutePath;
+ if(!destination.endsWith('/')
+ #ifdef Q_OS_WIN32
+ && !destination.endsWith('\\')
+ #endif
+ )
+ destination+=CURRENTSEPARATOR;
+ destination+=newFileName;
+ destinationInfo=destination.toStdString();
+ num++;
+ }
+ while(TransferThread::exists(destinationInfo.c_str()));
+ ui->lineEditNewName->setText(newFileName);
+}
+
+void FileIsSameDialog::on_Rename_clicked()
+{
+ action=FileExists_Rename;
+ this->close();
+}
+
+void FileIsSameDialog::on_Skip_clicked()
+{
+ action=FileExists_Skip;
+ this->close();
+}
+
+void FileIsSameDialog::on_Cancel_clicked()
+{
+ action=FileExists_Cancel;
+ this->close();
+}
+
+FileExistsAction FileIsSameDialog::getAction()
+{
+ return action;
+}
+
+bool FileIsSameDialog::getAlways()
+{
+ return ui->checkBoxAlways->isChecked();
+}
+
+void FileIsSameDialog::updateRenameButton()
+{
+ ui->Rename->setEnabled(ui->checkBoxAlways->isChecked() || (!ui->lineEditNewName->text().contains(QRegularExpression("[/\\\\\\*]")) && oldName!=ui->lineEditNewName->text().toStdString() && !ui->lineEditNewName->text().isEmpty()));
+}
+
+void FileIsSameDialog::on_lineEditNewName_textChanged(const QString &arg1)
+{
+ Q_UNUSED(arg1);
+ updateRenameButton();
+}
+
+void FileIsSameDialog::on_checkBoxAlways_toggled(bool checked)
+{
+ Q_UNUSED(checked);
+ updateRenameButton();
+}
+
+void FileIsSameDialog::on_lineEditNewName_returnPressed()
+{
+ updateRenameButton();
+ if(ui->Rename->isEnabled())
+ on_Rename_clicked();
+ else
+ QMessageBox::warning(this,tr("Error"),tr("Try rename with using special characters"));
+}
+
+void FileIsSameDialog::on_lineEditNewName_editingFinished()
+{
+ updateRenameButton();
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.h b/plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.h
new file mode 100755
index 0000000..25a43b9
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.h
@@ -0,0 +1,63 @@
+/** \file fileIsSameDialog.h
+\brief Define the dialog when file is same
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include <QDialog>
+#include <QWidget>
+#include <QString>
+#include <QDateTime>
+#include <string>
+#include "Environment.h"
+#include "../../../interface/FacilityInterface.h"
+
+#ifndef FILEISSAMEDIALOG_H
+#define FILEISSAMEDIALOG_H
+
+#ifdef WIDESTRING
+#define INTERNALTYPEPATH std::wstring
+#else
+#define INTERNALTYPEPATH std::string
+#endif
+
+namespace Ui {
+ class fileIsSameDialog;
+}
+
+/// \brief to show file is same dialog, and ask what do
+class FileIsSameDialog : public QDialog
+{
+ Q_OBJECT
+public:
+ /// \brief create the object and pass all the informations to it
+ explicit FileIsSameDialog(QWidget *parent, INTERNALTYPEPATH fileInfo, std::string firstRenamingRule, std::string otherRenamingRule, FacilityInterface *facilityEngine);
+ ~FileIsSameDialog();
+ /// \brief return the the always checkbox is checked
+ bool getAlways();
+ /// \brief return the action clicked
+ FileExistsAction getAction();
+ /// \brief return the new rename is case in manual renaming
+ std::string getNewName();
+protected:
+ void changeEvent(QEvent *e);
+private slots:
+ void on_SuggestNewName_clicked();
+ void on_Rename_clicked();
+ void on_Skip_clicked();
+ void on_Cancel_clicked();
+ void updateRenameButton();
+ void on_lineEditNewName_textChanged(const QString &arg1);
+ void on_checkBoxAlways_toggled(bool checked);
+ void on_lineEditNewName_returnPressed();
+ void on_lineEditNewName_editingFinished();
+private:
+ Ui::fileIsSameDialog *ui;
+ FileExistsAction action;
+ std::string oldName;
+ std::string destinationInfo;
+ std::string firstRenamingRule;
+ std::string otherRenamingRule;
+
+};
+
+#endif // FILEISSAMEDIALOG_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/FilterRules.cpp b/plugins/CopyEngine/Ultracopier-Spec/FilterRules.cpp
new file mode 100755
index 0000000..965f5f3
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/FilterRules.cpp
@@ -0,0 +1,199 @@
+#include "FilterRules.h"
+#include "ui_FilterRules.h"
+
+#include <QRegularExpression>
+
+FilterRules::FilterRules(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::FilterRules)
+{
+ ui->setupUi(this);
+ updateChecking();
+ haveBeenValided=false;
+}
+
+FilterRules::~FilterRules()
+{
+ delete ui;
+}
+
+bool FilterRules::getIsValid()
+{
+ return isValid && haveBeenValided;
+}
+
+std::string FilterRules::get_search_text()
+{
+ return ui->search->text().toStdString();
+}
+
+SearchType FilterRules::get_search_type()
+{
+ switch(ui->search_type->currentIndex())
+ {
+ case 0:
+ return SearchType_rawText;
+ case 1:
+ return SearchType_simpleRegex;
+ case 2:
+ return SearchType_perlRegex;
+ }
+ return SearchType_simpleRegex;
+}
+
+ApplyOn FilterRules::get_apply_on()
+{
+ switch(ui->apply_on->currentIndex())
+ {
+ case 0:
+ return ApplyOn_file;
+ case 2:
+ return ApplyOn_fileAndFolder;
+ case 1:
+ return ApplyOn_folder;
+ }
+ return ApplyOn_fileAndFolder;
+}
+
+bool FilterRules::get_need_match_all()
+{
+ return ui->need_match_all->isChecked();
+}
+
+void FilterRules::set_search_text(std::string search_text)
+{
+ ui->search->setText(QString::fromStdString(search_text));
+}
+
+void FilterRules::set_search_type(SearchType search_type)
+{
+ switch(search_type)
+ {
+ case SearchType_rawText:
+ ui->search_type->setCurrentIndex(0);
+ break;
+ case SearchType_simpleRegex:
+ ui->search_type->setCurrentIndex(1);
+ break;
+ case SearchType_perlRegex:
+ ui->search_type->setCurrentIndex(2);
+ break;
+ }
+}
+
+void FilterRules::set_apply_on(ApplyOn apply_on)
+{
+ switch(apply_on)
+ {
+ case ApplyOn_file:
+ ui->apply_on->setCurrentIndex(0);
+ break;
+ case ApplyOn_fileAndFolder:
+ ui->apply_on->setCurrentIndex(2);
+ break;
+ case ApplyOn_folder:
+ ui->apply_on->setCurrentIndex(1);
+ break;
+ }
+}
+
+void FilterRules::set_need_match_all(bool need_match_all)
+{
+ ui->need_match_all->setChecked(need_match_all);
+}
+
+void FilterRules::on_search_textChanged(const std::string &arg1)
+{
+ Q_UNUSED(arg1);
+ updateChecking();
+}
+
+void FilterRules::updateChecking()
+{
+ QRegularExpression regex;
+ isValid=!ui->search->text().isEmpty();
+ if(isValid)
+ {
+ QString tempString;
+ if(ui->search_type->currentIndex()==0)
+ {
+ //tempString=QRegularExpression::escape(ui->search->text()); -> generate bug because escape contains slash
+ if(tempString.contains('/') || tempString.contains('\\'))
+ isValid=false;
+ }
+ else if(ui->search_type->currentIndex()==1)
+ {
+ tempString=QRegularExpression::escape(ui->search->text());
+ tempString.replace(QStringLiteral("\\*"),QStringLiteral("[^\\\\/]*"));
+ }
+ else if(ui->search_type->currentIndex()==2)
+ {
+ tempString=ui->search->text();
+ if(tempString.startsWith('^') && tempString.endsWith('$'))
+ {
+ ui->need_match_all->setChecked(true);
+ tempString.remove(QRegularExpression(QStringLiteral("^\\^")));
+ tempString.remove(QRegularExpression(QStringLiteral("\\$$")));
+ ui->search->setText(tempString);
+ }
+ }
+ if(isValid)
+ {
+ if(ui->need_match_all->isChecked())
+ tempString=QStringLiteral("^")+tempString+QStringLiteral("$");
+ regex=QRegularExpression(tempString);
+ isValid=regex.isValid();
+ }
+ }
+
+ ui->isValid->setChecked(isValid);
+ ui->testString->setEnabled(isValid);
+ ui->label_test_string->setEnabled(isValid);
+ ui->matched->setEnabled(isValid);
+ ui->matched->setChecked(isValid && ui->testString->text().contains(regex));
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(isValid);
+}
+
+void FilterRules::on_isValid_clicked()
+{
+ updateChecking();
+}
+
+void FilterRules::on_testString_textChanged(const std::string &arg1)
+{
+ Q_UNUSED(arg1);
+ updateChecking();
+}
+
+void FilterRules::on_matched_clicked()
+{
+ updateChecking();
+}
+
+void FilterRules::on_search_type_currentIndexChanged(int index)
+{
+ Q_UNUSED(index);
+ updateChecking();
+}
+
+void FilterRules::on_need_match_all_clicked()
+{
+ updateChecking();
+}
+
+void FilterRules::on_buttonBox_clicked(QAbstractButton *button)
+{
+ if(ui->buttonBox->buttonRole(button)==QDialogButtonBox::RejectRole)
+ reject();
+ else
+ {
+ haveBeenValided=true;
+ accept();
+ }
+}
+
+void FilterRules::on_search_textChanged(const QString &arg1)
+{
+ Q_UNUSED(arg1);
+ updateChecking();
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/FilterRules.h b/plugins/CopyEngine/Ultracopier-Spec/FilterRules.h
new file mode 100755
index 0000000..e57ea97
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/FilterRules.h
@@ -0,0 +1,47 @@
+#ifndef FILTERRULES_H
+#define FILTERRULES_H
+
+#include <QDialog>
+#include <QAbstractButton>
+#include <QPushButton>
+
+#include "StructEnumDefinition_CopyEngine.h"
+
+namespace Ui {
+class FilterRules;
+}
+
+/** All the filter rules to include/exclude some file during the listing */
+class FilterRules : public QDialog
+{
+ Q_OBJECT
+
+public:
+ explicit FilterRules(QWidget *parent = 0);
+ ~FilterRules();
+ bool getIsValid();
+ std::string get_search_text();
+ SearchType get_search_type();
+ ApplyOn get_apply_on();
+ bool get_need_match_all();
+ void set_search_text(std::string search_text);
+ void set_search_type(SearchType search_type);
+ void set_apply_on(ApplyOn apply_on);
+ void set_need_match_all(bool need_match_all);
+private slots:
+ void on_search_textChanged(const std::string &arg1);
+ void on_isValid_clicked();
+ void on_testString_textChanged(const std::string &arg1);
+ void on_matched_clicked();
+ void on_search_type_currentIndexChanged(int index);
+ void on_need_match_all_clicked();
+ void on_buttonBox_clicked(QAbstractButton *button);
+ void on_search_textChanged(const QString &arg1);
+private:
+ Ui::FilterRules *ui;
+ void updateChecking();
+ bool isValid;
+ bool haveBeenValided;
+};
+
+#endif // FILTERRULES_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui b/plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui
new file mode 100755
index 0000000..a4006fe
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui
@@ -0,0 +1,162 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>FilterRules</class>
+ <widget class="QDialog" name="FilterRules">
+ <property name="windowModality">
+ <enum>Qt::WindowModal</enum>
+ </property>
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>289</width>
+ <height>231</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Filters dialog</string>
+ </property>
+ <property name="windowIcon">
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/resources/resources/filter.png</normaloff>:/CopyEngine/resources/resources/filter.png</iconset>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <property name="margin">
+ <number>1</number>
+ </property>
+ <property name="spacing">
+ <number>1</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Search:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLineEdit" name="search"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Search type:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="search_type">
+ <item>
+ <property name="text">
+ <string>Raw text</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Simplified regex</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Perl's regex</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Apply on:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QComboBox" name="apply_on">
+ <item>
+ <property name="text">
+ <string>File</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Folder</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>File and folder</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <widget class="QCheckBox" name="need_match_all">
+ <property name="text">
+ <string>Whole string must match</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0" colspan="2">
+ <widget class="QGroupBox" name="groupBoxChecking">
+ <property name="title">
+ <string>Checking</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0" colspan="2">
+ <widget class="QCheckBox" name="isValid">
+ <property name="text">
+ <string>The regex is valid</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_test_string">
+ <property name="text">
+ <string>Test string:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLineEdit" name="testString"/>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QCheckBox" name="matched">
+ <property name="text">
+ <string>The test string matches with the regex</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="5" column="0" colspan="2">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>68</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="copyEngineResources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Filters.cpp b/plugins/CopyEngine/Ultracopier-Spec/Filters.cpp
new file mode 100755
index 0000000..214896c
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Filters.cpp
@@ -0,0 +1,464 @@
+#include "Filters.h"
+#include "ui_Filters.h"
+#include "../../../cpp11addition.h"
+
+#include <QRegularExpression>
+
+Filters::Filters(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::Filters)
+{
+ ui->setupUi(this);
+}
+
+Filters::~Filters()
+{
+ delete ui;
+}
+
+bool Filters::setFilters(std::vector<std::string> includeStrings,std::vector<std::string> includeOptions,std::vector<std::string> excludeStrings,std::vector<std::string> excludeOptions)
+{
+ if(includeStrings.size()!=includeOptions.size() || excludeStrings.size()!=excludeOptions.size())
+ return false;
+ Filters_rules new_item;
+
+ include.clear();
+ unsigned int index=0;
+ while(index<(unsigned int)includeStrings.size())
+ {
+ new_item.search_text=includeStrings.at(index);
+ std::vector<std::string> options=stringsplit(includeOptions.at(index),';');
+ new_item.need_match_all=false;
+ new_item.search_type=SearchType_rawText;
+ new_item.apply_on=ApplyOn_fileAndFolder;
+
+ if(vectorcontainsAtLeastOne(options,std::string("SearchType_simpleRegex")))
+ new_item.search_type=SearchType_simpleRegex;
+ if(vectorcontainsAtLeastOne(options,std::string("SearchType_perlRegex")))
+ new_item.search_type=SearchType_perlRegex;
+ if(vectorcontainsAtLeastOne(options,std::string("ApplyOn_file")))
+ new_item.apply_on=ApplyOn_file;
+ if(vectorcontainsAtLeastOne(options,std::string("ApplyOn_folder")))
+ new_item.apply_on=ApplyOn_folder;
+ if(vectorcontainsAtLeastOne(options,std::string("need_match_all")))
+ new_item.need_match_all=true;
+
+ if(convertToRegex(new_item))
+ include.push_back(new_item);
+
+ index++;
+ }
+
+ exclude.clear();
+ index=0;
+ while(index<excludeStrings.size())
+ {
+ new_item.search_text=excludeStrings.at(index);
+ std::vector<std::string> options=stringsplit(excludeOptions.at(index),';');
+ new_item.need_match_all=false;
+ new_item.search_type=SearchType_rawText;
+ new_item.apply_on=ApplyOn_fileAndFolder;
+
+ if(vectorcontainsAtLeastOne(options,std::string("SearchType_simpleRegex")))
+ new_item.search_type=SearchType_simpleRegex;
+ if(vectorcontainsAtLeastOne(options,std::string("SearchType_perlRegex")))
+ new_item.search_type=SearchType_perlRegex;
+ if(vectorcontainsAtLeastOne(options,std::string("ApplyOn_file")))
+ new_item.apply_on=ApplyOn_file;
+ if(vectorcontainsAtLeastOne(options,std::string("ApplyOn_folder")))
+ new_item.apply_on=ApplyOn_folder;
+ if(vectorcontainsAtLeastOne(options,std::string("need_match_all")))
+ new_item.need_match_all=true;
+
+ if(convertToRegex(new_item))
+ exclude.push_back(new_item);
+
+ index++;
+ }
+
+ reShowAll();
+ return true;
+}
+
+void Filters::reShowAll()
+{
+ ui->inclusion->clear();
+ unsigned int index=0;
+ while(index<(unsigned int)include.size())
+ {
+ std::string entryShow=include.at(index).search_text+" (";
+ std::vector<std::string> optionsToShow;
+ switch(include.at(index).search_type)
+ {
+ case SearchType_rawText:
+ optionsToShow.push_back(tr("Raw text").toStdString());
+ break;
+ case SearchType_simpleRegex:
+ optionsToShow.push_back(tr("Simplified regex").toStdString());
+ break;
+ case SearchType_perlRegex:
+ optionsToShow.push_back(tr("Perl's regex").toStdString());
+ break;
+ default:
+ break;
+ }
+ switch(include.at(index).apply_on)
+ {
+ case ApplyOn_file:
+ optionsToShow.push_back(tr("Only on file").toStdString());
+ break;
+ case ApplyOn_folder:
+ optionsToShow.push_back(tr("Only on folder").toStdString());
+ break;
+ default:
+ break;
+ }
+ if(include.at(index).need_match_all)
+ optionsToShow.push_back(tr("Full match").toStdString());
+ entryShow+=stringimplode(optionsToShow,",");
+ entryShow+=")";
+ ui->inclusion->addItem(new QListWidgetItem(QString::fromStdString(entryShow)));
+ index++;
+ }
+ ui->exclusion->clear();
+ index=0;
+ while(index<(unsigned int)exclude.size())
+ {
+ std::string entryShow=exclude.at(index).search_text+" (";
+ std::vector<std::string> optionsToShow;
+ switch(exclude.at(index).search_type)
+ {
+ case SearchType_rawText:
+ optionsToShow.push_back(tr("Raw text").toStdString());
+ break;
+ case SearchType_simpleRegex:
+ optionsToShow.push_back(tr("Simplified regex").toStdString());
+ break;
+ case SearchType_perlRegex:
+ optionsToShow.push_back(tr("Perl's regex").toStdString());
+ break;
+ default:
+ break;
+ }
+ switch(exclude.at(index).apply_on)
+ {
+ case ApplyOn_file:
+ optionsToShow.push_back(tr("Only on file").toStdString());
+ break;
+ case ApplyOn_folder:
+ optionsToShow.push_back(tr("Only on folder").toStdString());
+ break;
+ default:
+ break;
+ }
+ if(exclude.at(index).need_match_all)
+ optionsToShow.push_back(tr("Full match").toStdString());
+ entryShow+=stringimplode(optionsToShow,",");
+ entryShow+=")";
+ ui->exclusion->addItem(new QListWidgetItem(QString::fromStdString(entryShow)));
+ index++;
+ }
+}
+
+std::vector<Filters_rules> Filters::getInclude() const
+{
+ return include;
+}
+
+std::vector<Filters_rules> Filters::getExclude() const
+{
+ return exclude;
+}
+
+void Filters::newLanguageLoaded()
+{
+ ui->retranslateUi(this);
+ reShowAll();
+}
+
+void Filters::updateFilters()
+{
+ std::vector<std::string> includeStrings,includeOptions,excludeStrings,excludeOptions;
+ unsigned int index=0;
+ while(index<(unsigned int)include.size())
+ {
+ includeStrings.push_back(include.at(index).search_text);
+ std::vector<std::string> optionsToShow;
+
+ switch(include.at(index).search_type)
+ {
+ case SearchType_rawText:
+ optionsToShow.push_back("SearchType_rawText");
+ break;
+ case SearchType_simpleRegex:
+ optionsToShow.push_back("SearchType_simpleRegex");
+ break;
+ case SearchType_perlRegex:
+ optionsToShow.push_back("SearchType_perlRegex");
+ break;
+ default:
+ break;
+ }
+ switch(include.at(index).apply_on)
+ {
+ case ApplyOn_file:
+ optionsToShow.push_back("ApplyOn_file");
+ break;
+ case ApplyOn_fileAndFolder:
+ optionsToShow.push_back("ApplyOn_fileAndFolder");
+ break;
+ case ApplyOn_folder:
+ optionsToShow.push_back("ApplyOn_folder");
+ break;
+ default:
+ break;
+ }
+ if(include.at(index).need_match_all)
+ optionsToShow.push_back(tr("Full match").toStdString());
+ includeOptions.push_back(stringimplode(optionsToShow,";"));
+ index++;
+ }
+ index=0;
+ while(index<(unsigned int)exclude.size())
+ {
+ excludeStrings.push_back(exclude.at(index).search_text);
+ std::vector<std::string> optionsToShow;
+
+ switch(exclude.at(index).search_type)
+ {
+ case SearchType_rawText:
+ optionsToShow.push_back("SearchType_rawText");
+ break;
+ case SearchType_simpleRegex:
+ optionsToShow.push_back("SearchType_simpleRegex");
+ break;
+ case SearchType_perlRegex:
+ optionsToShow.push_back("SearchType_perlRegex");
+ break;
+ default:
+ break;
+ }
+ switch(exclude.at(index).apply_on)
+ {
+ case ApplyOn_file:
+ optionsToShow.push_back("ApplyOn_file");
+ break;
+ case ApplyOn_fileAndFolder:
+ optionsToShow.push_back("ApplyOn_fileAndFolder");
+ break;
+ case ApplyOn_folder:
+ optionsToShow.push_back("ApplyOn_folder");
+ break;
+ default:
+ break;
+ }
+ if(exclude.at(index).need_match_all)
+ optionsToShow.push_back(tr("Full match").toStdString());
+ excludeOptions.push_back(stringimplode(optionsToShow,";"));
+ index++;
+ }
+ emit sendNewFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
+ emit haveNewFilters();
+}
+
+bool Filters::convertToRegex(Filters_rules &item)
+{
+ bool isValid=!item.search_text.empty();
+ if(isValid)
+ {
+ std::regex regex;
+ std::string tempString;
+ if(item.search_type==SearchType_rawText)
+ {
+ //here to validate below the regex
+ tempString=QRegularExpression::escape(QString::fromStdString(item.search_text)).toStdString();
+ //do search on string only on file or file and folder, QRegularExpression::escape() introduce \ on special char
+ if(item.apply_on!=ApplyOn::ApplyOn_folder)
+ if(item.search_text.find('/') != std::string::npos || item.search_text.find('\\') != std::string::npos)
+ isValid=false;
+ }
+ else if(item.search_type==SearchType_simpleRegex)
+ {
+ tempString=QRegularExpression::escape(QString::fromStdString(item.search_text)).toStdString();
+ stringreplaceAll(tempString,"\\*","[^\\\\/]*");
+ }
+ else if(item.search_type==SearchType_perlRegex)
+ {
+ tempString=item.search_text;
+ if(stringStartWith(tempString,'^') && stringEndsWith(tempString,'$'))
+ {
+ item.need_match_all=true;
+ if(stringStartWith(tempString,'^'))
+ tempString=tempString.substr(1,tempString.size()-1);
+ if(stringEndsWith(tempString,'$'))
+ tempString=tempString.substr(0,tempString.size()-1);
+ item.search_text=tempString;
+ }
+ }
+ if(isValid)
+ {
+ if(item.need_match_all==true)
+ tempString="^"+tempString+"$";
+ regex=std::regex(tempString);
+ //isValid=regex.isValid();
+ item.regex=regex;
+ return true;
+ }
+ else
+ return false;
+ }
+ return false;
+}
+
+void Filters::on_remove_exclusion_clicked()
+{
+ bool removedEntry=false;
+ int index=0;
+ while(index<ui->exclusion->count())
+ {
+ if(ui->exclusion->item(index)->isSelected())
+ {
+ delete ui->exclusion->item(index);
+ exclude.erase(exclude.cbegin()+index);
+ removedEntry=true;
+ }
+ else
+ index++;
+ }
+ if(removedEntry)
+ {
+ reShowAll();
+ updateFilters();
+ }
+}
+
+void Filters::on_remove_inclusion_clicked()
+{
+ bool removedEntry=false;
+ int index=0;
+ while(index<ui->inclusion->count())
+ {
+ if(ui->inclusion->item(index)->isSelected())
+ {
+ delete ui->inclusion->item(index);
+ include.erase(include.cbegin()+index);
+ removedEntry=true;
+ }
+ else
+ index++;
+ }
+ if(removedEntry)
+ {
+ reShowAll();
+ updateFilters();
+ }
+}
+
+void Filters::on_add_exclusion_clicked()
+{
+ FilterRules dialog(this);
+ dialog.exec();
+ if(dialog.getIsValid())
+ {
+ Filters_rules new_item;
+ new_item.apply_on=dialog.get_apply_on();
+ new_item.need_match_all=dialog.get_need_match_all();
+ new_item.search_text=dialog.get_search_text();
+ new_item.search_type=dialog.get_search_type();
+ exclude.push_back(new_item);
+ reShowAll();
+ updateFilters();
+ }
+}
+
+void Filters::on_buttonBox_clicked(QAbstractButton *button)
+{
+ if(ui->buttonBox->buttonRole(button)==QDialogButtonBox::RejectRole)
+ reject();
+}
+
+void Filters::on_add_inclusion_clicked()
+{
+ FilterRules dialog(this);
+ dialog.exec();
+ if(dialog.getIsValid())
+ {
+ Filters_rules new_item;
+ new_item.apply_on=dialog.get_apply_on();
+ new_item.need_match_all=dialog.get_need_match_all();
+ new_item.search_text=dialog.get_search_text();
+ new_item.search_type=dialog.get_search_type();
+ if(convertToRegex(new_item))
+ include.push_back(new_item);
+ reShowAll();
+ updateFilters();
+ }
+}
+
+void Filters::on_edit_exclusion_clicked()
+{
+ bool editedEntry=false;
+ int index=0;
+ while(index<ui->exclusion->count())
+ {
+ if(ui->exclusion->item(index)->isSelected())
+ {
+ FilterRules dialog(this);
+ dialog.set_apply_on(exclude.at(index).apply_on);
+ dialog.set_need_match_all(exclude.at(index).need_match_all);
+ dialog.set_search_text(exclude.at(index).search_text);
+ dialog.set_search_type(exclude.at(index).search_type);
+ dialog.exec();
+ if(dialog.getIsValid())
+ {
+ exclude[index].apply_on=dialog.get_apply_on();
+ exclude[index].need_match_all=dialog.get_need_match_all();
+ exclude[index].search_text=dialog.get_search_text();
+ exclude[index].search_type=dialog.get_search_type();
+ if(!convertToRegex(exclude[index]))
+ exclude.erase(exclude.cbegin()+index);
+ editedEntry=true;
+ }
+ }
+ index++;
+ }
+ if(editedEntry)
+ {
+ reShowAll();
+ updateFilters();
+ }
+}
+
+void Filters::on_edit_inclusion_clicked()
+{
+ bool editedEntry=false;
+ int index=0;
+ while(index<ui->inclusion->count())
+ {
+ if(ui->inclusion->item(index)->isSelected())
+ {
+ FilterRules dialog(this);
+ dialog.set_apply_on(exclude.at(index).apply_on);
+ dialog.set_need_match_all(exclude.at(index).need_match_all);
+ dialog.set_search_text(exclude.at(index).search_text);
+ dialog.set_search_type(exclude.at(index).search_type);
+ dialog.exec();
+ if(dialog.getIsValid())
+ {
+ exclude[index].apply_on=dialog.get_apply_on();
+ exclude[index].need_match_all=dialog.get_need_match_all();
+ exclude[index].search_text=dialog.get_search_text();
+ exclude[index].search_type=dialog.get_search_type();
+ if(!convertToRegex(exclude[index]))
+ exclude.erase(exclude.cbegin()+index);
+ editedEntry=true;
+ }
+ }
+ index++;
+ }
+ if(editedEntry)
+ {
+ reShowAll();
+ updateFilters();
+ }
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Filters.h b/plugins/CopyEngine/Ultracopier-Spec/Filters.h
new file mode 100755
index 0000000..60e2277
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Filters.h
@@ -0,0 +1,45 @@
+#ifndef FILTERS_H
+#define FILTERS_H
+
+#include <QDialog>
+#include <QStringList>
+
+#include "FilterRules.h"
+#include "StructEnumDefinition_CopyEngine.h"
+
+namespace Ui {
+class Filters;
+}
+
+/** To add/edit one filter rules */
+class Filters : public QDialog
+{
+ Q_OBJECT
+public:
+ explicit Filters(QWidget *parent = 0);
+ ~Filters();
+ bool setFilters(std::vector<std::string> includeStrings, std::vector<std::string> includeOptions, std::vector<std::string> excludeStrings, std::vector<std::string> excludeOptions);
+ void reShowAll();
+ std::vector<Filters_rules> getInclude() const;
+ std::vector<Filters_rules> getExclude() const;
+ void newLanguageLoaded();
+private:
+ Ui::Filters *ui;
+ std::vector<Filters_rules> include;
+ std::vector<Filters_rules> exclude;
+ void updateFilters();
+ bool convertToRegex(Filters_rules &item);
+signals:
+ void sendNewFilters(const std::vector<std::string> &includeStrings,const std::vector<std::string> &includeOptions,const std::vector<std::string> &excludeStrings,const std::vector<std::string> &excludeOptions) const;
+ void haveNewFilters() const;
+private slots:
+ void on_remove_exclusion_clicked();
+ void on_remove_inclusion_clicked();
+ void on_add_exclusion_clicked();
+ void on_buttonBox_clicked(QAbstractButton *button);
+ void on_add_inclusion_clicked();
+ void on_edit_exclusion_clicked();
+ void on_edit_inclusion_clicked();
+};
+
+#endif // FILTERS_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Filters.ui b/plugins/CopyEngine/Ultracopier-Spec/Filters.ui
new file mode 100755
index 0000000..ed6a0a2
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Filters.ui
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>Filters</class>
+ <widget class="QDialog" name="Filters">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>507</width>
+ <height>502</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Filters</string>
+ </property>
+ <property name="windowIcon">
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/filter.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/filter.png</iconset>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>1</number>
+ </property>
+ <property name="leftMargin">
+ <number>1</number>
+ </property>
+ <property name="topMargin">
+ <number>1</number>
+ </property>
+ <property name="rightMargin">
+ <number>1</number>
+ </property>
+ <property name="bottomMargin">
+ <number>1</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>Exclusion filters</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>1</number>
+ </property>
+ <property name="leftMargin">
+ <number>2</number>
+ </property>
+ <property name="topMargin">
+ <number>2</number>
+ </property>
+ <property name="rightMargin">
+ <number>2</number>
+ </property>
+ <property name="bottomMargin">
+ <number>2</number>
+ </property>
+ <item>
+ <widget class="QListWidget" name="exclusion">
+ <property name="selectionMode">
+ <enum>QAbstractItemView::MultiSelection</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QToolButton" name="add_exclusion">
+ <property name="icon">
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/add.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/add.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="edit_exclusion">
+ <property name="icon">
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/edit.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/edit.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="remove_exclusion">
+ <property name="icon">
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/remove.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/remove.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>Inclusion filters</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <property name="spacing">
+ <number>1</number>
+ </property>
+ <property name="leftMargin">
+ <number>2</number>
+ </property>
+ <property name="topMargin">
+ <number>2</number>
+ </property>
+ <property name="rightMargin">
+ <number>2</number>
+ </property>
+ <property name="bottomMargin">
+ <number>2</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>None = Include all</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QListWidget" name="inclusion">
+ <property name="selectionMode">
+ <enum>QAbstractItemView::MultiSelection</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QToolButton" name="add_inclusion">
+ <property name="icon">
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/add.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/add.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="edit_inclusion">
+ <property name="icon">
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/edit.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/edit.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="remove_inclusion">
+ <property name="icon">
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/remove.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/remove.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources>
+ <include location="copyEngineResources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp b/plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp
new file mode 100755
index 0000000..f37acd1
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp
@@ -0,0 +1,252 @@
+#include "FolderExistsDialog.h"
+#include "ui_folderExistsDialog.h"
+#include "TransferThread.h"
+#include "../../../cpp11addition.h"
+
+#ifdef Q_OS_WIN32
+#define CURRENTSEPARATOR "\\"
+#else
+#define CURRENTSEPARATOR "/"
+#endif
+
+#include <QMessageBox>
+
+FolderExistsDialog::FolderExistsDialog(QWidget *parent, INTERNALTYPEPATH source, bool isSame, INTERNALTYPEPATH destination,
+ std::string firstRenamingRule, std::string otherRenamingRule) :
+ QDialog(parent),
+ ui(new Ui::folderExistsDialog)
+{
+ Qt::WindowFlags flags = windowFlags();
+ #ifdef Q_OS_LINUX
+ flags=flags & ~Qt::X11BypassWindowManagerHint;
+ #endif
+ flags=flags | Qt::WindowStaysOnTopHint;
+ setWindowFlags(flags);
+
+ ui->setupUi(this);
+ action=FolderExists_Cancel;
+ oldName=TransferThread::resolvedName(TransferThread::internalStringTostring(destination));
+ ui->lineEditNewName->setText(QString::fromStdString(oldName));
+ ui->lineEditNewName->setPlaceholderText(QString::fromStdString(oldName));
+#ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA fileInfoW;
+ if(GetFileAttributesExW(source.c_str(),GetFileExInfoStandard,&fileInfoW))
+ {
+ uint64_t mdate=fileInfoW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=fileInfoW.ftLastWriteTime.dwLowDateTime;
+ uint64_t size=fileInfoW.nFileSizeHigh;
+ size<<=32;
+ size|=fileInfoW.nFileSizeLow;
+#else
+ struct stat source_statbuf;
+ if(TransferThread::exists(source))
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ const uint64_t mdate=source_statbuf.st_mtimespec.tv_sec;
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtim);
+ #endif
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtime);
+ #endif
+#endif
+ ui->label_content_source_modified->setText(QDateTime::fromMSecsSinceEpoch(mdate*1000).toString());
+ }
+ else
+ ui->label_content_source_modified->hide();
+ ui->label_content_source_folder_name->setText(QString::fromStdString(TransferThread::resolvedName(TransferThread::internalStringTostring(source))));
+ std::string folder=TransferThread::internalStringTostring(FSabsolutePath(source));
+ if(folder.size()>80)
+ folder=folder.substr(0,38)+"..."+folder.substr(folder.size()-38);
+ ui->label_content_source_folder->setText(QString::fromStdString(folder));
+ if(ui->label_content_source_folder_name->text().isEmpty())
+ {
+ ui->label_source_folder_name->hide();
+ ui->label_content_source_folder_name->hide();
+ }
+ if(isSame)
+ {
+ this->destinationInfo=TransferThread::internalStringTostring(source);
+ ui->label_source->hide();
+ ui->label_destination->hide();
+ ui->label_destination_modified->hide();
+ ui->label_destination_folder_name->hide();
+ ui->label_destination_folder->hide();
+ ui->label_content_destination_modified->hide();
+ ui->label_content_destination_folder_name->hide();
+ ui->label_content_destination_folder->hide();
+ }
+ else
+ {
+ this->destinationInfo=TransferThread::internalStringTostring(destination);
+ this->setWindowTitle(tr("Folder already exists"));
+ struct stat destination_statbuf;
+ if(TransferThread::exists(destination))
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ const uint64_t mdate=destination_statbuf.st_mtimespec.tv_sec;
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&destination_statbuf.st_mtim);
+ #endif
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&destination_statbuf.st_mtime);
+ #endif
+ ui->label_content_destination_modified->setText(QDateTime::fromMSecsSinceEpoch(mdate*1000).toString());
+ }
+ else
+ ui->label_content_destination_modified->hide();
+ ui->label_content_destination_folder_name->setText(QString::fromStdString(TransferThread::resolvedName(TransferThread::internalStringTostring(destination))));
+ std::string folder=TransferThread::internalStringTostring(FSabsolutePath(destination));
+ if(folder.size()>80)
+ folder=folder.substr(0,38)+"..."+folder.substr(folder.size()-38);
+ ui->label_content_destination_folder->setText(QString::fromStdString(folder));
+ if(ui->label_content_destination_folder_name->text().isEmpty())
+ {
+ ui->label_destination_folder_name->hide();
+ ui->label_content_destination_folder_name->hide();
+ }
+ }
+ this->firstRenamingRule=firstRenamingRule;
+ this->otherRenamingRule=otherRenamingRule;
+ on_SuggestNewName_clicked();
+}
+
+FolderExistsDialog::~FolderExistsDialog()
+{
+ delete ui;
+}
+
+void FolderExistsDialog::changeEvent(QEvent *e)
+{
+ QDialog::changeEvent(e);
+ switch (e->type()) {
+ case QEvent::LanguageChange:
+ ui->retranslateUi(this);
+ break;
+ default:
+ break;
+ }
+}
+
+std::string FolderExistsDialog::getNewName()
+{
+ if(oldName==ui->lineEditNewName->text().toStdString() || ui->checkBoxAlways->isChecked())
+ return "";
+ else
+ return ui->lineEditNewName->text().toStdString();
+}
+
+void FolderExistsDialog::on_SuggestNewName_clicked()
+{
+ std::string destinationInfo=this->destinationInfo;
+ QString absolutePath=QString::fromStdString(FSabsolutePath(destinationInfo));
+ QString fileName=QString::fromStdString(TransferThread::resolvedName(destinationInfo));
+ QString suffix;
+ QString destination;
+ QString newFileName;
+ //resolv the suffix
+ if(fileName.contains(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$"))))
+ {
+ suffix=fileName;
+ suffix.replace(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")),QStringLiteral("\\2"));
+ fileName.replace(QRegularExpression(QStringLiteral("^(.*)(\\.[a-z0-9]+)$")),QStringLiteral("\\1"));
+ }
+ //resolv the new name
+ int num=1;
+ do
+ {
+ if(num==1)
+ {
+ if(firstRenamingRule.empty())
+ newFileName=tr("%name% - copy%suffix%");
+ else
+ {
+ newFileName=QString::fromStdString(firstRenamingRule);
+ }
+ }
+ else
+ {
+ if(otherRenamingRule.empty())
+ newFileName=tr("%name% - copy (%number%)%suffix%");
+ else
+ newFileName=QString::fromStdString(otherRenamingRule);
+ newFileName.replace(QStringLiteral("%number%"),QString::number(num));
+ }
+ newFileName.replace(QStringLiteral("%name%"),fileName);
+ newFileName.replace(QStringLiteral("%suffix%"),suffix);
+ destination=absolutePath;
+ if(!destination.endsWith('/')
+ #ifdef Q_OS_WIN32
+ && !destination.endsWith('\\')
+ #endif
+ )
+ destination+=CURRENTSEPARATOR;
+ destination+=newFileName;
+ destinationInfo=destination.toStdString();
+ num++;
+ }
+ while(TransferThread::exists(destinationInfo.c_str()));
+ ui->lineEditNewName->setText(newFileName);
+}
+
+void FolderExistsDialog::on_Rename_clicked()
+{
+ action=FolderExists_Rename;
+ this->close();
+}
+
+void FolderExistsDialog::on_Skip_clicked()
+{
+ action=FolderExists_Skip;
+ this->close();
+}
+
+void FolderExistsDialog::on_Cancel_clicked()
+{
+ action=FolderExists_Cancel;
+ this->close();
+}
+
+FolderExistsAction FolderExistsDialog::getAction()
+{
+ return action;
+}
+
+bool FolderExistsDialog::getAlways()
+{
+ return ui->checkBoxAlways->isChecked();
+}
+
+void FolderExistsDialog::on_Merge_clicked()
+{
+ action=FolderExists_Merge;
+ this->close();
+}
+
+void FolderExistsDialog::on_lineEditNewName_editingFinished()
+{
+ updateRenameButton();
+}
+
+void FolderExistsDialog::on_lineEditNewName_returnPressed()
+{
+ updateRenameButton();
+ if(ui->Rename->isEnabled())
+ on_Rename_clicked();
+ else
+ QMessageBox::warning(this,tr("Error"),tr("Try rename with using special characters"));
+}
+
+void FolderExistsDialog::on_lineEditNewName_textChanged(const QString &arg1)
+{
+ Q_UNUSED(arg1);
+ updateRenameButton();
+}
+
+void FolderExistsDialog::updateRenameButton()
+{
+ ui->Rename->setEnabled(ui->checkBoxAlways->isChecked() || (!ui->lineEditNewName->text().contains(QRegularExpression("[/\\\\\\*]")) && oldName!=ui->lineEditNewName->text().toStdString() && !ui->lineEditNewName->text().isEmpty()));
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.h b/plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.h
new file mode 100755
index 0000000..8681ba6
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.h
@@ -0,0 +1,60 @@
+/** \file folderExistsDialog.h
+\brief Define the dialog when file exists
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef FOLDERISSAMEDIALOG_H
+#define FOLDERISSAMEDIALOG_H
+
+#include <QDialog>
+#include <string>
+
+#include "Environment.h"
+
+namespace Ui {
+ class folderExistsDialog;
+}
+
+#ifdef WIDESTRING
+#define INTERNALTYPEPATH std::wstring
+#else
+#define INTERNALTYPEPATH std::string
+#endif
+
+/// \brief to show file exists dialog, and ask what do
+class FolderExistsDialog : public QDialog
+{
+ Q_OBJECT
+
+public:
+ /// \brief create the object and pass all the informations to it
+ explicit FolderExistsDialog(QWidget *parent,INTERNALTYPEPATH source,bool isSame,INTERNALTYPEPATH destination,std::string firstRenamingRule,std::string otherRenamingRule);
+ ~FolderExistsDialog();
+ /// \brief return the the always checkbox is checked
+ bool getAlways();
+ /// \brief return the action clicked
+ FolderExistsAction getAction();
+ /// \brief return the new rename is case in manual renaming
+ std::string getNewName();
+protected:
+ void changeEvent(QEvent *e);
+private slots:
+ void updateRenameButton();
+ void on_SuggestNewName_clicked();
+ void on_Rename_clicked();
+ void on_Skip_clicked();
+ void on_Cancel_clicked();
+ void on_Merge_clicked();
+ void on_lineEditNewName_editingFinished();
+ void on_lineEditNewName_returnPressed();
+ void on_lineEditNewName_textChanged(const QString &arg1);
+private:
+ Ui::folderExistsDialog *ui;
+ FolderExistsAction action;
+ std::string oldName;
+ std::string firstRenamingRule;
+ std::string otherRenamingRule;
+ std::string destinationInfo;
+};
+
+#endif // FOLDERISSAMEDIALOG_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.qm
new file mode 100755
index 0000000..a48b608
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.ts
new file mode 100755
index 0000000..a94fa18
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ar_JO">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation>تم إجبار المحرك على الحركة ، لا يمكنك نسخه</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation>تم إجبار المحرك على النسخ ، لا يمكنك التحرك معه</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation>الوجهه</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation>استخدام الوجهة الفعلية &quot;%1&quot; ؟</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation>تم فرض الوضع مسبقا. هذا خطا داخلي ، الرجاء الإبلاغ عنه</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation>اسال</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation>تخطي</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation>دمج</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation>اعاده تسميه</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation>وضع في نهاية</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation>الكتابة فوق</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation>الكتابة فوق إذا كان مختلفا</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation>الكتابة فوق إذا كان أحدث</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation>الكتابة فوق إذا كان أقدم</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation>خطا في الخيارات</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>لم يتم تحميل محرك الخيارات. غير قادر علي الوصول إلى الفلاتر</translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation>اسال</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation>تخطي</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation>دمج</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation>اعاده تسميه</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation>وضع في نهاية</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation>الكتابة فوق</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation>الكتابة فوق إذا كان مختلفا</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation>الكتابة فوق إذا كان أحدث</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation>الكتابة فوق إذا كان أقدم</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation>خطا في الخيارات</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>لم يتم تحميل محرك الخيارات. غير قادر علي الوصول إلى الفلاتر</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation>لم يتم تحميل محرك الخيارات. غير قادر علي الوصول إلى الفلاتر</translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation>مساحة القرص</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation>تحتاج مساحة أكبر على محرك الاقراص هذا لإنهاء هذا النقل</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation>مواصله</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation>إلغاء الأمر</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation>تتوفر %2 محركات الاقراص %1 ولكن تحتاج %3</translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation>خطأ في المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation>اسم المجلد</translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>% اسم%-نسخ% لاحقه%</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>(% الاسم%-النسخ (% العدد%% اللاحق +ه%</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation>الخطا</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation>حاول أعاده تسميه باستخدام أحرف خاصه</translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>% اسم%-نسخ% لاحقه%</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>(% الاسم%-النسخ (% العدد%% اللاحق +ه%</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation>الخطا</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation>حاول أعاده تسميه باستخدام أحرف خاصه</translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation>بحث:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation>نوع البحث:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation>نص خام</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation>Simplified regex</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Perl&apos;s regex</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation>تنطبق على:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation>ملف</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation>مجلد</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation>ملف ومجلد</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation>سلسله اختبار يطابق مع regex</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation>التحقق</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation>سلسله الاختبار:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation>حوار الفلاتر</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation>يجب ان تتطابق السلسلة الكاملة</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation>regex صالحة</translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation>فلاتر</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation>فلاتر الاستبعاد</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation>فلاتر مدرجة</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation>بلا = تضمين الكل</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation>نص خام</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation>المبسطة regex</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Perl&apos;s regex</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation>فقط في الملف</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation>فقط في المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation>تطابق كامل</translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation>المجلد موجود بالفعل</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>% اسم%-نسخ% لاحقه%</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>(% الاسم%-النسخ (% العدد%% اللاحق +ه%</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation>الخطا</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation>حاول أعاده التسميه باستخدام أحرف خاصه</translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation>غير قادر علي القيام بنقل المادة أو نسخه إلى وضع إجباري غير صحيح: %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation>غير قادر على حفظ قائمه النقل: %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation>مشكلة في قراءة الملف ، أو حجم الملف هو 0</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation>العنوان الرأسي الخاطئ: &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation>قائمة النقل في الوضع المختلط ، ولكن هذا المثيل ليس في هذا الوضع</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation>قائمه النقل في وضع النسخ ولكن هذا المثيل غير في هذا الوضع</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation>قائمه النقل في وضع النقل ، ولكن هذا المثيل ليس في هذا الوضع</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation>عثر على بعض الأخطاء اثناء تحليل الخط</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation>غير قادر على فتح قائمه النقل: %1</translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation>غير قادر على إنشاء المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation>مجلد المصدر غير موجود</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation>غير قادر على أعاده تسميه المجلد المؤقت</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation>غير قادر على القيام بالخطوة الحقيقية النهائية المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation>غير قادر على نقل المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation>errno: %1 :غير قادر على نقل المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation>غير قادر على أزاله</translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation>خطا داخلي ، يرجى الإبلاغ عن ذلك!</translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation>غير قادر على قراءه الملف المصدر:</translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation>تم اقتطاع الملف اثناء القراءة ، وتغيير البيانات المحتملة</translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation>أعاده التسمية الاولي</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation>% اسم%-نسخ% لاحقه%</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation>% الاسم%-النسخ (% العدد%% اللاحق +ه%)</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation>&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;لاحقه الملف&lt;/span&gt;%لاحقه%&lt;span style=&quot; font-weight:600;&quot;&gt;للعدد الإضافي ،&lt;/span&gt;%عدد%&lt;span style=&quot; font-weight:600;&quot;&gt;لاسم الملف الأصلي ،&lt;/span&gt;%اسم%&lt;span style=&quot; font-weight:600;&quot;&gt;المتغيرات: &lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation>أعاده تسميه ثانيه</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>أعاده تسميه القواعد</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation>%1 - نسخ (%2)</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation>%1-نسخ (%2) %3</translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation>%1-نسخ</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation>%1 - نسخ (%2)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation>%اسم% - نسخ</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation>% الاسم%-النسخة (% العدد%)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation>مشكله في قراءه المجلد</translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>% اسم%-نسخ% لاحقه%</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>(% الاسم%-النسخ (% العدد%% اللاحق +ه%</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation>الملف غير موجود</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation>غير قادر على تغيير التاريخ</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation>حاول أعاده تسميه باستخدام أحرف خاصه</translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation>تاريخ تعديل خاطئ أو غير قادر علي الحصول عليه ، يمكنك تعطيل نقل الوقت للقيام بذلك</translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished">غير قادر على إنشاء مجلد الوجهة:</translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished">errno: %1 غير قادر علي إنشاء المجلد الوجهة</translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation>(خطأ في دقة المسار (مسار فارغ</translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation>غير قادر على إنشاء مجلد الوجهة:</translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation>errno: %1 غير قادر علي إنشاء المجلد الوجهة</translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation>خطا داخلي ، يرجى الإبلاغ عن ذلك!</translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation>نقل</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation>نقل المجلد بأكمله</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation>نقل حقوق الملف</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation>الاحتفاظ بتاريخ الملف</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation>إنشاء مسار كامل إذا لم يكن موجودا</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation>اختباري </translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation>البدء التلقائي</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation>الخطا والاصطدام</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation>عند خطا في المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation>عند خطا في الملف</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation>عندما تتضارب الملفات</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished">الكتابة فوق إذا اختلف تاريخ التعديل</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation>عندما يتضارب المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation>تحقق مما إذا كان مجلد الوجهة موجودا</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation>أعاده تسميه القواعد</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation>حذف الملفات المنقولة جزئيا</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation>أعاده تسميه الوجهة الاصليه</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation>الاداء</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation>Inode threads</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation>متفرقات</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation>تحقق من مساحة القرص</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation>استخدم هذا المجلد عندما لا يتم تعيين الوجهة</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation>استعراض </translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation>فلاتر</translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation>خطا في الملف</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation>الخطا</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation>حجم</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation>معدل</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation>اسم الملف</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation>الوجهه</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation>مجلد</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp; تنفيذ هذا الاجراء دوما</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation>جرب مع الامتيازات المرتفعة</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation>وضع إلى أسفل</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation>اعاده المحاوله</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;تخطي</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;الغاء الامر</translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation>الملف موجود</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>المصدر</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>الوجهه</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation>حجم</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation>معدل</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation>اسم الملف</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation>مجلد</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation>اقتراح &amp;اسم جديد</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp; تنفيذ هذا الاجراء دوما</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation>الكتابة فوق إذا اختلف تاريخ التعديل</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;اعاده تسميه</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation>&amp;الكتابة فوق</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;تخطي</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;الغاء الامر</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation>الكتابة فوق إذا كان أحدث</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation>الكتابة فوق إذا كان أقدم</translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation>حجم</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation>معدل</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation>اسم الملف</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation>المصدر والوجهة متشابهان</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation>مجلد</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation>اقتراح &amp;اسم جديد</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp; تنفيذ هذا الاجراء دوما</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;اعاده تسميه</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;تخطي</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;الغاء الامر</translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>المصدر</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>الوجهه</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation>المصدر والوجهة متطابقان</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation>معدل</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation>اسم المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation>مجلد</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation>اقتراح &amp;اسم جديد</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp; تنفيذ هذا الاجراء دوما</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;اعاده تسميه</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation>دمج</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation>تخطي</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;الغاء الامر</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.qm
new file mode 100755
index 0000000..10475cf
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.ts
new file mode 100755
index 0000000..dc9f497
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de" sourcelanguage="en">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation>Verschiebemodus - Sie können nicht kopieren</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation>Kopiermodus - Sie können nicht verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation>Ziel</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation>Aktuelles Ziel: &quot;%1&quot; benutzen?</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation>Der Modus wurde vorher erzwungen. Interner Fehler - Bitte bei mir melden</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation>Fragen</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation>Überspringen</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation>Fusionieren</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation>Umbenennen</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation>Ans Ende verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation>Überschreiben</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation>Überschreiben, falls verschieden</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation>Überschreiben, falls neuer</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation>Überschreiben, falls älter</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation>Fehlerhafte Optionen</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>Optionen nicht geladen - Kein Zugriff auf Filter</translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation>Fragen</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation>Überspringen</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation>Fusionieren</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation>Umbenennen</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation>Ans Ende verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation>Überschreiben</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation>Überschreiben, falls verschieden</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation>Überschreiben, falls neuer</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation>Überschreiben, falls älter</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation>Fehlerhafte Optionen</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>Option nicht geladen - Kein Zugriff auf Filter</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation>Option nicht geladen - Kann nicht auf Filter zugreifen</translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation>Speicherplatz</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation>Zu wenig Speicherplatz auf diesem Laufwerk</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation>Fortsetzen</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation>Laufwerk %1: %2 verfügbar %3 benötigt</translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation>Ordnerfehler</translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation>Ordnername</translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished">%name% - Kopie%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished">%name% - Kopie% (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation>Fehler</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation>Versuche Umbenennung mit Sonderzeichen</translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished">%name% - Kopie%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished">%name% - Kopie% (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation>Fehler</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation>Versuche Umbenennung mit Sonderzeichen</translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation>Suche:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation>Suche (Typ):</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation>Roh-Text</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation>Vereinfachte RegEx</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Perls RegEx</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation>Anwenden auf:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation>Datei</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation>Ordner</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation>Datei und Ordner</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation>Die Test-Zeichenfolge stimmt mit RegEx überein</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation>Überprüfen</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation>Test-Zeichenfolge:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation>Filter-Dialog</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation>Ganze Zeichenfolge muss übereinstimmen</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation>Die RegEx ist gültig</translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation>Filter</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation>Ausschließungs-Filter</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation>Einschließungs-Filter</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation>Keiner = Alle einschließen</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation>Roh-Text</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation>Vereinfachte RegEx</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Perls RegEx</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation>Nur auf Datei</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation>Nur auf Ordner</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation>Volle Übereinstimmung</translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation>Ordner existiert bereits</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished">%name% - Kopie%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished">%name% - Kopie% (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation>Fehler</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation>Versuche Umbenennung mit Sonderzeichen</translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation>Falscher Modus: %1 - Kann Element nicht verschieben oder kopieren</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation>Konnte die Transferliste: %1 nicht speichern</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation>Lesefehler, oder Dateigröße=0</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation>Falscher Header: &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation>Die Transferliste ist im gemischten Modus, aber diese Instanz ist nicht im selben Modus</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation>Die Transferliste ist im Kopiermodus, aber diese Instanz ist nicht im selben Modus</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation>Die Transferliste ist im Verschiebe-Modus, aber diese Instanz ist nicht im selben Modus</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation>Bei der Zeilenanalyse sind Fehler aufgetreten</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation>Transferliste: %1 kann nicht geöffnet werden</translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation>Der Ordner kann nicht erstellt werden</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation>Quell-Ordner existiert nicht</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation>Kann den Ordner nicht temporär umbenennen</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation>Kann den Ordner nicht endgültig verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation>Kann den Ordner nicht verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation>Kann Ordner nicht verschieben: Fehler Nummer: %1</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation>Kann nicht löschen</translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation>Erste Umbenennung</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation>%name% - Kopie%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation>%name% - Kopie% (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; für den originalen Dateinamen, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; für die extra Nummer, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; Datei suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation>Zweite Umbenennung</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>Umbennungsregeln</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation>%1 - Kopie%2</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation>%1 - Kopie (%2) {1 ?} {2)%3?}</translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation>%1 - Kopie</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation>%1 - Kopie (%2)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation>%name% - Kopie</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation>%name% - Kopie (%number%)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation>Problem beim Lesen des Ordners</translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished">%name% - Kopie%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished">%name% - Kopie% (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation>Datei nicht gefunden</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation>Kann Datum nicht ändern</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation>Versuche Umbenennung mit Sonderzeichen</translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation>Falsches Änderungsdatum oder Fehler beim Auslesen, Sie können die Übertragung des Zeitstempels deaktivieren</translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished">Zielordner konnte nicht erstellt werden: </translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished">Zielordner konnte nicht erstellt werden, Fehler Nummer: %1</translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished">Zielordner konnte nicht erstellt werden: </translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished">Zielordner konnte nicht erstellt werden, Fehler Nummer: %1</translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation>Übertragung</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation>Verschiebe den ganzen Ordner</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation>Übertrage die Dateirechte</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation>Datum der Dateien beibehalten</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation>Vollen Pfad erstellen, wenn nicht vorhanden</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation>Fehler und Kollision</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation>Bei Ordnerfehler</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation>Bei Dateifehler</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation>Bei Dateikollision</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished">Überschreiben, falls Änderungsdatum verschieden</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation>Bei Ordnerkollision</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation>Prüfen ob Zielordner vorhanden ist</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation>Umbennungsregeln</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation>Unvollständig übertragene Dateien löschen</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation>Original-Ziel umbenennen</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation>Leistung</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation>Verschiedenes</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation>Auf freien Speicherplatz überprüfen</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation>Diesen Ordner benutzen, wenn kein Ziel definiert wurde</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation>Wählen</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation>Filter</translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation>Dateifehler</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation>Fehler</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation>Größe</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation>Geändert</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation>Dateiname</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation>Ziel</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation>Ordner</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Aktion immer ausführen</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation>Mit erweiterten Rechten versuchen</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation>Ans Ende verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation>Wiederholen</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation>Über&amp;springen</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation>Abbrechen (&amp;C)</translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation>Die Datei existiert</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>Quelle</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>Ziel</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation>Größe</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation>Geändert</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation>Dateiname</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation>Ordner</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Neuen &amp;Namen vorschlagen</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Aktion immer ausführen</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation>Überschreiben, falls Änderungsdatum verschieden</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation>Umbenennen (&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation>Überschreiben (&amp;O)</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation>Über&amp;springen</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation>Abbrechen (&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation>Überschreiben, falls neuer</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation>Überschreiben, falls älter</translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation>Größe</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation>Geändert</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation>Dateiname</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation>Quelle und Ziel sind gleich</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation>Ordner</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Neuen &amp;Namen vorschlagen</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Aktion immer ausführen</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation>Umbenennen (&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation>Über&amp;springen</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation>Abbrechen (&amp;C)</translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>Quelle</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>Ziel</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation>Quelle und Ziel sind identisch</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation>Geändert</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation>Ordnername</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation>Ordner</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Neuen &amp;Namen vorschlagen</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Aktion immer ausführen</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation>Umbenennen (&amp;R)</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation>Fusionieren</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation>Überspringen</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation>Abbrechen (&amp;C)</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.ts
new file mode 100755
index 0000000..ef5da14
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.qm
new file mode 100755
index 0000000..d925dd6
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.ts
new file mode 100755
index 0000000..4a444fe
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="en">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.qm
new file mode 100755
index 0000000..feaf1fc
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.ts
new file mode 100755
index 0000000..aad6412
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="es" sourcelanguage="en">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation>El motor se ve obligado a moverse, no se puede copiar con ella</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation>El motor se ve obligado a copiar, no te puedes mover con él</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation>Destino</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation>Utilice el destino &quot;%1&quot; actual?</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation>El modo se ha visto obligado previamente. Este es un error interno, por favor repórtelo</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation>Pedir</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation>Omitir</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation>Unir</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation>Cambiar el nombre</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation>Ponga al final</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation>Sobrescribir</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation>Sobrescribir si es diferente</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation>Sobrescribir si nuevo</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation>Sobrescribir si es mayor</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation>error Opciones</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>Opciones del motor no está cargado. No es posible acceder a los filtros</translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation>Pedir</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation>Omitir</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation>Unir</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation>Cambiar el nombre</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation>Ponga al final</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation>Sobrescribir</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation>Sobrescribir si es diferente</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation>Sobrescribir si nuevo</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation>Sobrescribir si es mayor</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation>error Opciones</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>Opciones del motor no está cargado. No es posible acceder a los filtros</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation>Opciones del motor no está cargado, no se puede acceder a los filtros</translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation>Espacio en disco</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation>Necesita más espacio en esta unidad para terminar esta transferencia</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation>Continuar</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation>Drives %1 tienen %2 disponible, pero necesitan %3</translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation>Error en la carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation>Nombre de la carpeta</translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>%name% - copia%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>%name% - copia (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation>Trate de cambiar el nombre con el uso de caracteres especiales</translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>%name% - copia%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>%name% - copia (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation>Trate de cambiar el nombre con el uso de caracteres especiales</translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation>Buscar:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation>Tipo de búsqueda:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation>texto Fuente</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation>Regex simplificado</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Perl&apos;s regex</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation>Aplicar sobre:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation>Archivos</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation>Carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation>Archivos y carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation>La cadena de prueba coincide con la expresión regular</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation>Verification</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation>Prueba de la cuerda:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation>Filtros de diálogo</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation>Todo cadena debe coincidir</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation>La expresión regular es válido</translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation>Filtros</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation>Filtros de exclusión</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation>Filtros de inclusión</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation>Ninguno = Incluya todos los</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation>texto Fuente</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation>Simplificado regex</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Perl&apos;s regex</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation>Sólo en el archivo</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation>Sólo en la carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation>Partido completo</translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation>Carpeta ya existe</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>%name% - copia%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>%name% - copia (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation>Trate de cambiar el nombre con el uso de caracteres especiales</translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation>No se puede hacer para mover o copiar elemento en modo incorrecto obligado: %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation>No se puede guardar la lista de transferencias: %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation>Problema al leer el archivo o archivos de tamaño es 0</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation>Encabezado incorrecto: &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation>La lista de transferencia está en modo mixto, pero este caso no es de este modo</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation>La lista de transferencia está en el modo de copia, pero esta instancia no está en este modo</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation>La lista de transferencia es el modo de desplazamiento, pero esta instancia no está en este modo</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation>Algunos errores han sido encontrados durante el análisis de línea</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation>No se puede abrir la lista de transferencias: %1</translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation>No se puede crear la carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation>La carpeta de origen no existe</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation>No es posible cambiar el nombre de la carpeta temporal</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation>No se puede hacer el movimiento final real de la carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation>No se puede mover la carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation>No se puede mover la carpeta: errno: %1</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation>No se puede eliminar</translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation>¡Error interno, por favor repórtelo!</translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation>No se puede leer el archivo fuente: </translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation>Archivo truncado durante la lectura, posible cambio de datos</translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation>En primer lugar el cambio de nombre</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation>%name% - copia%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation>%name% - copia (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; para el nombre del archivo original, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; para el número extra, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; sufijo de archivo&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation>En segundo lugar el cambio de nombre</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>Reglas de Cambio de nombre</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation>%1 - copia%2</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation>%1 - copia (%2)%3</translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation>%1 - copia</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation>%1 - copia (%2)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation>%name% - copia</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation>%name% - copia (%number%)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation>Problema con la carpeta leída</translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>%name% - copia%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>%name% - copia (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation>Archivo no encontrado</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation>No se puede cambiar la fecha</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation>Trate de cambiar el nombre con el uso de caracteres especiales</translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation>Fecha de modificación incorrecta o incapaz de obtenerla, puede desactivar la transferencia de tiempo para hacerlo</translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation>No se puede crear la carpeta de destino: </translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation>No se puede crear la carpeta de destino, errno: %1</translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation>Error de resolución de ruta (ruta vacía)</translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation>No se puede crear la carpeta de destino: </translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation>No se puede crear la carpeta de destino, errno: %1</translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation>¡Error interno, por favor repórtelo!</translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation>Transferencia</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation>Mueva la carpeta completa</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation>Transferencia de los derechos de archivo</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation>Mantener la fecha de archivo</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation>Crear ruta completa si no existe</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation>Suma de comprobación</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation>Inicio automático</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation>Error y de la colisión</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation>Cuando el error carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation>Cuando archivo error</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation>Cuando archivo colisión</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation>Sobrescribir si no es del mismo tamaño</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation>Sobrescribir si la fecha de modificación difiere</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation>Cuando la colisión carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation>Compruebe si existe la carpeta de destino</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation>Reglas de Cambio de nombre</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation>Eliminar archivos parcialmente transferidos</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation>Cambie el nombre del destino original</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation>Rendimiento</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation>Inode threads</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation>Desmarca esto en Windows crear problema</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation>Misc</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation>Compruebe el espacio en disco</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation>Use esta carpeta cuando el destino no esté configurado</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation>Busque</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation>Filtros</translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation>Error con el archivo</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation>Tamaño</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation>Modificado</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation>Nombre de archivo</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation>Destino</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation>Carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Siempre realice esta acción</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation>Pruebe con privilegios elevados</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation>Ponga a abajo</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation>Reintentar</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Omitir</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation>El archivo ya existe</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>Fuente</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>Destino</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation>Tamaño</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation>Modificado</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation>Nombre de archivo</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation>Carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Sugerir nuevo &amp;nombre</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Siempre realice esta acción</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation>Sobrescribir si la fecha de modificación difiere</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation>Sobrescribir si no es del mismo tamaño</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation>Sobrescribir si no es del mismo tamaño y fecha</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;Cambiar el nombre</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation>&amp;Sobrescribir</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Omitir</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation>Ca&amp;ncelar</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation>Sobrescribir si nuevo</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation>Sobrescribir si es mayor</translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation>Tamaño</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation>Modificado</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation>Nombre de archivo</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation>El origen y el destino son los mismos</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation>Carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Sugerir nuevo nombre</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Siempre realice esta acción</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation>Cambiar el nombre</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation>Omitir</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>Fuente</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>Destino</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation>La fuente y el destino es idéntica</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation>Modificado</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation>Nombre de la carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation>Carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Sugerir nuevo nombre</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Siempre realice esta acción</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation>Cambiar el nombre</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation>Unir</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation>Omitir</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.qm
new file mode 100755
index 0000000..c538b95
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.ts
new file mode 100755
index 0000000..6bec60f
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="fr" sourcelanguage="en">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation>Le moteur est forcé en déplacement, vous ne pouvez pas copier avec</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation>Le moteur est forcé en copie, vous ne pouvez pas déplacer avec</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation>Destination</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation>Utiliser la destination actuelle &quot;%1&quot;?</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation>Le mode a été forcé. C&apos;est une erreur interne, merci de la repporter</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation>Demander</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation>Passer</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation>Fusionner</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation>Renommer</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation>Mettre à la fin</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation>Écraser</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation>Écraser si différent</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation>Écraser si plus récent</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation>Écraser si plus vieux</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation>Erreur d&apos;options</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>Le moteur d&apos;options n&apos;est pas chargé. Impossible d&apos;accédé aux filtres</translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation>Demander</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation>Passer</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation>Fusionner</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation>Renommer</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation>Mettre à la fin</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation>Écraser</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation>Écraser si différent</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation>Écraser si plus récent</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation>Écraser si plus vieux</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation>Erreur d&apos;options</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>Le moteur d&apos;options n&apos;est pas chargé. Impossible d&apos;accédé aux filtres</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation>Moteur d&apos;options non chargé, impossible d&apos;accéder aux filtres</translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation>Espace disque</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation>Vous avez besoin de plus d&apos;espace pour finir ce transfert</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation>Continuer</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation>Lecteur %1 as %2 disponible mais à besoin de %3</translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation>Erreur sur un dossier</translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation>Nom de répertoire</translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>%name% - copie%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>%name% - copie (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation>Erreur</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation>Essaie de renommage avec caratéres interdits</translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>%name% - copie%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>%name% - copie (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation>Erreur</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation>Essaie de renommage avec caratéres interdits</translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation>Recherche:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation>Type de recherche:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation>Texte brut</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation>Regex simplifiée</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Regex perl</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation>Appliquer sur:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation>Fichier</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation>Dossier</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation>Fichier et dossier</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation>La chaine de texte corresponds avec la regex</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation>Vérification</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation>Chaine de test:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation>Dialogue des filtres</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation>Toute la chaine doit correspondre</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation>La regex est valid</translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation>Filtres</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation>Filtres d&apos;exclusion</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation>Filtres d&apos;inclusion</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation>Aucun = tout inclure</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation>Texte brute</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation>Regex simplifié</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Regex perl</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation>Appliquer sur fichier</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation>Appliquer sur dossier</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation>Correspondance totale</translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation>Dossier déjà existant</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>%name% - copie%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>%name% - copie (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation>Erreur</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation>Essaie de renommage avec caratéres interdits</translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation>Impossible de faire un déplacement ou une copie dans le mauvais mode forcé: %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation>Impossible de sauvegarder la liste de transfert: %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation>Problem durant la lecture, ou taille de fichier est 0</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation>Mauvais en-tête: &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation>La liste de transfert est en mode mixte, mais l&apos;instance n&apos;est pas dans ce mode</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation>La liste de transfert est en mode copie, mais l&apos;instance n&apos;est pas dans ce mode</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation>La liste de transfert est en mode déplacement, mais l&apos;instance n&apos;est pas dans ce mode</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation>Certaine erreur ont été trouvé durant l&apos;analise de la line</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation>Impossible d&apos;ouvrir la list de transfert: %1</translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation>Impossible de créer le répertoire</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation>Le dossier source n&apos;éxiste pas</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation>Impossible de renommer le dossier</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation>Impossible de faire le déplacement final du dossier</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation>Impossible de déplacer le dossier</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation>Impossible de déplacer le dossier: errno: %1</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation>Impossible de supprimer</translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation>Erreur interne, veuillez la signaler!</translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation>Impossible de lire le fichier source: </translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation>Fichier tronqué lors de la lecture, modification possible des données</translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation>Premier renommage</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation>%name% - copie%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation>%name% - copie (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; pour le nom original, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; pour le numero extra, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation>Second renommage</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>Règles de renommage</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation>%1 - copie%2</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation>%1 - copie (%2) {1 ?} {2)%3?}</translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation>%1 - copie</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation>%1 - copie (%2)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation>%name% - copie</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation>%name% - copie (%number%)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation>Probléme avec la lecture du dossier</translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>%name% - copie%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>%name% - copie (%number%)%suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation>Fichier non trouvé</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation>Essaie de renommage avec caratéres interdits</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation>Impossible de changer la date</translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation>Mauvaise date de modification ou impossible de l&apos;avoir, vous pouvez désactiver le transfert de celui-ci</translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation>Impossible de créer le dossier de destination: </translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation>Impossible de créer le dossier de destination, errno: %1</translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation>Erreur de résolution de chemin (chemin vide)</translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation>Impossible de créer le dossier de destination: </translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation>Impossible de créer le dossier de destination, errno: %1</translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation>Erreur interne, veuillez la signaler!</translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation>Transfert</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation>Déplacer le dossier complet</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation>Transférer les droits des fichiers</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation>Garder la date du fichier</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation>Créer le dossier complet si il n&apos;existe pas</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation>Somme de contrôle</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation>Démarrage automatique</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation>Erreur et collision</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation>En cas d&apos;erreur de répertoire</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation>En cas d&apos;erreur de fichier</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation>En cas de collision de fichier</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation>Écraser si pas la même taille</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation>Écraser si les dates différes</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation>Lors d&apos;une collision de dossier</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation>Vérifier si le répertoire de destination existe</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation>Règles de renommage</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation>Supprimer les transferts partiels</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation>Renommer la destination originale</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation>Performance</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation>Threads d&apos;inodes</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation>Décochez ceci sous Windows créer un problème</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation>Divers</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation>Vérifier l&apos;espace disque</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation>Utiliser ce dossier quand la destination n&apos;est pas défini</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation>Parcourir</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation>Filtres</translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation>Erreur avec un fichier</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation>Erreur</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation>Taille</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation>Modifié</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation>Nom de fichier</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation>Destination</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation>Dossier</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Toujours faire cette action</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation>Essayer avec des priviléges suppérieurs</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation>Mettre à la fin</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation>Réessayer</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Passer</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Annuler</translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation>Le fichier existe</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>Source</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>Destination</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation>Taille</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation>Modifié</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation>Nom de fichier</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation>Dossier</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Suggérer un &amp;nouveau nom</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Toujours faire cette action</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation>Écraser si les dates différes</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation>Écraser si pas la même taille</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation>Remplacer si ce n&apos;est pas la même taille et la même date</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;Renommer</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation>&amp;Écraser</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Passer</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Annuler</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation>Écraser si plus récent</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation>Écraser si plus vieux</translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation>Taille</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation>Modifié</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation>Nom de fichier</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation>La source et la destination sont identique</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation>Dossier</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Suggérer un &amp;nouveau nom</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Toujours faire cette action</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;Renommer</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Passer</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Annuler</translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>Source</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>Destination</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation>La source et la destination sont identique</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation>Modifié</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation>Nom de répertoire</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation>Dossier</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Suggérer un &amp;nouveau nom</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Toujours faire cette action</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;Renommer</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation>Fusionner</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation>Passer</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Annuler</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/hi/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/hi/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/hi/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/hi/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/hi/translation.ts
new file mode 100755
index 0000000..ef5da14
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/hi/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/hu/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/hu/translation.qm
new file mode 100755
index 0000000..6b6a991
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/hu/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/hu/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/hu/translation.ts
new file mode 100755
index 0000000..b7dde65
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/hu/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="hu">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation>A motort mozgatásra kényszerítik, nem másolhatsz vele</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation>A motort másolásra kényszerítik, nem mozgathatsz vele</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation>Cél</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation>Használja a jelenlegi célt: &quot;%1&quot;?</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation>Ezt a módot már korábban kényszerítették. Belső hiba történt, kérlek jelentsd be</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation>Kérdezzen rá</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation>Kihagy</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation>Összeolvaszt</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation>Nevezze át</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation>Helyezze a végére</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation>Felülír</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation>Felülír, ha különbözik</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation>Felülír, ha újabb</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation>Felülír, ha régebbi</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation>Beállítási hiba</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>A beállítási motor nincs betöltve. A szűrők elérése nem lehetséges</translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation>Kérdezzen rá</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation>Kihagy</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation>Összeolvaszt</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation>Nevezze át</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation>Helyezze a végére</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation>Felülír</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation>Felülír, ha különbözik</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation>Felülír, ha újabb</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation>Felülír, ha régebbi</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation>Beállítási hiba</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>A beállítási motor nincs betöltve. A szűrők elérése nem lehetséges</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation>A beállítási motor nincs betöltve, a szűrők elérése nem lehetséges</translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation>Lemezterület</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation>Több szabad helyre van szükséged ezen a lemezen az átvitel befejezéséhez</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation>Folytatás</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation>Mégse</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation>%1 meghajtón %2 hely van, de %3 szükséges</translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation>Hiba a mappával</translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation>Mappa neve</translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation>Hiba</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation>Átnevezés speciális karakterek használatával</translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation>Hiba</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation>Átnevezés speciális karakterek használatával</translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation>Szűrők üzenet</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation>Keresés:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation>Keresés típusa:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation>Nyers szöveg</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation>Egyszerűsített regex</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Perl regex</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation>Alkalmazás ezen:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation>Fájl</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation>Mappa</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation>Fájl és mappa</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation>A teljes szövegnek egyeznie kell</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation>A tesztszöveg megegyezik a regexszel</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation>Ellenőrzés</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation>A regex érvényes</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation>Próbaszöveg:</translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation>Szűrők</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation>Kizáró szűrők</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation>Használt szűrők</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation>Nincs = Mindet használ</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation>Nyers szöveg</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation>Egyszerűsített regex</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Perl regex</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation>Csak fájlon</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation>Csak mappán</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation>Teljes egyezés</translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation>Mappa már létezik</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation>Hiba</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation>Átnevezés speciális karakterek használatával</translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation>Elem másolása vagy mozgatás nem lehetséges a hibás kényszerített módban: %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation>Átviteli lista mentése nem lehetséges: %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation>Hiba a fájl olvasásánál vagy a fálméret 0</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation>Hibás fejléc: &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation>Az átviteli lista kevert módban van, de ez a példány nincs</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation>Az átviteli lista másolás módban van, de ez a példány nincs</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation>Az átviteli lista mozgatás módban van, de ez a példány nincs</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation>Néhány hiba történt a sorelemzés során</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation>Az átviteli lista megnyitása nem lehetséges: %1</translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation>Mappa létrehozása nem lehetséges</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation>Eltávolítás nem lehetséges</translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>Átnevezési szabályok</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation>Első átnevezés</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation>Második átnevezés</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished">%1 - másolás (%2) {1 ?} {2)%3?}</translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation>%1 - másolás</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation>%1 - másolás (%2)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished">%name% - másolás</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished">%name% - másolás (%number%)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation>Fájl nem található</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation>Átnevezés speciális karakterek használatával</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation>Átvitel</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation>Mozgassa át az egész mappát</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation>Fájljogok átadása</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation>Fájl dátumának megtartása</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation>Hiba és ütközés</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation>Mappa hiba esetén</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation>Fájl hiba esetén</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation>Fájl ütközés esetén</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished">Felülír, ha a módosítás dátuma különbözik</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation>Mappa ütközés esetén</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation>Célmappa létezésének ellenőrzése</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation>Átnevezési szabályok</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation>Részben átvitt fájlok törlése</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation>Eredeti cél átnevezése</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation>Teljesítmény</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation>Egyéb</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation>Lemezterület ellenőrzése</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation>Tallózás</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation>Szűrők</translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation>Hiba a fájllal</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation>Hiba</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation>Méret</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation>Módosítva</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation>Fájlnév</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation>Cél</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation>Mappa</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Mindig hajtsa végre ezt a műveletet</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation>Próbálja meg emelt jogosultsággal</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation>Tegye legalulra</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation>Újra</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Kihagy</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation>M&amp;égse</translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation>A fájl létezik</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>Forrás</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>Cél</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation>Méret</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation>Módosítva</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation>Fájlnév</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation>Mappa</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Új &amp;név ajánlása</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Mindig hajtsa végre ezt a műveletet</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation>Felülír, ha a módosítás dátuma különbözik</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation>Felülír, ha régebbi</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;Átnevez</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation>&amp;Felülír</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Kihagy</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Mégse</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation>Felülír, ha újabb</translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation>Méret</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation>Módosítva</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation>Fájlnév</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation>A forrás és a cél megegyezik</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation>Mappa</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Új &amp;név javasolása</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Mindig hajtsa végre ezt a műveletet</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;Átnevez</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Kihagy</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation>M&amp;égse</translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>Forrás</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>Cél</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation>Módosítva</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation>Mappa neve</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Új &amp;név javasolása</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation>A forrás és a cél megegyezik</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation>Mappa</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp;Mindig hajtsa végre ezt a műveletet</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;Átnevez</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation>Összeolvaszt</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation>Kihagy</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation>M&amp;égse</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/id/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/id/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/id/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/id/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/id/translation.ts
new file mode 100755
index 0000000..ef5da14
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/id/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/it/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/it/translation.qm
new file mode 100755
index 0000000..5090866
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/it/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/it/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/it/translation.ts
new file mode 100644
index 0000000..bedc49e
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/it/translation.ts
@@ -0,0 +1,1150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it" sourcelanguage="en">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation>Impossibile copiare, il motore di copia forzerà lo spostamento</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation>Impossibile effettuare lo spostamento, il motore di copia forzerà la copia</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation>Percorso di destinazione</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation>Usare l&apos;attuale destinazione? &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation>La modalità è stata forzata precedentemente. Questo è un errore interno, si prega di riportatelo</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation>Chiedi</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation>Salta</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation>Unisci</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation>Rinomina</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation>Metti in coda</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation>Sovrascrivi</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation>Sovrascrivi se differente</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation>Sovrascrivi se più recente</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation>Sovrascrivi se meno recente</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation>Errore opzioni</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>Motore delle opzioni non caricato. Impossibile accedere ai filtri</translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation>Chiedi</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation>Salta</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation>Unisci</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation>Rinomina</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation>Metti in coda</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation>Sovrascrivi</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation>Sovrascrivi se differente</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation>Sovrascrivi se più recente</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation>Sovrascrivi se meno recente</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation>Errore opzioni</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>Motore delle opzioni non caricato. Impossibile accedere ai filtri</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation>Le opzioni del motore di copia non sono state caricate. Impossibile accedere ai filtri</translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation>Spazio su disco</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation>Hai bisogno di più spazio su questo disco per finire il trasferimento</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation>Continua</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation>Annulla</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation>L&apos;unità %1 ha %2 disponibili, ma necessita di %3</translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation>Errore con la cartella</translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation>Nome cartella</translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>Copia di %name% %suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>Copia di %name% (%number%) %suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation>Errore</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation>Tenta ridenominazione usando caratteri speciali</translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>Copia di %name% %suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>Copia di %name% (%number%) %suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation>Errore</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation>Tenta ridenominazione usando caratteri speciali</translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation>Cerca:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation>Cerca tipologia:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation>Testo nudo</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation>Espressione regolare semplificata</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Espressione regolare in Perl</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation>Applicare a:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation>File</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation>Cartella</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation>File e cartelle</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation>La stringa di prova combacia con l&apos;espressione regolare</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation>Verifica</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation>Stringa di verifica:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation>Finestra dialogo dei filtri</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation>L&apos;intera stringa deve combaciare</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation>L&apos;espressione regolare è valida</translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation>Filtri</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation>Filtri di esclusione</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation>Filtri di inclusione</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation>Nessuno = Includi tutti</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation>Testo nudo</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation>Espressione regolare semplificata</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Espressione regolare in Perl</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation>Solamente su file</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation>Solamente su cartella</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation>Corrispondenza completa</translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation>Cartella già presente</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>Copia di %name% %suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>Copia di %name% (%number%) %suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation>Errore</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation>Tenta ridenominazione usando caratteri speciali</translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation>Impossibile spostare o copiare elementi in modalità forzata anomala: %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation>Impossibile salvare la lista di trasferimento %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation>Problema durante la lettura del file o dimensione file nulla</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation>Intestazione errata: &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation>La lista di trasferimento è in modalità mista ma questa istanza non lo è</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation>La lista di trasferimento è in modalità copia ma questa istanza non lo è</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation>La lista di trasferimento è in modalità spostamento ma questa istanza non lo è</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation>Alcuni errori rilevati durante l&apos;analisi di linea</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation>Impossibile aprire lista di trasferimento %1</translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation>Impossibile creare la cartella</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation>La cartella di origine non esiste</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation>Impossibile ridenominare temporaneamente la cartella</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation>Impossibile fare il vero spostamento finale della cartella</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation>Impossibile spostare la cartella</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation>Impossibile spostare la cartella: errore %1</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation>Impossibile eliminare</translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation>Errore interno, si prega di riportarlo!</translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation>Impossibile leggere file di origine: </translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation>File troncato durante la lettura. Possibile cambio dati</translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation>Prima ridenominazione</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translatorcomment>%name% non dovrà essere tradotto</translatorcomment>
+ <translation>Copia di %name% %suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translatorcomment>%name%, %number% non dovranno essere tradotti</translatorcomment>
+ <translation>Copia di %name% (%number%) %suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translatorcomment>%name%, %number% non dovranno essere tradotti</translatorcomment>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variabili: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; per il nome file originale, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; per il numero extra, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; Suffisso file&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation>Seconda ridenominazione</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>Regole di ridenominazione</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation>Copia di %1 %2</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation>Copia di %1 (%2) %3</translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation>Copia di %1</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation>Copia di %1 (%2)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation>Copia di %name%</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation>Copia di %name% (%number%)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation>Problema con la lettura della cartella</translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>Copia di %name% %suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>Copia di %name% (%number%) %suffix%</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation>File non trovato</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation>Tenta ridenominazione usando caratteri speciali</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation>Impossibile cambiare data</translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation>Data di modifica sbagliata o impossibile ottenerla, potete disabilitare l&apos;orario di trasferimento per procedere</translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation>Impossibile creare cartella di destinazione: </translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation>Impossibile creare cartella di destinazione, error %1</translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation>Errore di risoluzione percorso (vuoto)</translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation>Impossibile creare cartella di destinazione: </translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation>Impossibile creare cartella di destinazione, errore %1</translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation>Errore interno, si prega di riportarlo!</translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation>Trasferimento</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation>Spostare intera cartella</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation>Trasferire autorizzazioni dei file</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation>Mantenere date dei file</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation>Creare percorso completo se non esistente</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation>Checksum</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation>Avvio automatico</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation>Errori di coincidenze</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation>Quando si verifica errore nelle cartelle</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation>Quando si verifica errore nei file</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation>Quando i file coincidono</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation>Sovrascrivere se dimensione differisce</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation>Sovrascrivere se data di modifica differisce</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation>Quando le cartelle coincidono</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation>Controllare esistenza cartella di destinazione</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation>Regole di ridenominazione</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation>Eliminare i file parzialmente trasferiti</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation>Ridenominare destinazione all&apos;origine</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation>Prestazioni</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation>Numero thread inode</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation>Deselezionare ciò su Windows causa problemi</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation>Varie</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation>Controllare spazio su disco</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation>Usare questa cartella quando la destinazione non è impostata</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation>Sfoglia</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation>Filtri</translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation>Errore con file</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation>Errore</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation>Dimensione</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation>Modificato</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation>Nome file</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation>Destinazione</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation>Cartelle</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation>Esegui sempre questa azione</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation>Tenta con privilegi superiori</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation>Metti in coda</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation>Riprova</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation>Salta</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation>Annulla</translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation>File è già presente</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>Origine</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>Destinazione</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation>Dimensione</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation>Modificato</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation>Nome file</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation>Cartelle</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Suggerisci nuovo nome</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation>Esegui sempre questa azione</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation>Sovrascrivere se data di modifica differisce</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation>Sovrascrivere se dimensione differisce</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation>Sovrascrivere se dimensione e data differiscono</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation>Rinomina</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation>Sovrascrivi</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation>Salta</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation>Annulla</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation>Sovrascrivi se più recente</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation>Sovrascrivi se meno recente</translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation>Dimensione</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation>Modificato</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation>Nome file</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation>Origine e destinazioni sono identiche</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation>Cartelle</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Suggerisci nuovo nome</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation>Esegui sempre questa azione</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation>Rinomina</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation>Salta</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation>Annulla</translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>Origine</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>Destinazione</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation>Origine e destinazioni sono identiche</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation>Modificato</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation>Nome cartella</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation>Cartelle</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Suggerisci nuovo nome</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation>Esegui sempre questa azione</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation>Rinomina</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation>Unisci</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation>Salta</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation>Annulla</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/ja/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/ja/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/ja/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/ja/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/ja/translation.ts
new file mode 100755
index 0000000..a771060
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/ja/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/ko/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/ko/translation.qm
new file mode 100755
index 0000000..5bec6b9
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/ko/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/ko/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/ko/translation.ts
new file mode 100755
index 0000000..f8a23f8
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/ko/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ko_KR">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished">대상</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished">확인</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished">건너뛰기</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished">합치기</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished">이름 바꾸기</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished">더 최신이면 덮어씌우기</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished">확인</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished">건너뛰기</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished">합치기</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished">이름 바꾸기</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished">더 최신이면 덮어씌우기</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished">폴더 이름</translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished">오류</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished">오류</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished">오류</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation>폴더를 생성할 수 없습니다</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished">파일 권한 전송</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished">파일 날짜 보존</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished">폴더 오류시</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished">폴더 충돌시</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished">대상 폴드 존재시 확인</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation>오류</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation>크기</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation>수정 날짜</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation>파일 이름</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished">대상</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation>아래에 놓기</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation>재시도</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;건너뛰기</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;취소</translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation>파일이 존재합니다</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>원본</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>대상</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation>크기</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation>수정 날짜</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation>파일 이름</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation>새 &amp;이름 제안</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;이름 바꾸기</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation>&amp;덮어씌우기</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;건너뛰기</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;취소</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation>더 최신이면 덮어씌우기</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation>크기</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation>수정 날짜</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation>파일 이름</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation>새 &amp;이름 제안</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;이름 바꾸기</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;건너뛰기</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;취소</translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>원본</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>대상</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation>수정 날짜</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation>폴더 이름</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation>새 &amp;이름 제안</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;이름 바꾸기</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation>합치기</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation>건너뛰기</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;취소</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/nl/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/nl/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/nl/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/nl/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/nl/translation.ts
new file mode 100755
index 0000000..ef5da14
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/nl/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/no/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/no/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/no/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/no/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/no/translation.ts
new file mode 100755
index 0000000..ef5da14
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/no/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/pl/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/pl/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/pl/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/pl/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/pl/translation.ts
new file mode 100755
index 0000000..ef5da14
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/pl/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/pt/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/pt/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/pt/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/pt/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/pt/translation.ts
new file mode 100755
index 0000000..ef5da14
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/pt/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/ru/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/ru/translation.qm
new file mode 100755
index 0000000..a1f6180
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/ru/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/ru/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/ru/translation.ts
new file mode 100755
index 0000000..2115820
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/ru/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ru" sourcelanguage="en">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished">Двигатель вынуждены покинуть свои дома, вы не можете скопировать с ним</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished">Двигатель вынужден копии, вы не можете двигаться вместе с ним</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished">назначение</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished">просить</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished">пропускать</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished">слияние</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished">переименовать</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished">Заменить, если новее</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished">Опции ошибке</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished">просить</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished">пропускать</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished">слияние</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished">переименовать</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished">Заменить, если новее</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished">Опции ошибке</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished">Параметры двигателя не загружается, не может получить доступ к фильтрам</translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished">Ошибка в папку</translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished">имя папки</translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished">ошибка</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished">ошибка</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation>Поиск по сайту:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation>Тип поиска:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation>Сырой текст</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation>упрощенный regex</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Perl&apos;s regex</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation>Нанесите на:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation>файл</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation>папка</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation>Файлов и папок</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation>контроль</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation>Испытание строки:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation>Фильтры диалогового</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation>Регулярное действует</translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation>Фильтры</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation>Ни = Включить все</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation>Сырой текст</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation>Упрощенная регулярных выражений</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Perl&apos;s regex</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation>Только на файл</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation>Только на папку</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation>Полный матч</translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished">Папка уже существует</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished">ошибка</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation>Невозможно сделать, чтобы скопировать или переместить элемент в неправильном форсированном режиме: %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation>Невозможно сохранить трансфер: %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation>Неправильный заголовок: &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation>Трансфер в смешанном режиме, но этот экземпляр не в этом режиме</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation>Передача списка в режиме копирования, но этот экземпляр не в этом режиме</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation>Трансфер в режим перемещения, но этот экземпляр не в этом режиме</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation>Не удается открыть трансфер: %1</translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation>Невозможно создать папку</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation>Первое переименование</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation>Второе переименование</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>Переименование правила</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished">%1 - копия (%2) {1 ?} {2)%3?}</translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished">%1 - копия</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished">%1 - копия (%2)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished">%name% - копия</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished">%name% - копия (%number%)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished">Передача файлов прав</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished">Держите дату файла</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished">Когда папка ошибка</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished">Когда папка столкновения</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished">Убедитесь, что папка существует</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished">Переименование правила</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished">Фильтры</translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation>ошибка</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation>размер</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation>модифицированный</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation>имя файла</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished">назначение</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished">папка</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation>Положить в нижней</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation>Повторить</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation>пропускать</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation>отменить</translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation>Файл существует</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>источник</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>назначение</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation>размер</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation>модифицированный</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation>имя файла</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished">папка</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Предложить новое имя</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation>переименовать</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation>переписывать</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation>пропускать</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation>отменить</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation>Заменить, если новее</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation>размер</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation>модифицированный</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation>имя файла</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished">папка</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Предложить новое имя</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation>переименовать</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation>пропускать</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation>отменить</translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>источник</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>назначение</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation>модифицированный</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation>имя папки</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished">папка</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation>Предложить новое имя</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation>переименовать</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation>слияние</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation>пропускать</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation>отменить</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/th/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/th/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/th/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/th/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/th/translation.ts
new file mode 100755
index 0000000..ef5da14
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/th/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/tr/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/tr/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/tr/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/tr/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/tr/translation.ts
new file mode 100755
index 0000000..ef5da14
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/tr/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/zh/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/zh/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/zh/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/zh/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/zh/translation.ts
new file mode 100755
index 0000000..a771060
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/zh/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/ListThread.cpp b/plugins/CopyEngine/Ultracopier-Spec/ListThread.cpp
new file mode 100755
index 0000000..9c5e8f8
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/ListThread.cpp
@@ -0,0 +1,1235 @@
+#include "ListThread.h"
+#include <QStorageInfo>
+#include <QtGlobal>
+#include "../../../cpp11addition.h"
+
+#include "async/TransferThreadAsync.h"
+#ifdef Q_OS_LINUX
+#include <sys/sysinfo.h>
+#endif
+#ifdef Q_OS_WIN32
+#include <sysinfoapi.h>
+#endif
+
+ListThread::ListThread(FacilityInterface * facilityInterface) :
+ numberOfInodeOperation(0),
+ sourceDriveMultiple(false),
+ destinationDriveMultiple(false),
+ destinationFolderMultiple(false),
+ stopIt(false),
+ numberOfTransferIntoToDoList(0),
+ bytesToTransfer(0),
+ bytesTransfered(0),
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ rsync(false),
+ #endif
+ idIncrementNumber(1),
+ actualRealByteTransfered(0),
+ checkDestinationFolderExists(false),
+ parallelizeIfSmallerThan(1024),
+ moveTheWholeFolder(false),
+ deletePartiallyTransferredFiles(true),
+ inodeThreads(1),
+ renameTheOriginalDestination(false),
+ checkDiskSpace(true),
+ buffer(false),
+ followTheStrictOrder(true),
+ mode(Ultracopier::CopyMode::Copy),
+ forcedMode(false),
+ actionToDoListTransfer_count(0),
+ actionToDoListInode_count(0),
+ doTransfer(false),
+ doInode(false),
+ oversize(0),
+ currentProgression(0),
+ copiedSize(0),
+ totalSize(0),
+ localOverSize(0),
+ doRightTransfer(false),
+ keepDate(false),
+ os_spec_flags(true),
+ native_copy(false),
+ mkFullPath(false),
+ alwaysDoThisActionForFileExists(FileExists_NotSet),
+ speedLimitation(0),
+ returnBoolToCopyEngine(true)
+{
+ moveToThread(this);
+ start(HighPriority);
+ this->facilityInterface=facilityInterface;
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ clockForTheCopySpeed = NULL;
+ multiForBigSpeed = 0;
+ blockSize = 65536;
+ blockSizeAfterSpeedLimitation = blockSize;
+ #endif
+ putInPause = false;
+ autoStart=true;
+
+ //can't be static into WriteThread, linked by instance then by ListThread
+ writeFileList=new QMultiHash<QString,WriteThread *>();
+ writeFileListMutex=new QMutex();
+
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+ if(!connect(&timerUpdateDebugDialog,&QTimer::timeout,this,&ListThread::timedUpdateDebugDialog))
+ abort();
+ timerUpdateDebugDialog.start(ULTRACOPIER_PLUGIN_DEBUG_WINDOW_TIMER);
+ #endif
+ if(!connect(this, &ListThread::tryCancel, this,&ListThread::cancel, Qt::QueuedConnection))
+ abort();
+ if(!connect(this, &ListThread::askNewTransferThread, this,&ListThread::createTransferThread, Qt::QueuedConnection))
+ abort();
+ if(!connect(&mkPathQueue, &MkPath::firstFolderFinish, this,&ListThread::mkPathFirstFolderFinish, Qt::QueuedConnection))
+ abort();
+ if(!connect(&mkPathQueue, &MkPath::errorOnFolder, this,&ListThread::mkPathErrorOnFolder, Qt::QueuedConnection))
+ abort();
+ if(!connect(this, &ListThread::send_syncTransferList, this,&ListThread::syncTransferList_internal, Qt::QueuedConnection))
+ abort();
+ if(!connect(this, &ListThread::exportTransferListSend, this,&ListThread::exportTransferListInternal, Qt::QueuedConnection))
+ abort();
+ if(!connect(this, &ListThread::importTransferListSend, this,&ListThread::importTransferListInternal, Qt::QueuedConnection))
+ abort();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(!connect(&mkPathQueue, &MkPath::debugInformation, this,&ListThread::debugInformation, Qt::QueuedConnection))
+ abort();
+ if(!connect(&driveManagement,&DriveManagement::debugInformation, this,&ListThread::debugInformation, Qt::QueuedConnection))
+ abort();
+ #endif // ULTRACOPIER_PLUGIN_DEBUG
+
+ emit askNewTransferThread();
+ mkpathTransfer.release();
+
+ int64_t MBMem=100;
+ #ifdef Q_OS_WIN32
+ MEMORYSTATUSEX memoryStatus;
+ if(GlobalMemoryStatusEx(&memoryStatus))
+ MBMem=memoryStatus.ullTotalPhys/1024;
+ #endif
+ #ifdef Q_OS_LINUX
+ struct sysinfo info;
+ if(sysinfo(&info)==0)
+ MBMem=info.totalhigh*info.mem_unit/1024/1024;
+ #endif
+ if(MBMem<1024)
+ WriteThread::numberOfBlock=4+MBMem*0.12;
+ else
+ WriteThread::numberOfBlock=ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK;
+}
+
+ListThread::~ListThread()
+{
+ emit tryCancel();
+ waitCancel.acquire();
+ quit();
+ wait();
+}
+
+//transfer is finished
+void ListThread::transferInodeIsClosed()
+{
+ if(stopIt)
+ {
+ checkIfReadyToCancel();
+ return;
+ }
+ numberOfInodeOperation--;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfInodeOperation: "+std::to_string(numberOfInodeOperation));
+ #endif
+ TransferThreadAsync *temp_transfer_thread=qobject_cast<TransferThreadAsync *>(QObject::sender());
+ if(temp_transfer_thread==NULL)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"transfer thread not located!");
+ return;
+ }
+ if(overCheckUsedThread.find(temp_transfer_thread)==overCheckUsedThread.cend())
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"transfer thread not located in overcheck");
+ else
+ overCheckUsedThread.erase(temp_transfer_thread);
+ if(putAtBottomAfterError.find(temp_transfer_thread)!=putAtBottomAfterError.cend())
+ {
+ doNewActions_inode_manipulation();
+ doNewActions_start_transfer();
+ return;
+ }
+ bool isFound=false;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ int countLocalParse=0;
+ #endif
+ if(temp_transfer_thread->getStat()!=TransferStat_Idle)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"transfer thread not idle!");
+ return;
+ }
+ unsigned int int_for_internal_loop=0;
+ while(int_for_internal_loop<actionToDoListTransfer.size())
+ {
+ if(actionToDoListTransfer.at(int_for_internal_loop).id==temp_transfer_thread->transferId)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("[%1] have finish, put at idle; for id: %2").arg(int_for_internal_loop).arg(temp_transfer_thread->transferId).toStdString());
+ Ultracopier::ReturnActionOnCopyList newAction;
+ newAction.type=Ultracopier::RemoveItem;
+ newAction.userAction.moveAt=0;
+ newAction.addAction=actionToDoTransferToItemOfCopyList(actionToDoListTransfer.at(int_for_internal_loop));
+ newAction.userAction.position=int_for_internal_loop;
+ actionDone.push_back(newAction);
+ /// \todo check if item is at the right thread
+ const int64_t transferTime=temp_transfer_thread->transferTime();
+ if(transferTime>=0 && temp_transfer_thread->haveStartTime)
+ {
+ timeToTransfer.push_back(std::pair<uint64_t,uint32_t>(temp_transfer_thread->transferSize,transferTime));
+ temp_transfer_thread->haveStartTime=false;
+ }
+ actionToDoListTransfer.erase(actionToDoListTransfer.cbegin()+int_for_internal_loop);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("actionToDoListTransfer.size(): %1, actionToDoListInode: %2, actionToDoListInode_afterTheTransfer: %3").arg(actionToDoListTransfer.size()).arg(actionToDoListInode.size()).arg(actionToDoListInode_afterTheTransfer.size()).toStdString());
+ if(actionToDoListTransfer.empty() && actionToDoListInode.empty() && actionToDoListInode_afterTheTransfer.empty())
+ updateTheStatus();
+
+ //add the current size of file, to general size because it's finish
+ copiedSize=temp_transfer_thread->copiedSize();
+ if(copiedSize>(qint64)temp_transfer_thread->transferSize)
+ {
+ oversize=copiedSize-temp_transfer_thread->transferSize;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"add oversize of: "+std::to_string(oversize));
+ bytesToTransfer+=oversize;
+ bytesTransfered+=oversize;
+ }
+ bytesTransfered+=temp_transfer_thread->transferSize;
+
+ temp_transfer_thread->transferId=0;
+ temp_transfer_thread->transferSize=0;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ countLocalParse++;
+ #endif
+ isFound=true;
+ if(actionToDoListTransfer.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"actionToDoListTransfer==0");
+ actionToDoListInode.insert(actionToDoListInode.cbegin(),actionToDoListInode_afterTheTransfer.cbegin(),actionToDoListInode_afterTheTransfer.cend());
+ actionToDoListInode_afterTheTransfer.clear();
+ doNewActions_inode_manipulation();
+ doNewActions_start_transfer();
+ }
+ break;
+ }
+ int_for_internal_loop++;
+ }
+ if(isFound)
+ deleteTransferThread();
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,QStringLiteral("unable to found item into the todo list, id: %1, index: %2").arg(temp_transfer_thread->transferId).arg(int_for_internal_loop).toStdString());
+ temp_transfer_thread->transferId=0;
+ temp_transfer_thread->transferSize=0;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("countLocalParse: %1, actionToDoList.size(): %2").arg(countLocalParse).arg(actionToDoListTransfer.size()).toStdString());
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(countLocalParse!=1)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"countLocalParse != 1");
+ #endif
+ doNewActions_inode_manipulation();
+ doNewActions_start_transfer();
+}
+
+/** \brief put the current file at bottom in case of error
+\note ONLY IN CASE OF ERROR
+
+transferInodeIsClosed() will be call after, then will do:
+
+BUT
+
+this function call transfer->skip();
+not put at bottom, remove from to do list
+*/
+void ListThread::transferPutAtBottom()
+{
+ TransferThreadAsync *transfer=qobject_cast<TransferThreadAsync *>(QObject::sender());
+ if(transfer==NULL)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"transfer thread not located!");
+ return;
+ }
+ bool isFound=false;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ int countLocalParse=0;
+ #endif
+ unsigned int indexAction=0;
+ while(indexAction<actionToDoListTransfer.size())
+ {
+ if(actionToDoListTransfer.at(indexAction).id==transfer->transferId)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Put at the end: "+std::to_string(transfer->transferId));
+ //push for interface at the end
+ Ultracopier::ReturnActionOnCopyList newAction;
+ newAction.type=Ultracopier::MoveItem;
+ newAction.addAction.id=transfer->transferId;
+ newAction.userAction.position=0;
+ newAction.userAction.moveAt=actionToDoListTransfer.size()-1;
+ actionDone.push_back(newAction);
+ //do the wait stat
+ actionToDoListTransfer[indexAction].isRunning=false;
+ //move at the end
+ actionToDoListTransfer.push_back(actionToDoListTransfer.at(indexAction));
+ actionToDoListTransfer.erase(actionToDoListTransfer.cbegin()+indexAction);
+ transfer->transferId=0;
+ transfer->transferSize=0;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ countLocalParse++;
+ #endif
+ isFound=true;
+ putAtBottomAfterError.insert(transfer);
+ break;
+ }
+ indexAction++;
+ }
+ if(!isFound)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,QStringLiteral("unable to found item into the todo list, id: %1, index: %2").arg(transfer->transferId).toStdString());
+ transfer->transferId=0;
+ transfer->transferSize=0;
+ putAtBottomAfterError.insert(transfer);
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"countLocalParse: "+std::to_string(countLocalParse));
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(countLocalParse!=1)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"countLocalParse != 1");
+ #endif
+ transfer->skip();
+}
+
+void ListThread::fileTransfer(const INTERNALTYPEPATH &sourceFileInfo,const INTERNALTYPEPATH &destinationFileInfo,const Ultracopier::CopyMode &mode)
+{
+ if(stopIt)
+ return;
+ addToTransfer(sourceFileInfo,destinationFileInfo,mode);
+}
+
+void ListThread::fileTransferWithInode(const INTERNALTYPEPATH &sourceFileInfo,const INTERNALTYPEPATH &destinationFileInfo,
+ const Ultracopier::CopyMode &mode,const TransferThread::dirent_uc &inode)
+{
+ if(stopIt)
+ return;
+ #ifdef Q_OS_WIN32
+ addToTransfer(sourceFileInfo,destinationFileInfo,mode,inode.size);
+ #else
+ (void)inode;
+ addToTransfer(sourceFileInfo,destinationFileInfo,mode);
+ #endif
+}
+
+void ListThread::autoStartAndCheckSpace()
+{
+ if(needMoreSpace())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Need more space");
+ return;
+ }
+ autoStartIfNeeded();
+}
+
+void ListThread::autoStartIfNeeded()
+{
+ if(autoStart)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Auto start the copy");
+ startGeneralTransfer();
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Put the copy engine in pause");
+ putInPause=true;
+ emit isInPause(true);
+ }
+}
+
+//set auto start
+void ListThread::setAutoStart(const bool autoStart)
+{
+ this->autoStart=autoStart;
+}
+
+void ListThread::startGeneralTransfer()
+{
+ doNewActions_inode_manipulation();
+}
+
+/** \brief to sync the transfer list
+ * Used when the interface is changed, useful to minimize the memory size */
+void ListThread::syncTransferList()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit send_syncTransferList();
+}
+
+bool ListThread::getReturnBoolToCopyEngine() const
+{
+ return returnBoolToCopyEngine;
+}
+
+std::pair<quint64, quint64> ListThread::getReturnPairQuint64ToCopyEngine() const
+{
+ return returnPairQuint64ToCopyEngine;
+}
+
+Ultracopier::ItemOfCopyList ListThread::getReturnItemOfCopyListToCopyEngine() const
+{
+ return returnItemOfCopyListToCopyEngine;
+}
+
+void ListThread::realByteTransfered()
+{
+ quint64 totalRealByteTransfered=0;
+ int index=0;
+ int loop_sub_size_transfer_thread_search=transferThreadList.size();
+ while(index<loop_sub_size_transfer_thread_search)
+ {
+ const TransferThreadAsync * thread=transferThreadList.at(index);
+ totalRealByteTransfered+=thread->realByteTransfered();
+ index++;
+ }
+ emit send_realBytesTransfered(totalRealByteTransfered);
+}
+
+void ListThread::checkIfReadyToCancel()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ if(!stopIt)
+ return;
+ int index=0;
+ int loop_size=transferThreadList.size();
+ while(index<loop_size)
+ {
+ if(transferThreadList.at(index)!=NULL)
+ {
+ if(transferThreadList.at(index)->transferId!=0)
+ return;
+ //need wait a clean stop (and then destination remove)
+ if(transferThreadList.at(index)->getStat()!=TransferStat_Idle)
+ return;
+ delete transferThreadList.at(index);//->deleteLayer();
+ transferThreadList[index]=NULL;
+ transferThreadList.erase(transferThreadList.cbegin()+index);
+ loop_size=transferThreadList.size();
+ index--;
+ }
+ index++;
+ }
+ actionToDoListTransfer.clear();
+ actionToDoListInode.clear();
+ actionToDoListInode_afterTheTransfer.clear();
+ actionDone.clear();
+ progressionList.clear();
+ returnListItemOfCopyListToCopyEngine.clear();
+ quit();
+ waitCancel.release();
+ emit canBeDeleted();
+}
+
+void ListThread::updateTheStatus()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ sendActionDone();
+ bool updateTheStatus_listing=scanFileOrFolderThreadsPool.size()>0;
+ bool updateTheStatus_copying=actionToDoListTransfer.size()>0 || actionToDoListInode.size()>0 || actionToDoListInode_afterTheTransfer.size()>0;
+ Ultracopier::EngineActionInProgress updateTheStatus_action_in_progress;
+ if(updateTheStatus_copying && updateTheStatus_listing)
+ updateTheStatus_action_in_progress=Ultracopier::CopyingAndListing;
+ else if(updateTheStatus_listing)
+ updateTheStatus_action_in_progress=Ultracopier::Listing;
+ else if(updateTheStatus_copying)
+ updateTheStatus_action_in_progress=Ultracopier::Copying;
+ else
+ updateTheStatus_action_in_progress=Ultracopier::Idle;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit actionInProgess("+std::to_string(updateTheStatus_action_in_progress)+")");
+ emit actionInProgess(updateTheStatus_action_in_progress);
+}
+
+//mk path to do
+uint64_t ListThread::addToMkPath(const INTERNALTYPEPATH& source,const INTERNALTYPEPATH& destination, const int& inode)
+{
+ if(stopIt)
+ return 0;
+ if(inode!=0 && (!keepDate && !doRightTransfer))
+ return 0;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+TransferThread::internalStringTostring(source)+
+ ", destination: "+TransferThread::internalStringTostring(destination));
+ ActionToDoInode temp;
+ temp.type = ActionType_MkPath;
+ temp.id = generateIdNumber();
+ temp.source = source;
+ temp.destination= destination;
+ temp.isRunning = false;
+ actionToDoListInode.push_back(temp);
+ return temp.id;
+}
+
+//add path to do
+void ListThread::addToMovePath(const INTERNALTYPEPATH &source, const INTERNALTYPEPATH &destination, const int& inodeToRemove)
+{
+ if(stopIt)
+ return;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+TransferThread::internalStringTostring(source)+
+ ", destination: "+TransferThread::internalStringTostring(destination)+", inodeToRemove: "+std::to_string(inodeToRemove));
+ ActionToDoInode temp;
+ temp.type = ActionType_MovePath;
+ temp.id = generateIdNumber();
+ temp.size = inodeToRemove;
+ temp.source = source;
+ temp.destination= destination;
+ temp.isRunning = false;
+ actionToDoListInode.push_back(temp);
+}
+
+void ListThread::addToKeepAttributePath(const INTERNALTYPEPATH &source, const INTERNALTYPEPATH &destination, const int& inodeToRemove)
+{
+ if(stopIt)
+ return;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+TransferThread::internalStringTostring(source)+
+ ", destination: "+TransferThread::internalStringTostring(destination)+", inodeToRemove: "+std::to_string(inodeToRemove));
+ ActionToDoInode temp;
+ temp.type = ActionType_SyncDate;
+ temp.id = generateIdNumber();
+ temp.size = inodeToRemove;
+ temp.source = source;
+ temp.destination= destination;
+ temp.isRunning = false;
+ actionToDoListInode.push_back(temp);
+}
+
+void ListThread::addToRealMove(const INTERNALTYPEPATH& source,const INTERNALTYPEPATH& destination)
+{
+ if(stopIt)
+ return;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+TransferThread::internalStringTostring(source)+
+ ", destination: "+TransferThread::internalStringTostring(destination));
+ ActionToDoInode temp;
+ temp.type = ActionType_RealMove;
+ temp.id = generateIdNumber();
+ temp.size = 0;
+ temp.source = source;
+ temp.destination= destination;
+ temp.isRunning = false;
+ actionToDoListInode.push_back(temp);
+}
+
+#ifdef ULTRACOPIER_PLUGIN_RSYNC
+//rsync rm
+void ListThread::addToRmForRsync(const std::string& destination)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"inode: "+destination);
+ ActionToDoInode temp;
+ temp.type = ActionType_RmSync;
+ temp.id = generateIdNumber();
+ temp.destination= destination;
+ temp.isRunning = false;
+ actionToDoListInode.push_back(temp);
+}
+#endif
+
+//send the progression, after full reset of the interface (then all is empty)
+void ListThread::syncTransferList_internal()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit syncReady();
+ actionDone.clear();
+ //do list operation
+ TransferThreadAsync *transferThread;
+ const int &loop_size=actionToDoListTransfer.size();
+ int loop_sub_size=transferThreadList.size();
+ //this loop to have at max inodeThreads*inodeThreads, not inodeThreads*transferThreadList.size()
+ int int_for_internal_loop;
+ for(int int_for_loop=0; int_for_loop<loop_size; ++int_for_loop) {
+ const ActionToDoTransfer &item=actionToDoListTransfer.at(int_for_loop);
+ Ultracopier::ReturnActionOnCopyList newAction;
+ newAction.type = Ultracopier::PreOperation;
+ newAction.addAction.id = item.id;
+ const size_t sourceIndex=item.source.rfind('/');
+ if(sourceIndex == std::string::npos)
+ {
+ newAction.addAction.sourceFullPath = '/';
+ newAction.addAction.sourceFileName = TransferThread::internalStringTostring(item.source);
+ }
+ else
+ {
+ newAction.addAction.sourceFullPath = TransferThread::internalStringTostring(item.source);
+ newAction.addAction.sourceFileName = TransferThread::internalStringTostring(item.source.substr(sourceIndex+1));
+ }
+ const size_t destinationIndex=item.destination.rfind('/');
+ if(destinationIndex == std::string::npos)
+ {
+ newAction.addAction.destinationFullPath = '/';
+ newAction.addAction.destinationFileName = TransferThread::internalStringTostring(item.destination);
+ }
+ else
+ {
+ newAction.addAction.destinationFullPath = TransferThread::internalStringTostring(item.destination);
+ newAction.addAction.destinationFileName = TransferThread::internalStringTostring(item.destination.substr(destinationIndex+1));
+ }
+ newAction.addAction.size = item.size;
+ newAction.addAction.mode = item.mode;
+ actionDone.push_back(newAction);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"id: "+std::to_string(item.id)+", size: "+std::to_string(item.size)+
+ ", name: "+TransferThread::internalStringTostring(item.source)+", size2: "+std::to_string(newAction.addAction.size));
+ if(item.isRunning)
+ {
+ for(int_for_internal_loop=0; int_for_internal_loop<loop_sub_size; ++int_for_internal_loop) {
+ transferThread=transferThreadList.at(int_for_internal_loop);
+ Ultracopier::ReturnActionOnCopyList newAction;
+ newAction.type = Ultracopier::PreOperation;
+ newAction.addAction.id = item.id;
+ const size_t sourceIndex=item.source.rfind('/');
+ if(sourceIndex == std::string::npos)
+ {
+ newAction.addAction.sourceFullPath = TransferThread::internalStringTostring(item.source);
+ newAction.addAction.sourceFileName = TransferThread::internalStringTostring(item.source);
+ }
+ else
+ {
+ newAction.addAction.sourceFullPath = TransferThread::internalStringTostring(item.source);
+ newAction.addAction.sourceFileName = TransferThread::internalStringTostring(item.source.substr(sourceIndex+1));
+ }
+ const size_t destinationIndex=item.destination.rfind('/');
+ if(destinationIndex == std::string::npos)
+ {
+ newAction.addAction.destinationFullPath = TransferThread::internalStringTostring(item.destination);
+ newAction.addAction.destinationFileName = TransferThread::internalStringTostring(item.destination);
+ }
+ else
+ {
+ newAction.addAction.destinationFullPath = TransferThread::internalStringTostring(item.destination);
+ newAction.addAction.destinationFileName = TransferThread::internalStringTostring(item.destination.substr(destinationIndex+1));
+ }
+ newAction.addAction.size = item.size;
+ newAction.addAction.mode = item.mode;
+ actionDone.push_back(newAction);
+ if(transferThread->getStat()!=TransferStat_PreOperation)
+ {
+ Ultracopier::ReturnActionOnCopyList newAction;
+ switch(transferThread->getStat())
+ {
+ case TransferStat_Transfer:
+ newAction.type=Ultracopier::Transfer;
+ break;
+ /*case TransferStat_PostTransfer:
+ newAction.type=Ultracopier::PostOperation;
+ break;*/
+ case TransferStat_PostOperation:
+ newAction.type=Ultracopier::PostOperation;
+ break;
+ default:
+ break;
+ }
+ newAction.addAction.id = item.id;
+ actionDone.push_back(newAction);
+ }
+ }
+ }
+ }
+}
+
+//add file transfer to do
+uint64_t ListThread::addToTransfer(const INTERNALTYPEPATH &source, const INTERNALTYPEPATH &destination, const Ultracopier::CopyMode& mode, const int64_t sendedsize)
+{
+ if(stopIt)
+ return 0;
+ //add to transfer list
+ numberOfTransferIntoToDoList++;
+ uint64_t size=0;
+ if(sendedsize>=0)
+ size=sendedsize;
+ else
+ {
+ const int64_t tempSize=TransferThread::file_stat_size(source);
+ if(tempSize>=0)
+ size=tempSize;
+ }
+ const std::string &drive=driveManagement.getDrive(TransferThread::internalStringTostring(destination));
+ if(!drive.empty())//can be a network drive
+ if(mode!=Ultracopier::Move || drive!=driveManagement.getDrive(TransferThread::internalStringTostring(source)))
+ {
+ if(requiredSpace.find(drive)!=requiredSpace.cend())
+ {
+ requiredSpace[drive]+=size;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("space needed add: %1, space needed: %2, on: %3").arg(size).arg(requiredSpace.at(drive)).arg(QString::fromStdString(drive)).toStdString());
+ }
+ else
+ {
+ requiredSpace[drive]=size;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("set space %1 needed, on: %2").arg(size).arg(QString::fromStdString(drive)).toStdString());
+ }
+ }
+ bytesToTransfer+= size;
+ ActionToDoTransfer temp;
+ temp.id = generateIdNumber();
+ temp.size = size;
+ temp.source = source;
+ temp.destination= destination;
+ temp.mode = mode;
+ temp.isRunning = false;
+ actionToDoListTransfer.push_back(temp);
+ //push the new transfer to interface
+ Ultracopier::ReturnActionOnCopyList newAction;
+ newAction.type = Ultracopier::AddingItem;
+ newAction.addAction=actionToDoTransferToItemOfCopyList(temp);
+ actionDone.push_back(newAction);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+TransferThread::internalStringTostring(source)+
+ ", destination: "+TransferThread::internalStringTostring(destination)+", add entry: "+std::to_string(temp.id)+", size: "+
+ std::to_string(temp.size)+", size2: "+std::to_string(size)+", isSymLink: "+std::to_string(TransferThread::is_symlink(source)));
+ return temp.id;
+}
+
+Ultracopier::ItemOfCopyList ListThread::actionToDoTransferToItemOfCopyList(const ListThread::ActionToDoTransfer &actionToDoTransfer)
+{
+ Ultracopier::ItemOfCopyList itemOfCopyList;
+ itemOfCopyList.id = actionToDoTransfer.id;
+ const size_t sourceIndex=actionToDoTransfer.source.rfind('/');
+ if(sourceIndex == std::string::npos)
+ {
+ itemOfCopyList.sourceFullPath = TransferThread::internalStringTostring(actionToDoTransfer.source);
+ itemOfCopyList.sourceFileName = TransferThread::internalStringTostring(actionToDoTransfer.source);
+ }
+ else
+ {
+ itemOfCopyList.sourceFullPath = TransferThread::internalStringTostring(actionToDoTransfer.source);
+ itemOfCopyList.sourceFileName = TransferThread::internalStringTostring(actionToDoTransfer.source.substr(sourceIndex+1));
+ }
+ const size_t destinationIndex=actionToDoTransfer.destination.rfind('/');
+ if(destinationIndex == std::string::npos)
+ {
+ itemOfCopyList.destinationFullPath = TransferThread::internalStringTostring(actionToDoTransfer.destination);
+ itemOfCopyList.destinationFileName = TransferThread::internalStringTostring(actionToDoTransfer.destination);
+ }
+ else
+ {
+ itemOfCopyList.destinationFullPath = TransferThread::internalStringTostring(actionToDoTransfer.destination);
+ itemOfCopyList.destinationFileName = TransferThread::internalStringTostring(actionToDoTransfer.destination.substr(destinationIndex+1));
+ }
+ itemOfCopyList.size = actionToDoTransfer.size;
+ itemOfCopyList.mode = actionToDoTransfer.mode;
+ return itemOfCopyList;
+}
+
+//generate id number
+uint64_t ListThread::generateIdNumber()
+{
+ idIncrementNumber++;
+ if(idIncrementNumber>(((quint64)1024*1024)*1024*1024*2))
+ idIncrementNumber=0;
+ return idIncrementNumber;
+}
+
+//do new actions
+void ListThread::doNewActions_start_transfer()
+{
+ /*ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("actionToDoListTransfer.size(): %1, numberOfTranferRuning: %2")
+ .arg(actionToDoListTransfer.size()).arg(getNumberOfTranferRuning()).toStdString());*/
+ if(stopIt || putInPause)
+ return;
+ int numberOfTranferRuning=getNumberOfTranferRuning();
+ const int &loop_size=transferThreadList.size();
+ //lunch the transfer in WaitForTheTransfer
+ //high priority
+ int int_for_loop=0;
+ while(int_for_loop<loop_size)
+ {
+ TransferThreadAsync *transferThread=transferThreadList.at(int_for_loop);
+ if(transferThread->getStat()==TransferStat_WaitForTheTransfer/*ready to start the transfer*/ && transferThread->transferId!=0)
+ {
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfTranferRuning: "+std::to_string(numberOfTranferRuning));
+ if(transferThread->transferSize>=parallelizeIfSmallerThan)
+ {
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfTranferRuning: "+std::to_string(numberOfTranferRuning));
+ if(numberOfTranferRuning<ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfTranferRuning: "+std::to_string(numberOfTranferRuning));
+ transferThread->startTheTransfer();
+ numberOfTranferRuning++;
+ }
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfTranferRuning: "+std::to_string(numberOfTranferRuning)+
+ ", start in parallele beacuase size is "+std::to_string(transferThread->transferSize));
+ transferThread->startTheTransfer();
+ numberOfTranferRuning++;
+ }
+ }
+ int_for_loop++;
+ }
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfTranferRuning: "+std::to_string(numberOfTranferRuning));
+
+ //low priority
+ int_for_loop=0;
+ while(int_for_loop<loop_size)
+ {
+ TransferThreadAsync *transferThread=transferThreadList.at(int_for_loop);
+ if(transferThread->getStat()==TransferStat_PreOperation/*wait user dialog action*/)
+ {
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfTranferRuning: "+std::to_string(numberOfTranferRuning));
+ if(transferThread->transferSize>=parallelizeIfSmallerThan)
+ {
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfTranferRuning: "+std::to_string(numberOfTranferRuning));
+ if(numberOfTranferRuning<ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfTranferRuning: "+std::to_string(numberOfTranferRuning));
+ transferThread->startTheTransfer();
+ numberOfTranferRuning++;
+ }
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfTranferRuning: "+std::to_string(numberOfTranferRuning));
+ transferThread->startTheTransfer();
+ numberOfTranferRuning++;
+ }
+ }
+ int_for_loop++;
+ }
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfTranferRuning: "+std::to_string(numberOfTranferRuning));
+}
+
+/** \brief lunch the pre-op or inode op
+ 1) locate the next next item to do into the both list
+ 1a) optimisation posible on the mkpath/rmpath
+ 2) determine what need be lunched
+ 3) lunch it, rerun the 2)
+ */
+void ListThread::doNewActions_inode_manipulation()
+{
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"actionToDoList.size(): "+std::to_string(actionToDoListTransfer.size()));
+ #endif
+ if(stopIt)
+ checkIfReadyToCancel();
+ if(stopIt || putInPause)
+ return;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ #endif
+ //lunch the pre-op or inode op
+ TransferThreadAsync *currentTransferThread;
+ int int_for_loop=0;
+ int int_for_internal_loop=0;
+ int int_for_transfer_thread_search=0;
+ actionToDoListTransfer_count=actionToDoListTransfer.size();
+ actionToDoListInode_count=actionToDoListInode.size();
+ int loop_sub_size_transfer_thread_search=transferThreadList.size();
+ //search the next transfer action to do
+ while(int_for_loop<actionToDoListTransfer_count)
+ {
+ ActionToDoTransfer& currentActionToDoTransfer=actionToDoListTransfer[int_for_loop];
+ if(!currentActionToDoTransfer.isRunning)
+ {
+ //search the next inode action to do
+ while(int_for_internal_loop<actionToDoListInode_count)
+ {
+ if(!actionToDoListInode.at(int_for_internal_loop).isRunning)
+ {
+ if(currentActionToDoTransfer.id<actionToDoListInode.at(int_for_internal_loop).id)
+ {
+ //do the tranfer action in the next code
+ break;
+ }
+ else
+ {
+ //do the inode action
+ #include "ListThread_InodeAction.cpp"
+ }
+ }
+ int_for_internal_loop++;
+ }
+ //do the tranfer action
+ while(int_for_transfer_thread_search<loop_sub_size_transfer_thread_search)
+ {
+ /**
+ transferThreadList.at(int_for_transfer_thread_search)->transferId==0) /!\ important!
+ Because the other thread can have call doNewAction before than this thread have the finish event parsed!
+ I this case it lose all data
+ */
+ currentTransferThread=transferThreadList.at(int_for_transfer_thread_search);
+ if(currentTransferThread->getStat()==TransferStat_Idle && currentTransferThread->transferId==0 &&
+ overCheckUsedThread.find(currentTransferThread)==overCheckUsedThread.cend()) // /!\ important!
+ {
+ overCheckUsedThread.insert(currentTransferThread);
+
+ std::string drive=driveManagement.getDrive(TransferThread::internalStringTostring(currentActionToDoTransfer.destination));
+ if(requiredSpace.find(drive)!=requiredSpace.cend() &&
+ (currentActionToDoTransfer.mode!=Ultracopier::Move ||
+ drive!=driveManagement.getDrive(TransferThread::internalStringTostring(currentActionToDoTransfer.source))))
+ {
+ requiredSpace[drive]-=currentActionToDoTransfer.size;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("space needed removed: %1, space needed: %2, on: %3").arg(
+ currentActionToDoTransfer.size).arg(requiredSpace.at(drive)).arg(QString::fromStdString(drive)).toStdString());
+ }
+ currentTransferThread->transferId=currentActionToDoTransfer.id;
+ currentTransferThread->transferSize=currentActionToDoTransfer.size;
+ putAtBottomAfterError.erase(currentTransferThread);
+ if(!currentTransferThread->setFiles(
+ currentActionToDoTransfer.source,
+ currentActionToDoTransfer.size,
+ currentActionToDoTransfer.destination,
+ currentActionToDoTransfer.mode
+ ))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(int_for_loop)+"] id: "+
+ std::to_string(currentTransferThread->transferId)+
+ " is idle, but seam busy at set name: "+TransferThread::internalStringTostring(currentActionToDoTransfer.destination)
+ );
+ break;
+ }
+ currentActionToDoTransfer.isRunning=true;
+
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(int_for_loop)+"] id: "+
+ std::to_string(currentTransferThread->transferId)+
+ " is idle, use it for "+TransferThread::internalStringTostring(currentActionToDoTransfer.destination)
+ );
+
+ /// \note wrong position? Else write why it's here
+ Ultracopier::ReturnActionOnCopyList newAction;
+ newAction.type = Ultracopier::PreOperation;
+ newAction.addAction.id = currentActionToDoTransfer.id;
+ const size_t sourceIndex=currentActionToDoTransfer.source.rfind('/');
+ if(sourceIndex == std::string::npos)
+ {
+ newAction.addAction.sourceFullPath = '/';
+ newAction.addAction.sourceFileName = TransferThread::internalStringTostring(currentActionToDoTransfer.source);
+ }
+ else
+ {
+ newAction.addAction.sourceFullPath = TransferThread::internalStringTostring(currentActionToDoTransfer.source);
+ newAction.addAction.sourceFileName = TransferThread::internalStringTostring(currentActionToDoTransfer.source.substr(sourceIndex+1));
+ }
+ const size_t destinationIndex=currentActionToDoTransfer.destination.rfind('/');
+ if(destinationIndex == std::string::npos)
+ {
+ newAction.addAction.destinationFullPath = '/';
+ newAction.addAction.destinationFileName = TransferThread::internalStringTostring(currentActionToDoTransfer.destination);
+ }
+ else
+ {
+ newAction.addAction.destinationFullPath = TransferThread::internalStringTostring(currentActionToDoTransfer.destination);
+ newAction.addAction.destinationFileName = TransferThread::internalStringTostring(currentActionToDoTransfer.destination.substr(destinationIndex+1));
+ }
+ newAction.addAction.size = currentActionToDoTransfer.size;
+ newAction.addAction.mode = currentActionToDoTransfer.mode;
+ actionDone.push_back(newAction);
+ int_for_transfer_thread_search++;
+ numberOfInodeOperation++;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfInodeOperation: "+std::to_string(numberOfInodeOperation));
+ #endif
+ break;
+ }
+ int_for_transfer_thread_search++;
+ }
+ if(int_for_internal_loop==loop_sub_size_transfer_thread_search)
+ {
+ /// \note Can be normal when all thread is not initialized
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"unable to found free thread to do the transfer");
+ #endif
+ break;
+ }
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfInodeOperation: "+std::to_string(numberOfInodeOperation));
+ #endif
+ if(numberOfInodeOperation>=inodeThreads)
+ break;
+ if(followTheStrictOrder)
+ break;
+ }
+ int_for_loop++;
+ }
+ //search the next inode action to do
+ int_for_internal_loop=0;
+ while(int_for_internal_loop<actionToDoListInode_count)
+ {
+ if(!actionToDoListInode.at(int_for_internal_loop).isRunning)
+ {
+ //do the inode action
+ #include "ListThread_InodeAction.cpp"
+ }
+ int_for_internal_loop++;
+ }
+ //error checking
+ if(actionToDoListInode_count>inodeThreads)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("The index have been detected as out of max range: %1>%2").arg(actionToDoListInode_count).arg(inodeThreads).toStdString());
+ return;
+ }
+}
+
+//restart transfer if it can
+void ListThread::restartTransferIfItCan()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ TransferThreadAsync *transfer=qobject_cast<TransferThreadAsync *>(QObject::sender());
+ if(transfer==NULL)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"transfer thread not located!");
+ return;
+ }
+ int numberOfTranferRuning=getNumberOfTranferRuning();
+ if(numberOfTranferRuning<ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER && transfer->getStat()==TransferStat_WaitForTheTransfer)
+ transfer->startTheTransfer();
+ doNewActions_start_transfer();
+}
+
+
+void ListThread::set_setFilters(const std::vector<Filters_rules> &include,const std::vector<Filters_rules> &exclude)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("include.size(): %1, exclude.size(): %2").arg(include.size()).arg(exclude.size()).toStdString());
+ this->include=include;
+ this->exclude=exclude;
+ unsigned int index=0;
+ while(index<scanFileOrFolderThreadsPool.size())
+ {
+ scanFileOrFolderThreadsPool.at(index)->setFilters(include,exclude);
+ index++;
+ }
+}
+
+void ListThread::set_sendNewRenamingRules(const std::string &firstRenamingRule,const std::string &otherRenamingRule)
+{
+ this->firstRenamingRule=firstRenamingRule;
+ this->otherRenamingRule=otherRenamingRule;
+ emit send_sendNewRenamingRules(firstRenamingRule,otherRenamingRule);
+}
+
+void ListThread::set_updateMount()
+{
+ driveManagement.tryUpdate();
+ emit send_updateMount();
+}
+
+void ListThread::mkPathFirstFolderFinish()
+{
+ int int_for_loop=0;
+ const int &loop_size=actionToDoListInode.size();
+ while(int_for_loop<loop_size)
+ {
+ const ActionToDoInode &actionToDoInode=actionToDoListInode.at(int_for_loop);
+ if(actionToDoInode.isRunning)
+ {
+ if(actionToDoInode.type==ActionType_MkPath || actionToDoInode.type==ActionType_SyncDate)
+ {
+ //to send to the log
+ emit mkPath(TransferThread::internalStringTostring(actionToDoInode.destination));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop mkpath: "+TransferThread::internalStringTostring(actionToDoInode.destination));
+ actionToDoListInode.erase(actionToDoListInode.cbegin()+int_for_loop);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("actionToDoListTransfer.size(): %1, actionToDoListInode: %2, actionToDoListInode_afterTheTransfer: %3").arg(actionToDoListTransfer.size()).arg(actionToDoListInode.size()).arg(actionToDoListInode_afterTheTransfer.size()).toStdString());
+ if(actionToDoListTransfer.empty() && actionToDoListInode.empty() && actionToDoListInode_afterTheTransfer.empty())
+ updateTheStatus();
+ numberOfInodeOperation--;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfInodeOperation: "+std::to_string(numberOfInodeOperation));
+ #endif
+ doNewActions_inode_manipulation();
+ return;
+ }
+ if(actionToDoInode.type==ActionType_MovePath || actionToDoInode.type==ActionType_RealMove
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ || actionToDoInode.type==ActionType_RmSync
+ #endif
+ )
+ {
+ //to send to the log
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ if(actionToDoInode.type!=ActionType_RmSync)
+ emit mkPath(actionToDoInode.destination);
+ #else
+ emit mkPath(TransferThread::internalStringTostring(actionToDoInode.destination));
+ #endif
+ emit rmPath(TransferThread::internalStringTostring(actionToDoInode.source));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop mkpath: "+TransferThread::internalStringTostring(actionToDoInode.destination));
+ actionToDoListInode.erase(actionToDoListInode.cbegin()+int_for_loop);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("actionToDoListTransfer.size(): %1, actionToDoListInode: %2, actionToDoListInode_afterTheTransfer: %3").arg(actionToDoListTransfer.size()).arg(actionToDoListInode.size()).arg(actionToDoListInode_afterTheTransfer.size()).toStdString());
+ if(actionToDoListTransfer.empty() && actionToDoListInode.empty() && actionToDoListInode_afterTheTransfer.empty())
+ updateTheStatus();
+ numberOfInodeOperation--;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"numberOfInodeOperation: "+std::to_string(numberOfInodeOperation));
+ #endif
+ doNewActions_inode_manipulation();
+ return;
+ }
+
+ }
+ int_for_loop++;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to found item into the todo list");
+}
+
+/// \note Can be call without queue because all call will be serialized
+void ListThread::fileAlreadyExists(const INTERNALTYPEPATH &source,const INTERNALTYPEPATH &destination,const bool &isSame)
+{
+ emit send_fileAlreadyExists(source,destination,isSame,qobject_cast<TransferThreadAsync *>(sender()));
+}
+
+/// \note Can be call without queue because all call will be serialized
+void ListThread::errorOnFile(const INTERNALTYPEPATH &fileInfo, const std::string &errorString, const ErrorType &errorType)
+{
+ TransferThreadAsync * transferThread=qobject_cast<TransferThreadAsync *>(sender());
+ if(transferThread==NULL)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Thread locating error");
+ return;
+ }
+ ErrorLogEntry errorLogEntry;
+ errorLogEntry.source=TransferThread::internalStringTostring(transferThread->getSourcePath());
+ errorLogEntry.destination=TransferThread::internalStringTostring(transferThread->getDestinationPath());
+ errorLogEntry.mode=transferThread->getMode();
+ errorLogEntry.error=errorString;
+ errorLog.push_back(errorLogEntry);
+ emit errorToRetry(TransferThread::internalStringTostring(transferThread->getSourcePath()),
+ TransferThread::internalStringTostring(transferThread->getDestinationPath()),
+ errorString);
+ emit send_errorOnFile(fileInfo,errorString,transferThread,errorType);
+}
+
+/// \note Can be call without queue because all call will be serialized
+void ListThread::folderAlreadyExists(const INTERNALTYPEPATH &source,const INTERNALTYPEPATH &destination,const bool &isSame)
+{
+ emit send_folderAlreadyExists(source,destination,isSame,qobject_cast<ScanFileOrFolder *>(sender()));
+}
+
+/// \note Can be call without queue because all call will be serialized
+/// \todo all this part
+void ListThread::errorOnFolder(const INTERNALTYPEPATH &fileInfo,const std::string &errorString,const ErrorType &errorType)
+{
+ emit send_errorOnFolder(fileInfo,errorString,qobject_cast<ScanFileOrFolder *>(sender()),errorType);
+}
+
+//to run the thread
+void ListThread::run()
+{
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ clockForTheCopySpeed=new QTimer();
+ #endif
+ exec();
+}
+
+void ListThread::getNeedPutAtBottom(const INTERNALTYPEPATH &fileInfo, const std::string &errorString, TransferThreadAsync *thread,
+ const ErrorType &errorType)
+{
+ (void)fileInfo;
+ (void)errorString;
+ (void)errorType;
+ thread->putAtBottom();
+}
+
+/// \to create transfer thread
+void ListThread::createTransferThread()
+{
+ if(stopIt)
+ return;
+ if(transferThreadList.size()>=(unsigned int)inodeThreads)
+ return;
+ transferThreadList.push_back(new TransferThreadAsync());
+ TransferThreadAsync * last=transferThreadList.back();
+ last->transferId=0;
+ last->transferSize=0;
+ last->setRightTransfer(doRightTransfer);
+ last->setKeepDate(keepDate);
+ last->setOsSpecFlags(os_spec_flags);
+ last->setNativeCopy(native_copy);
+ last->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists);
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ if(!last->setBlockSize(blockSizeAfterSpeedLimitation))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to set the block size: "+std::to_string(blockSizeAfterSpeedLimitation));
+ #endif
+ last->setDeletePartiallyTransferredFiles(deletePartiallyTransferredFiles);
+ last->setBuffer(buffer);
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ last->setRsync(rsync);
+ #endif
+
+ last->writeThread.writeFileList=new QMultiHash<QString,WriteThread *>();
+ last->writeThread.writeFileListMutex=new QMutex();
+
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(!connect(last,&TransferThread::debugInformation, this,&ListThread::debugInformation, Qt::QueuedConnection))
+ abort();
+ #endif // ULTRACOPIER_PLUGIN_DEBUG
+ if(!connect(last,&TransferThread::errorOnFile, this,&ListThread::errorOnFile, Qt::QueuedConnection))
+ abort();
+ if(!connect(last,&TransferThread::fileAlreadyExists, this,&ListThread::fileAlreadyExists, Qt::QueuedConnection))
+ abort();
+ if(!connect(last,&TransferThread::tryPutAtBottom, this,&ListThread::transferPutAtBottom, Qt::QueuedConnection))
+ abort();
+ if(!connect(last,&TransferThread::readStopped, this,&ListThread::doNewActions_start_transfer, Qt::QueuedConnection))
+ abort();
+ if(!connect(last,&TransferThread::preOperationStopped, this,&ListThread::doNewActions_start_transfer, Qt::QueuedConnection))
+ abort();
+ if(!connect(last,&TransferThread::postOperationStopped, this,&ListThread::transferInodeIsClosed, Qt::QueuedConnection))
+ abort();
+ if(!connect(last,&TransferThread::checkIfItCanBeResumed, this,&ListThread::restartTransferIfItCan, Qt::QueuedConnection))
+ abort();
+ if(!connect(last,&TransferThread::pushStat, this,&ListThread::newTransferStat, Qt::QueuedConnection))
+ abort();
+
+ if(!connect(this,&ListThread::send_sendNewRenamingRules, last,&TransferThread::setRenamingRules, Qt::QueuedConnection))
+ abort();
+
+ if(!connect(this,&ListThread::send_updateMount, last,&TransferThread::set_updateMount, Qt::QueuedConnection))
+ abort();
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ last->setMultiForBigSpeed(multiForBigSpeed);
+ //speed limitation
+ connect(clockForTheCopySpeed, &QTimer::timeout, last, &TransferThreadAsync::timeOfTheBlockCopyFinished, Qt::QueuedConnection);
+ #endif
+
+ last->setObjectName(QStringLiteral("transfer %1").arg(transferThreadList.size()-1));
+ last->readThread.setObjectName(QStringLiteral("read %1").arg(transferThreadList.size()-1));
+ last->writeThread.setObjectName(QStringLiteral("write %1").arg(transferThreadList.size()-1));
+ last->setRenamingRules(firstRenamingRule,otherRenamingRule);
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ last->setId(transferThreadList.size()-1);
+ #endif
+ if(transferThreadList.size()>=(unsigned int)inodeThreads)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"create the last of the "+std::to_string(inodeThreads)+" transferThread");
+ return;
+ }
+ if(stopIt)
+ return;
+ doNewActions_inode_manipulation();
+ emit askNewTransferThread();
+}
+
+void ListThread::deleteTransferThread()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ int loop_size=transferThreadList.size();
+ if(loop_size>inodeThreads)
+ {
+ int index=0;
+ while(index<loop_size && loop_size>inodeThreads)
+ {
+ if(transferThreadList.at(index)->getStat()==TransferStat_Idle && transferThreadList.at(index)->transferId==0)
+ {
+ transferThreadList.at(index)->stop();
+ delete transferThreadList.at(index);//->deleteLayer();
+ transferThreadList[index]=NULL;
+ transferThreadList.erase(transferThreadList.cbegin()+index);
+ loop_size--;
+ }
+ else
+ index++;
+ }
+ if(loop_size==inodeThreads)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"inodeThreads is lowered to the right value: "+std::to_string(inodeThreads));
+ }
+}
+
+void ListThread::setMkFullPath(const bool mkFullPath)
+{
+ this->mkFullPath=mkFullPath;
+ mkPathQueue.setMkFullPath(mkFullPath);
+ unsigned int index=0;
+ while(index<transferThreadList.size())
+ {
+ transferThreadList.at(index)->setMkFullPath(mkFullPath);
+ index++;
+ }
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/ListThread.h b/plugins/CopyEngine/Ultracopier-Spec/ListThread.h
new file mode 100755
index 0000000..361f65c
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/ListThread.h
@@ -0,0 +1,437 @@
+/** \file ListThread.h
+\brief Define the list thread, and management to the action to do
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef LISTTHREAD_H
+#define LISTTHREAD_H
+
+#include <QThread>
+#include <QObject>
+#include <string>
+#include <vector>
+#include <unordered_set>
+#include <unordered_map>
+#include <string>
+#include <QSemaphore>
+#include <QTextStream>
+#include <QFile>
+#include <QTimer>
+
+#include "../../../interface/PluginInterface_CopyEngine.h"
+#include "ScanFileOrFolder.h"
+#include "MkPath.h"
+#include "Environment.h"
+#include "DriveManagement.h"
+#include "async/TransferThreadAsync.h"
+
+/// \brief Define the list thread, and management to the action to do
+class ListThread : public QThread
+{
+ Q_OBJECT
+public:
+ explicit ListThread(FacilityInterface * facilityInterface);
+ ~ListThread();
+
+ //duplication copy detection
+ /** \brief compare the current sources of the copy, with the passed arguments
+ * \param sources the sources list to compares with the current sources list
+ * \return true if have same sources, else false (or empty) */
+ bool haveSameSource(const std::vector<std::string> &sources);
+ /** \brief compare the current destination of the copy, with the passed arguments
+ * \param destination the destination to compares with the current destination
+ * \return true if have same destination, else false (or empty) */
+ bool haveSameDestination(const std::string &destination);
+ /// \return empty if multiple or no destination
+ std::string getUniqueDestinationFolder() const;
+ //external soft like file browser have send copy/move list to do
+ /** \brief send copy with destination
+ * \param sources the sources list to copy
+ * \param destination the destination to copy
+ * \return true if the copy have been accepted */
+ bool newCopy(const std::vector<std::string> &sources,const std::string &destination);
+ /** \brief send move without destination, ask the destination
+ * \param sources the sources list to move
+ * \param destination the destination to move
+ * \return true if the move have been accepted */
+ bool newMove(const std::vector<std::string> &sources,const std::string &destination);
+ /** \brief to set drives detected
+ * specific to this copy engine */
+ /// \brief to set the collision action
+ void setCollisionAction(const FileExistsAction &alwaysDoThisActionForFileExists);
+ /** \brief to sync the transfer list
+ * Used when the interface is changed, useful to minimize the memory size */
+ void syncTransferList();
+ /// \brief to store one action to do
+ struct ActionToDoTransfer
+ {
+ uint64_t id;
+ uint64_t size;///< Used to set: used in case of transfer or remainingInode for drop folder
+ #ifdef WIDESTRING
+ std::wstring source;///< Used to set: source for transfer, folder to create, folder to drop
+ std::wstring destination;
+ #else
+ std::string source;///< Used to set: source for transfer, folder to create, folder to drop
+ std::string destination;
+ #endif
+ Ultracopier::CopyMode mode;
+ bool isRunning;///< store if the action si running
+ //TTHREAD * transfer; // -> see transferThreadList
+ };
+ std::vector<ActionToDoTransfer> actionToDoListTransfer;
+ /// \brief to store one action to do
+ struct ActionToDoInode
+ {
+ ActionType type;///< \see ActionType
+ uint64_t id;
+ int64_t size;///< Used to set: used in case of transfer or remainingInode for drop folder
+ #ifdef WIDESTRING
+ std::wstring source;///< Keep to copy the right/date, to remove (for move)
+ std::wstring destination;///< Used to set: folder to create, folder to drop
+ #else
+ std::string source;///< Keep to copy the right/date, to remove (for move)
+ std::string destination;///< Used to set: folder to create, folder to drop
+ #endif
+ bool isRunning;///< store if the action si running
+ };
+ std::vector<ActionToDoInode> actionToDoListInode;
+ std::vector<ActionToDoInode> actionToDoListInode_afterTheTransfer;
+ int numberOfInodeOperation;
+ struct ErrorLogEntry
+ {
+ std::string source;
+ std::string destination;
+ std::string error;
+ Ultracopier::CopyMode mode;
+ };
+ std::vector<ErrorLogEntry> errorLog;
+ //dir operation thread queue
+ MkPath mkPathQueue;
+ //to get the return value from copyEngine
+ bool getReturnBoolToCopyEngine() const;
+ std::pair<quint64,quint64> getReturnPairQuint64ToCopyEngine() const;
+ Ultracopier::ItemOfCopyList getReturnItemOfCopyListToCopyEngine() const;
+ void setMkFullPath(const bool mkFullPath);
+ std::unordered_set<void *> overCheckUsedThread;
+
+ void autoStartIfNeeded();
+ /// \brief set auto start
+ void setAutoStart(const bool autoStart);
+public slots:
+ //action on the copy
+ /// \brief put the transfer in pause
+ void pause();
+ /// \brief resume the transfer
+ void resume();
+ /** \brief skip one transfer entry
+ * \param id id of the file to remove */
+ void skip(const uint64_t &id);
+ /** \brief skip as interanl one transfer entry
+ * \param id id of the file to remove */
+ bool skipInternal(const uint64_t &id);
+ /// \brief cancel all the transfer
+ void cancel();
+ //edit the transfer list
+ /** \brief remove the selected item
+ * \param ids ids is the id list of the selected items */
+ void removeItems(const std::vector<uint64_t> &ids);
+ /** \brief move on top of the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsOnTop(std::vector<uint64_t> ids);
+ /** \brief move up the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsUp(std::vector<uint64_t> ids);
+ /** \brief move down the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsDown(std::vector<uint64_t> ids);
+ /** \brief move on bottom of the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsOnBottom(std::vector<uint64_t> ids);
+
+ /** \brief give the forced mode, to export/import transfer list */
+ void forceMode(const Ultracopier::CopyMode &mode);
+ /// \brief export the transfer list into a file
+ void exportTransferList(const std::string &fileName);
+ /// \brief import the transfer list into a file
+ void importTransferList(const std::string &fileName);
+
+ /// \brief set the folder local collision
+ void setFolderCollision(const FolderExistsAction &alwaysDoThisActionForFolderExists);
+ /** \brief to set the speed limitation
+ * -1 if not able, 0 if disabled */
+ bool setSpeedLimitation(const int64_t &speedLimitation);
+ /// \brief set the copy info and options before runing
+ void setRightTransfer(const bool doRightTransfer);
+ /// \brief set keep date
+ void setKeepDate(const bool keepDate);
+ void setOsSpecFlags(bool os_spec_flags);
+ void setNativeCopy(bool native_copy);
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ /// \brief set rsync
+ void setRsync(const bool rsync);
+ #endif
+ /// \brief set check destination folder
+ void setCheckDestinationFolderExists(const bool checkDestinationFolderExists);
+ /// \brief set data local to the thread
+ void setAlwaysFileExistsAction(const FileExistsAction &alwaysDoThisActionForFileExists);
+ /// \brief do new actions, start transfer
+ void doNewActions_start_transfer();
+ /** \brief lunch the pre-op or inode op
+ 1) locate the next next item to do into the both list
+ 1a) optimisation posible on the mkpath/rmpath
+ 2) determine what need be lunched
+ 3) lunch it, rerun the 2)
+ */
+ void doNewActions_inode_manipulation();
+ /// \brief restart transfer if it can
+ void restartTransferIfItCan();
+ void getNeedPutAtBottom(const INTERNALTYPEPATH &fileInfo, const std::string &errorString, TransferThreadAsync *thread, const ErrorType &errorType);
+
+ /// \brief update the transfer stat
+ void newTransferStat(const TransferStat &stat,const quint64 &id);
+
+ void set_setFilters(const std::vector<Filters_rules> &include,const std::vector<Filters_rules> &exclude);
+ void set_sendNewRenamingRules(const std::string &firstRenamingRule,const std::string &otherRenamingRule);
+ void set_updateMount();
+
+ //send action done
+ void sendActionDone();
+ //send progression
+ void sendProgression();
+
+ void setMoveTheWholeFolder(const bool &moveTheWholeFolder);
+ void setFollowTheStrictOrder(const bool &followTheStrictOrder);
+ void setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles);
+ void setInodeThreads(const int &inodeThreads);
+ void setRenameTheOriginalDestination(const bool &renameTheOriginalDestination);
+ void setCheckDiskSpace(const bool &checkDiskSpace);
+ void setBuffer(const bool &buffer);
+ void exportErrorIntoTransferList(const std::string &fileName);
+private:
+ //can't be static into WriteThread, linked by instance then by ListThread
+ QMultiHash<QString,WriteThread *> *writeFileList;
+ QMutex *writeFileListMutex;
+
+ QSemaphore mkpathTransfer;
+ std::string sourceDrive;
+ bool sourceDriveMultiple;
+ std::string destinationDrive;
+ INTERNALTYPEPATH destinationFolder;
+ bool destinationDriveMultiple;
+ bool destinationFolderMultiple;
+ DriveManagement driveManagement;
+
+ bool stopIt;
+ std::vector<ScanFileOrFolder *> scanFileOrFolderThreadsPool;
+ int numberOfTransferIntoToDoList;
+ std::vector<TransferThreadAsync *> transferThreadList;
+ ScanFileOrFolder * newScanThread(Ultracopier::CopyMode mode);
+ uint64_t bytesToTransfer;
+ uint64_t bytesTransfered;
+ bool autoStart;
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ bool rsync;
+ #endif
+ std::vector<Ultracopier::ReturnActionOnCopyList> actionDone;///< to action to send to the interface
+ uint64_t idIncrementNumber;///< to store the last id returned
+ int64_t actualRealByteTransfered;
+ FolderExistsAction alwaysDoThisActionForFolderExists;
+ bool checkDestinationFolderExists;
+ unsigned int parallelizeIfSmallerThan;
+ bool moveTheWholeFolder;
+ bool deletePartiallyTransferredFiles;
+ int inodeThreads;
+ bool renameTheOriginalDestination;
+ bool checkDiskSpace;
+ bool buffer;
+ bool followTheStrictOrder;
+ std::unordered_set<TransferThreadAsync *> putAtBottomAfterError;
+ std::unordered_map<std::string,uint64_t> requiredSpace;
+ std::vector<std::pair<uint64_t,uint32_t> > timeToTransfer;
+ //unsigned int putAtBottom;//why here? more correct into CopyEngine(), then translated to CopyEngine
+ std::vector<Filters_rules> include,exclude;
+ Ultracopier::CopyMode mode;
+ bool forcedMode;
+ std::string firstRenamingRule;
+ std::string otherRenamingRule;
+ /* here to prevent:
+ QObject::killTimer: timers cannot be stopped from another thread
+ QObject::startTimer: timers cannot be started from another thread */
+
+ static Ultracopier::ItemOfCopyList actionToDoTransferToItemOfCopyList(const ActionToDoTransfer &actionToDoTransfer);
+ //add file transfer to do
+ uint64_t addToTransfer(const INTERNALTYPEPATH& source, const INTERNALTYPEPATH& destination, const Ultracopier::CopyMode& mode, const int64_t sendedsize=-1);
+ //generate id number
+ uint64_t generateIdNumber();
+ //warning the first entry is accessible will copy
+ bool removeSingleItem(const uint64_t &id);
+ //put on top
+ bool moveOnTopItem(const uint64_t &id);
+ //move up
+ bool moveUpItem(const uint64_t &id);
+ //move down
+ bool moveDownItem(const uint64_t &id);
+ //put on bottom
+ bool moveOnBottomItem(const uint64_t &id);
+ //general transfer
+ void startGeneralTransfer();
+ //debug windows if needed
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+ QTimer timerUpdateDebugDialog;
+ #endif
+ void detectDrivesOfCurrentTransfer(const std::vector<INTERNALTYPEPATH> &sources, const INTERNALTYPEPATH &destination);
+ FacilityInterface * facilityInterface;
+ QSemaphore waitConstructor,waitCancel;
+ int actionToDoListTransfer_count,actionToDoListInode_count;
+ bool doTransfer,doInode;
+ int64_t oversize;//used as temp variable
+ int64_t currentProgression;
+ int64_t copiedSize,totalSize,localOverSize;
+ std::vector<Ultracopier::ProgressionItem> progressionList;
+ //memory variable for transfer thread creation
+ bool doRightTransfer;
+ bool keepDate;
+ bool os_spec_flags;
+ bool native_copy;
+ bool mkFullPath;
+ std::vector<std::string> drives;
+ FileExistsAction alwaysDoThisActionForFileExists;
+ int speedLimitation;
+ //to return value to the copyEngine
+ bool returnBoolToCopyEngine;
+ std::pair<quint64,quint64> returnPairQuint64ToCopyEngine;
+ std::vector<Ultracopier::ItemOfCopyList> returnListItemOfCopyListToCopyEngine;
+ Ultracopier::ItemOfCopyList returnItemOfCopyListToCopyEngine;
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ QTimer *clockForTheCopySpeed;
+ int blockSizeAfterSpeedLimitation;//in Bytes
+ int multiForBigSpeed;
+ int blockSize;
+ #endif
+ bool putInPause;
+
+ void realByteTransfered();
+ int getNumberOfTranferRuning() const;
+ bool needMoreSpace() const;
+private slots:
+ void exportTransferListInternal(const std::string &fileName);
+ void importTransferListInternal(const std::string &fileName);
+
+ void scanThreadHaveFinishSlot();
+ void scanThreadHaveFinish(bool skipFirstRemove=false);
+ void autoStartAndCheckSpace();
+ void updateTheStatus();
+ void fileTransfer(const INTERNALTYPEPATH &sourceFileInfo, const INTERNALTYPEPATH &destinationFileInfo,
+ const Ultracopier::CopyMode &mode);
+ void fileTransferWithInode(const INTERNALTYPEPATH &sourceFileInfo, const INTERNALTYPEPATH &destinationFileInfo,
+ const Ultracopier::CopyMode &mode, const TransferThread::dirent_uc &inode);
+ //mkpath event
+ void mkPathFirstFolderFinish();
+ /** \brief put the current file at bottom in case of error
+ \note ONLY IN CASE OF ERROR */
+ void transferPutAtBottom();
+ //transfer is finished
+ void transferInodeIsClosed();
+ //debug windows if needed
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+ void timedUpdateDebugDialog();
+ #endif
+ //dialog message
+ /// \note Can be call without queue because all call will be serialized
+ void fileAlreadyExists(const INTERNALTYPEPATH &source,const INTERNALTYPEPATH &destination,const bool &isSame);
+ /// \note Can be call without queue because all call will be serialized
+ void errorOnFile(const INTERNALTYPEPATH &fileInfo,const std::string &errorString, const ErrorType &errorType);
+ /// \note Can be call without queue because all call will be serialized
+ void folderAlreadyExists(const INTERNALTYPEPATH &source,const INTERNALTYPEPATH &destination,const bool &isSame);
+ /// \note Can be call without queue because all call will be serialized
+ void errorOnFolder(const INTERNALTYPEPATH &fileInfo, const std::string &errorString, const ErrorType &errorType);
+ //to run the thread
+ void run();
+ /// \to create transfer thread
+ void createTransferThread();
+ void deleteTransferThread();
+ //mk path to do
+ uint64_t addToMkPath(const INTERNALTYPEPATH &source, const INTERNALTYPEPATH &destination, const int &inode);
+ //add path to do
+ void addToMovePath(const INTERNALTYPEPATH& source,const INTERNALTYPEPATH& destination, const int& inodeToRemove);
+ void addToKeepAttributePath(const INTERNALTYPEPATH& source,const INTERNALTYPEPATH& destination, const int& inodeToRemove);
+ //add to real move
+ void addToRealMove(const INTERNALTYPEPATH& source,const INTERNALTYPEPATH& destination);
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ //rsync rm
+ void addToRmForRsync(const std::string& destination);
+ #endif
+ //send the progression, after full reset of the interface (then all is empty)
+ void syncTransferList_internal();
+
+ void checkIfReadyToCancel();
+signals:
+ //send information about the copy
+ void actionInProgess(const Ultracopier::EngineActionInProgress &) const; //should update interface information on this event
+
+ void newActionOnList(const std::vector<Ultracopier::ReturnActionOnCopyList> &) const;///very important, need be temporized to group the modification to do and not flood the interface
+ void syncReady() const;
+ void doneTime(const std::vector<std::pair<uint64_t,uint32_t> >&) const;
+
+ /** \brief to get the progression for a specific file
+ * \param id the id of the transfer, id send during population the transfer list
+ * first = current transfered byte, second = byte to transfer */
+ void pushFileProgression(const std::vector<Ultracopier::ProgressionItem> &progressionList) const;
+ //get information about the copy
+ /** \brief to get the general progression
+ * first = current transfered byte, second = byte to transfer */
+ void pushGeneralProgression(const uint64_t &,const uint64_t &) const;
+
+ void newFolderListing(const std::string &path) const;
+
+ //when can be deleted
+ void canBeDeleted() const;
+ void haveNeedPutAtBottom(bool needPutAtBottom,const INTERNALTYPEPATH &fileInfo,const std::string &errorString,TransferThreadAsync * thread,const ErrorType &errorType) const;
+
+ //send error occurred
+ void error(const std::string &path,const uint64_t &size,const uint64_t &mtime,const std::string &error) const;
+ void errorToRetry(const std::string &source,const std::string &destination,const std::string &error) const;
+ //for the extra logging
+ void rmPath(const std::string &path) const;
+ void mkPath(const std::string &path) const;
+ /// \brief To debug source
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ void debugInformation(const Ultracopier::DebugLevel &level,const std::string &fonction,const std::string &text,const std::string &file,const int &ligne) const;
+ #endif
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+ void updateTheDebugInfo(const std::vector<std::string> &,const std::vector<std::string>&,const int &) const;
+ #endif
+
+ //other signal
+ /// \note Can be call without queue because all call will be serialized
+ void send_fileAlreadyExists(const INTERNALTYPEPATH &source,const INTERNALTYPEPATH &destination,const bool &isSame,TransferThreadAsync * thread) const;
+ /// \note Can be call without queue because all call will be serialized
+ void send_errorOnFile(const INTERNALTYPEPATH &fileInfo,const std::string &errorString,TransferThreadAsync * thread, const ErrorType &errorType) const;
+ /// \note Can be call without queue because all call will be serialized
+ void send_folderAlreadyExists(const INTERNALTYPEPATH &source,const INTERNALTYPEPATH &destination,const bool &isSame,ScanFileOrFolder * thread) const;
+ /// \note Can be call without queue because all call will be serialized
+ void send_errorOnFolder(const INTERNALTYPEPATH &fileInfo,const std::string &errorString,ScanFileOrFolder * thread, const ErrorType &errorType) const;
+ //send the progression
+ void send_syncTransferList() const;
+ //mkpath error event
+ void mkPathErrorOnFolder(const INTERNALTYPEPATH &fileInfo,const std::string &errorString,const ErrorType &errorType) const;
+ //to close
+ void tryCancel() const;
+ //to ask new transfer thread
+ void askNewTransferThread() const;
+
+ void warningTransferList(const std::string &warning) const;
+ void errorTransferList(const std::string &error) const;
+ void send_sendNewRenamingRules(const std::string &firstRenamingRule,const std::string &otherRenamingRule) const;
+ void send_realBytesTransfered(const uint64_t &) const;
+
+ void send_parallelizeIfSmallerThan(const int &parallelizeIfSmallerThan) const;
+ void send_updateMount();
+ void missingDiskSpace(std::vector<Diskspace> list) const;
+ void isInPause(const bool &) const;
+
+ void exportTransferListSend(const std::string &fileName);
+ void importTransferListSend(const std::string &fileName);
+};
+
+#endif // LISTTHREAD_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/ListThreadActions.cpp b/plugins/CopyEngine/Ultracopier-Spec/ListThreadActions.cpp
new file mode 100755
index 0000000..85b3113
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/ListThreadActions.cpp
@@ -0,0 +1,129 @@
+#include "ListThread.h"
+#include <QStorageInfo>
+#include <QtGlobal>
+#include "../../../cpp11addition.h"
+
+#include "async/TransferThreadAsync.h"
+
+void ListThread::pause()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ if(putInPause)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Seam already in pause!");
+ return;
+ }
+ putInPause=true;
+ int index=0;
+ int loop_sub_size_transfer_thread_search=transferThreadList.size();
+ while(index<loop_sub_size_transfer_thread_search)
+ {
+ transferThreadList.at(index)->pause();
+ index++;
+ }
+ emit isInPause(true);
+}
+
+void ListThread::resume()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ if(!putInPause)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Seam already resumed!");
+ return;
+ }
+ putInPause=false;
+ startGeneralTransfer();
+ doNewActions_start_transfer();
+ int index=0;
+ int loop_sub_size_transfer_thread_search=transferThreadList.size();
+ while(index<loop_sub_size_transfer_thread_search)
+ {
+ transferThreadList.at(index)->resume();
+ index++;
+ }
+ emit isInPause(false);
+}
+
+void ListThread::skip(const uint64_t &id)
+{
+ skipInternal(id);
+}
+
+bool ListThread::skipInternal(const uint64_t &id)
+{
+ int index=0;
+ int loop_sub_size_transfer_thread_search=transferThreadList.size();
+ while(index<loop_sub_size_transfer_thread_search)
+ {
+ if(transferThreadList.at(index)->transferId==id)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"skip one transfer: "+std::to_string(id));
+ transferThreadList.at(index)->skip();
+ return true;
+ }
+ index++;
+ }
+ int int_for_internal_loop=0;
+ const int &loop_size=actionToDoListTransfer.size();
+ while(int_for_internal_loop<loop_size)
+ {
+ if(actionToDoListTransfer.at(int_for_internal_loop).id==id)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("[%1] remove at not running, for id: %2").arg(int_for_internal_loop).arg(id).toStdString());
+ Ultracopier::ReturnActionOnCopyList newAction;
+ newAction.type=Ultracopier::RemoveItem;
+ newAction.userAction.moveAt=1;
+ newAction.addAction=actionToDoTransferToItemOfCopyList(actionToDoListTransfer.at(int_for_internal_loop));
+ newAction.userAction.position=int_for_internal_loop;
+ actionDone.push_back(newAction);
+ actionToDoListTransfer.erase(actionToDoListTransfer.cbegin()+int_for_internal_loop);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("actionToDoListTransfer.size(): %1, actionToDoListInode: %2, actionToDoListInode_afterTheTransfer: %3").arg(actionToDoListTransfer.size()).arg(actionToDoListInode.size()).arg(actionToDoListInode_afterTheTransfer.size()).toStdString());
+ if(actionToDoListTransfer.empty() && actionToDoListInode.empty() && actionToDoListInode_afterTheTransfer.empty())
+ updateTheStatus();
+ return true;
+ }
+ int_for_internal_loop++;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"skip transfer not found: "+std::to_string(id));
+ return false;
+}
+
+//executed in this thread
+void ListThread::cancel()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ if(stopIt)
+ {
+ waitCancel.release();
+ return;
+ }
+ stopIt=true;
+ int index=0;
+ int loop_size=transferThreadList.size();
+ while(index<loop_size)
+ {
+ transferThreadList.at(index)->stop();
+ transferThreadList.at(index)->transferId=0;
+ index++;
+ }
+ index=0;
+ loop_size=scanFileOrFolderThreadsPool.size();
+ while(index<loop_size)
+ {
+ scanFileOrFolderThreadsPool.at(index)->stop();
+ delete scanFileOrFolderThreadsPool.at(index);//->deleteLayer();
+ scanFileOrFolderThreadsPool[index]=NULL;
+ index++;
+ }
+ scanFileOrFolderThreadsPool.clear();
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ if(clockForTheCopySpeed!=NULL)
+ {
+ clockForTheCopySpeed->stop();
+ delete clockForTheCopySpeed;
+ clockForTheCopySpeed=NULL;
+ }
+ #endif
+ checkIfReadyToCancel();
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp b/plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp
new file mode 100755
index 0000000..6927caa
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp
@@ -0,0 +1,423 @@
+#include "ListThread.h"
+#include <QStorageInfo>
+#include <QtGlobal>
+#include "../../../cpp11addition.h"
+
+#include "async/TransferThreadAsync.h"
+
+//warning the first entry is accessible will copy
+void ListThread::removeItems(const std::vector<uint64_t> &ids)
+{
+ for(unsigned int i=0;i<ids.size();i++)
+ skipInternal(ids.at(i));
+}
+
+//put on top
+void ListThread::moveItemsOnTop(std::vector<uint64_t> ids)
+{
+ if(actionToDoListTransfer.size()<=1)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"list size is empty");
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ //do list operation
+ int indexToMove=0;
+ for (unsigned int i=0; i<actionToDoListTransfer.size(); ++i) {
+ if(vectorcontainsAtLeastOne(ids,actionToDoListTransfer.at(i).id))
+ {
+ vectorremoveOne(ids,actionToDoListTransfer.at(i).id);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"move item "+std::to_string(i)+" to "+std::to_string(indexToMove));
+ Ultracopier::ReturnActionOnCopyList newAction;
+ newAction.type=Ultracopier::MoveItem;
+ newAction.addAction.id=actionToDoListTransfer.at(i).id;
+ newAction.userAction.moveAt=indexToMove;
+ newAction.userAction.position=i;
+ actionDone.push_back(newAction);
+ ActionToDoTransfer temp=actionToDoListTransfer.at(i);
+ actionToDoListTransfer.erase(actionToDoListTransfer.cbegin()+i);
+ actionToDoListTransfer.insert(actionToDoListTransfer.cbegin()+indexToMove,temp);
+ indexToMove++;
+ if(ids.empty())
+ return;
+ }
+ }
+ sendActionDone();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop");
+}
+
+//move up
+void ListThread::moveItemsUp(std::vector<uint64_t> ids)
+{
+ if(actionToDoListTransfer.size()<=1)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"list size is empty");
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ //do list operation
+ int lastGoodPositionReal=0;
+ bool haveGoodPosition=false;
+ for (unsigned int i=0; i<actionToDoListTransfer.size(); ++i) {
+ if(vectorcontainsAtLeastOne(ids,actionToDoListTransfer.at(i).id))
+ {
+ if(haveGoodPosition)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"move item "+std::to_string(i)+" to "+std::to_string(i-1));
+ Ultracopier::ReturnActionOnCopyList newAction;
+ newAction.type=Ultracopier::MoveItem;
+ newAction.addAction.id=actionToDoListTransfer.at(i).id;
+ newAction.userAction.moveAt=lastGoodPositionReal;
+ newAction.userAction.position=i;
+ actionDone.push_back(newAction);
+ ActionToDoTransfer temp1=actionToDoListTransfer.at(i);
+ ActionToDoTransfer temp2=actionToDoListTransfer.at(lastGoodPositionReal);
+ actionToDoListTransfer[i]=temp2;
+ actionToDoListTransfer[lastGoodPositionReal]=temp1;
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Try move up false, item "+std::to_string(i));
+ vectorremoveOne(ids,actionToDoListTransfer.at(i).id);
+ if(ids.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop with return");
+ return;
+ }
+ }
+ else
+ {
+ lastGoodPositionReal=i;
+ haveGoodPosition=true;
+ }
+ }
+ sendActionDone();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop");
+}
+
+//move down
+void ListThread::moveItemsDown(std::vector<uint64_t> ids)
+{
+ if(actionToDoListTransfer.size()<=1)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"list size is empty");
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ //do list operation
+ int lastGoodPositionReal=0;
+ bool haveGoodPosition=false;
+ for (int i=actionToDoListTransfer.size()-1; i>=0; --i) {
+ if(vectorcontainsAtLeastOne(ids,actionToDoListTransfer.at(i).id))
+ {
+ if(haveGoodPosition)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"move item "+std::to_string(i)+" to "+std::to_string(i+1));
+ Ultracopier::ReturnActionOnCopyList newAction;
+ newAction.type=Ultracopier::MoveItem;
+ newAction.addAction.id=actionToDoListTransfer.at(i).id;
+ newAction.userAction.moveAt=lastGoodPositionReal;
+ newAction.userAction.position=i;
+ actionDone.push_back(newAction);
+ ActionToDoTransfer temp1=actionToDoListTransfer.at(i);
+ ActionToDoTransfer temp2=actionToDoListTransfer.at(lastGoodPositionReal);
+ actionToDoListTransfer[i]=temp2;
+ actionToDoListTransfer[lastGoodPositionReal]=temp1;
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Try move up false, item "+std::to_string(i));
+ }
+ vectorremoveOne(ids,actionToDoListTransfer.at(i).id);
+ if(ids.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop with return");
+ return;
+ }
+ }
+ else
+ {
+ lastGoodPositionReal=i;
+ haveGoodPosition=true;
+ }
+ }
+ sendActionDone();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop");
+}
+
+//put on bottom
+void ListThread::moveItemsOnBottom(std::vector<uint64_t> ids)
+{
+ if(actionToDoListTransfer.size()<=1)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"list size is empty");
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ //do list operation
+ int lastGoodPositionReal=actionToDoListTransfer.size()-1;
+ for (int i=lastGoodPositionReal; i>=0; --i) {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Check action on item "+std::to_string(i));
+ if(vectorcontainsAtLeastOne(ids,actionToDoListTransfer.at(i).id))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"move item "+std::to_string(i)+" to "+std::to_string(lastGoodPositionReal));
+ vectorremoveOne(ids,actionToDoListTransfer.at(i).id);
+ Ultracopier::ReturnActionOnCopyList newAction;
+ newAction.type=Ultracopier::MoveItem;
+ newAction.addAction.id=actionToDoListTransfer.at(i).id;
+ newAction.userAction.moveAt=lastGoodPositionReal;
+ newAction.userAction.position=i;
+ actionDone.push_back(newAction);
+ ActionToDoTransfer temp=actionToDoListTransfer.at(i);
+ actionToDoListTransfer.erase(actionToDoListTransfer.cbegin()+i);
+ actionToDoListTransfer.insert(actionToDoListTransfer.cbegin()+lastGoodPositionReal,temp);
+ lastGoodPositionReal--;
+ if(ids.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop with return");
+ return;
+ }
+ }
+ }
+ sendActionDone();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop");
+}
+
+void ListThread::exportTransferList(const std::string &fileName)
+{
+ emit exportTransferListSend(fileName);
+}
+
+void ListThread::exportTransferListInternal(const std::string &fileName)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ QFile transferFile(QString::fromStdString(fileName));
+ if(transferFile.open(QIODevice::WriteOnly|QIODevice::Truncate))
+ {
+ transferFile.write(QStringLiteral("Ultracopier;Transfer-list;").toUtf8());
+ if(!forcedMode)
+ transferFile.write(QStringLiteral("Transfer;").toUtf8());
+ else
+ {
+ if(mode==Ultracopier::Copy)
+ transferFile.write(QStringLiteral("Copy;").toUtf8());
+ else
+ transferFile.write(QStringLiteral("Move;").toUtf8());
+ }
+ transferFile.write(QStringLiteral("Ultracopier\n").toUtf8());
+ bool haveError=false;
+ int size=actionToDoListTransfer.size();
+ for (int index=0;index<size;++index) {
+ if(actionToDoListTransfer.at(index).mode==Ultracopier::Copy)
+ {
+ if(!forcedMode || mode==Ultracopier::Copy)
+ {
+ if(forcedMode)
+ transferFile.write((TransferThread::internalStringTostring(actionToDoListTransfer.at(index).source)+
+ ";"+TransferThread::internalStringTostring(actionToDoListTransfer.at(index).destination)+"\n").c_str());
+ else
+ transferFile.write(("Copy;"+TransferThread::internalStringTostring(actionToDoListTransfer.at(index).source)+
+ ";"+TransferThread::internalStringTostring(actionToDoListTransfer.at(index).destination)+"\n").c_str());
+ }
+ else
+ haveError=true;
+ }
+ else if(actionToDoListTransfer.at(index).mode==Ultracopier::Move)
+ {
+ if(!forcedMode || mode==Ultracopier::Move)
+ {
+ if(forcedMode)
+ transferFile.write((TransferThread::internalStringTostring(actionToDoListTransfer.at(index).source)+
+ ";"+TransferThread::internalStringTostring(actionToDoListTransfer.at(index).destination)+"\n").c_str());
+ else
+ transferFile.write(("Move;"+TransferThread::internalStringTostring(actionToDoListTransfer.at(index).source)+
+ ";"+TransferThread::internalStringTostring(actionToDoListTransfer.at(index).destination)+"\n").c_str());
+ }
+ else
+ haveError=true;
+ }
+ }
+ if(haveError)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("Unable do to move or copy item into wrong forced mode: %1").arg(transferFile.errorString()).toStdString());
+ emit errorTransferList(tr("Unable do to move or copy item into wrong forced mode: %1").arg(transferFile.errorString()).toStdString());
+ }
+ transferFile.close();
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("Unable to save the transfer list: %1").arg(transferFile.errorString()).toStdString());
+ emit errorTransferList(tr("Unable to save the transfer list: %1").arg(transferFile.errorString()).toStdString());
+ return;
+ }
+}
+
+void ListThread::importTransferList(const std::string &fileName)
+{
+ emit importTransferListSend(fileName);
+}
+
+void ListThread::importTransferListInternal(const std::string &fileName)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ QFile transferFile(QString::fromStdString(fileName));
+ if(transferFile.open(QIODevice::ReadOnly))
+ {
+ std::string content;
+ QByteArray data=transferFile.readLine(64);
+ if(data.size()<=0)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Problem reading file, or file-size is 0");
+ emit errorTransferList(tr("Problem reading file, or file-size is 0").toStdString());
+ return;
+ }
+ content=QString::fromUtf8(data).toStdString();
+ if(content!="Ultracopier;Transfer-list;Transfer;Ultracopier\n" && content!="Ultracopier;Transfer-list;Copy;Ultracopier\n" && content!="Ultracopier;Transfer-list;Move;Ultracopier\n")
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Wrong header: "+content);
+ emit errorTransferList(tr("Wrong header: \"%1\"").arg(QString::fromStdString(content)).toStdString());
+ return;
+ }
+ bool transferListMixedMode=false;
+ if(content=="Ultracopier;Transfer-list;Transfer;Ultracopier\n")
+ {
+ if(forcedMode)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The transfer list is in mixed mode, but this instance is not");
+ emit errorTransferList(tr("The transfer list is in mixed mode, but this instance is not in this mode").toStdString());
+ return;
+ }
+ else
+ transferListMixedMode=true;
+ }
+ if(content=="Ultracopier;Transfer-list;Copy;Ultracopier\n" && (forcedMode && mode==Ultracopier::Move))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("The transfer list is in copy mode, but this instance is not: forcedMode: %1, mode: %2").arg(forcedMode).arg(mode).toStdString());
+ emit errorTransferList(tr("The transfer list is in copy mode, but this instance is not in this mode").toStdString());
+ return;
+ }
+ if(content=="Ultracopier;Transfer-list;Move;Ultracopier\n" && (forcedMode && mode==Ultracopier::Copy))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("The transfer list is in move mode, but this instance is not: forcedMode: %1, mode: %2").arg(forcedMode).arg(mode).toStdString());
+ emit errorTransferList(tr("The transfer list is in move mode, but this instance is not in this mode").toStdString());
+ return;
+ }
+
+ bool updateTheStatus_copying=actionToDoListTransfer.size()>0 || actionToDoListInode.size()>0 || actionToDoListInode_afterTheTransfer.size()>0;
+ Ultracopier::EngineActionInProgress updateTheStatus_action_in_progress;
+ if(updateTheStatus_copying)
+ updateTheStatus_action_in_progress=Ultracopier::CopyingAndListing;
+ else
+ updateTheStatus_action_in_progress=Ultracopier::Listing;
+ emit actionInProgess(updateTheStatus_action_in_progress);
+
+ bool errorFound=false;
+ std::regex correctLine;
+ if(transferListMixedMode)
+ correctLine=std::regex("^(Copy|Move);[^;]+;[^;]+[\n\r]*$");
+ else
+ correctLine=std::regex("^[^;]+;[^;]+[\n\r]*$");
+ std::vector<std::string> args;
+ Ultracopier::CopyMode tempMode;
+ do
+ {
+ data=transferFile.readLine(65535*2);
+ if(data.size()>0)
+ {
+ content=std::string(data.constData(),data.size());
+ //do the import here
+ if(std::regex_match(content,correctLine))
+ {
+ stringreplaceAll(content,"\n","");
+ args=stringsplit(content,';');
+ if(forcedMode)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("New data to import in forced mode: %2,%3")
+ .arg(QString::fromStdString(args.at(0)))
+ .arg(QString::fromStdString(args.at(1)))
+ .toStdString());
+ addToTransfer(TransferThread::stringToInternalString(args.at(0)),
+ TransferThread::stringToInternalString(args.at(1)),mode);
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("New data to import: %1,%2,%3")
+ .arg(QString::fromStdString(args.at(0)))
+ .arg(QString::fromStdString(args.at(1)))
+ .arg(QString::fromStdString(args.at(2)))
+ .toStdString());
+ if(args.at(0)=="Copy")
+ tempMode=Ultracopier::Copy;
+ else
+ tempMode=Ultracopier::Move;
+ addToTransfer(TransferThread::stringToInternalString(args.at(1)),TransferThread::stringToInternalString(args.at(2)),tempMode);
+ }
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Wrong line syntax: "+content);
+ errorFound=true;
+ }
+ }
+ }
+ while(data.size()>0);
+ transferFile.close();
+ if(errorFound)
+ emit warningTransferList(tr("Some errors have been found during the line parsing").toStdString());
+
+ updateTheStatus();//->sendActionDone(); into this
+ autoStartAndCheckSpace();
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("Unable to open the transfer list: %1").arg(transferFile.errorString()).toStdString());
+ emit errorTransferList(tr("Unable to open the transfer list: %1").arg(transferFile.errorString()).toStdString());
+ return;
+ }
+}
+
+void ListThread::exportErrorIntoTransferList(const std::string &fileName)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ QFile transferFile(QString::fromStdString(fileName));
+ if(transferFile.open(QIODevice::WriteOnly|QIODevice::Truncate))
+ {
+ transferFile.write(QStringLiteral("Ultracopier;Transfer-list;").toUtf8());
+ if(!forcedMode)
+ transferFile.write(QStringLiteral("Transfer;").toUtf8());
+ else
+ {
+ if(mode==Ultracopier::Copy)
+ transferFile.write(QStringLiteral("Copy;").toUtf8());
+ else
+ transferFile.write(QStringLiteral("Move;").toUtf8());
+ }
+ transferFile.write(QStringLiteral("Ultracopier\n").toUtf8());
+ bool haveError=false;
+ int size=errorLog.size();
+ for (int index=0;index<size;++index) {
+ if(forcedMode)
+ transferFile.write((errorLog.at(index).source+";"+errorLog.at(index).destination+"\n").c_str());
+ else
+ {
+ if(errorLog.at(index).mode==Ultracopier::Copy)
+ transferFile.write(("Copy;"+errorLog.at(index).source+";"+errorLog.at(index).destination+"\n").c_str());
+ else if(errorLog.at(index).mode==Ultracopier::Move)
+ transferFile.write(("Move;"+errorLog.at(index).source+";"+errorLog.at(index).destination+"\n").c_str());
+ else
+ haveError=true;
+ }
+ }
+ if(haveError)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable do to move or copy item into wrong forced mode: "+transferFile.errorString().toStdString());
+ emit errorTransferList(tr("Unable do to move or copy item into wrong forced mode: %1").arg(transferFile.errorString()).toStdString());
+ }
+ transferFile.close();
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to save the transfer list: "+transferFile.errorString().toStdString());
+ emit errorTransferList(tr("Unable to save the transfer list: %1").arg(transferFile.errorString()).toStdString());
+ return;
+ }
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/ListThreadMedia.cpp b/plugins/CopyEngine/Ultracopier-Spec/ListThreadMedia.cpp
new file mode 100755
index 0000000..4eba9a0
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/ListThreadMedia.cpp
@@ -0,0 +1,169 @@
+#include "ListThread.h"
+#include <QStorageInfo>
+#include <QtGlobal>
+#include "../../../cpp11addition.h"
+#include "async/TransferThreadAsync.h"
+
+// -> add thread safe, by Qt::BlockingQueuedConnection
+bool ListThread::haveSameSource(const std::vector<std::string> &sources)
+{
+ if(stopIt)
+ return false;
+ if(sourceDriveMultiple)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"sourceDriveMultiple");
+ return false;
+ }
+ if(sourceDrive.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"sourceDrive.isEmpty()");
+ return true;
+ }
+ unsigned int index=0;
+ while(index<sources.size())
+ {
+ if(driveManagement.getDrive(sources.at(index))!=sourceDrive)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"sources.at(index))!=sourceDrive");
+ return false;
+ }
+ index++;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"seam have same source");
+ return true;
+}
+
+// -> add thread safe, by Qt::BlockingQueuedConnection
+bool ListThread::haveSameDestination(const std::string &destination)
+{
+ if(stopIt)
+ return false;
+ if(destinationDriveMultiple)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destinationDriveMultiple");
+ return false;
+ }
+ if(destinationDrive.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destinationDrive.isEmpty()");
+ return true;
+ }
+ if(driveManagement.getDrive(destination)!=destinationDrive)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination!=destinationDrive");
+ return false;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"seam have same destination");
+ return true;
+}
+
+/// \return empty if multiple or no destination
+std::string ListThread::getUniqueDestinationFolder() const
+{
+ if(stopIt)
+ return std::string();
+ if(destinationFolderMultiple)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destinationDriveMultiple");
+ return std::string();
+ }
+ return TransferThread::internalStringTostring(destinationFolder);
+}
+
+void ListThread::detectDrivesOfCurrentTransfer(const std::vector<INTERNALTYPEPATH> &sources,const INTERNALTYPEPATH &destination)
+{
+ /* code to detect volume/mount point to group by windows */
+ if(!sourceDriveMultiple)
+ {
+ unsigned int index=0;
+ while(index<sources.size())
+ {
+ const std::string &tempDrive=driveManagement.getDrive(TransferThread::internalStringTostring(sources.at(index)));
+ //if have not already source, set the source
+ if(sourceDrive.empty())
+ sourceDrive=tempDrive;
+ //if have previous source and the news source is not the same
+ if(sourceDrive!=tempDrive)
+ {
+ sourceDriveMultiple=true;
+ break;
+ }
+ index++;
+ }
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("source informations, sourceDrive: %1, sourceDriveMultiple: %2").arg(QString::fromStdString(sourceDrive)).arg(sourceDriveMultiple).toStdString());
+ if(!destinationDriveMultiple)
+ {
+ const std::string &tempDrive=driveManagement.getDrive(TransferThread::internalStringTostring(destination));
+ //if have not already destination, set the destination
+ if(destinationDrive.empty())
+ destinationDrive=tempDrive;
+ //if have previous destination and the news destination is not the same
+ if(destinationDrive!=tempDrive)
+ destinationDriveMultiple=true;
+ }
+ if(!destinationFolderMultiple)
+ {
+ //if have not already destination, set the destination
+ if(destinationFolder.empty())
+ destinationFolder=destination;
+ //if have previous destination and the news destination is not the same
+ if(destinationFolder!=destination)
+ destinationFolderMultiple=true;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("destination informations, destinationDrive: %1, destinationDriveMultiple: %2").arg(QString::fromStdString(destinationDrive)).arg(destinationDriveMultiple).toStdString());
+}
+
+//return
+bool ListThread::needMoreSpace() const
+{
+ if(!checkDiskSpace)
+ return false;
+ std::vector<Diskspace> diskspace_list;
+ for( auto& spaceDrive : requiredSpace ) {
+ const QString &drive=QString::fromStdString(spaceDrive.first);
+ #ifdef Q_OS_WIN32
+ if(spaceDrive.first!="A:\\" && spaceDrive.first!="A:/" && spaceDrive.first!="A:" && spaceDrive.first!="A" && spaceDrive.first!="a:\\" && spaceDrive.first!="a:/" && spaceDrive.first!="a:" && spaceDrive.first!="a")
+ {
+ #endif
+ QStorageInfo storageInfo(drive);
+ storageInfo.refresh();
+ const qint64 &availableSpace=storageInfo.bytesAvailable();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ const qint64 &bytesFree=storageInfo.bytesFree();
+ #endif
+
+ if(availableSpace<0 ||
+ //workaround for all 0 value in case of bug from Qt
+ (availableSpace==0 && storageInfo.bytesTotal()==0)
+ )
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("availableSpace: %1, space needed: %2, on: %3, bytesFree: %4").arg(availableSpace).arg(spaceDrive.second).arg(drive).arg(bytesFree).toStdString());
+ }
+ else if(spaceDrive.second>(quint64)availableSpace)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("availableSpace: %1, space needed: %2, on: %3, bytesFree: %4").arg(availableSpace).arg(spaceDrive.second).arg(drive).arg(bytesFree).toStdString());
+ #ifdef Q_OS_WIN32
+ //if(drive.contains(QRegularExpression("^[a-zA-Z]:[\\\\/]")))
+ if(drive.contains(QRegularExpression("^[a-zA-Z]:")))
+ #endif
+ {
+ Diskspace diskspace;
+ diskspace.drive=spaceDrive.first;
+ diskspace.freeSpace=availableSpace;
+ diskspace.requiredSpace=spaceDrive.second;
+ diskspace_list.push_back(diskspace);
+ }
+ #ifdef Q_OS_WIN32
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"not local drive");
+ #endif
+ }
+ #ifdef Q_OS_WIN32
+ }
+ #endif
+ }
+ if(!diskspace_list.empty())
+ emit missingDiskSpace(diskspace_list);
+ return ! diskspace_list.empty();
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/ListThreadNew.cpp b/plugins/CopyEngine/Ultracopier-Spec/ListThreadNew.cpp
new file mode 100755
index 0000000..f4a1857
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/ListThreadNew.cpp
@@ -0,0 +1,104 @@
+#include "ListThread.h"
+#include <QStorageInfo>
+#include <QtGlobal>
+#include "../../../cpp11addition.h"
+
+#include "async/TransferThreadAsync.h"
+
+// -> add thread safe, by Qt::BlockingQueuedConnection
+bool ListThread::newCopy(const std::vector<std::string> &sources,const std::string &destination)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start: "+stringimplode(sources,";")+", destination: "+destination);
+ ScanFileOrFolder * scanFileOrFolderThread=newScanThread(Ultracopier::Copy);
+ if(scanFileOrFolderThread==NULL)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to get new thread");
+ return false;
+ }
+ std::regex base_regex("^[a-z][a-z][a-z]*:/.*");
+ std::smatch base_match;
+ std::vector<INTERNALTYPEPATH> sourcesClean;
+ unsigned int index=0;
+ while(index<sources.size())
+ {
+ std::string source=sources.at(index);
+ //can be: file://192.168.0.99/share/file.txt
+ //can be: file:///C:/file.txt
+ //can be: file:///home/user/fileatrootunderunix
+ #ifndef Q_OS_WIN
+ if(stringStartWith(source,"file:///"))
+ source.replace(0,7,"");
+ #else
+ if(stringStartWith(source,"file:///"))
+ source.replace(0,8,"");
+ else if(stringStartWith(source,"file://"))
+ source.replace(0,5,"");
+ else if(stringStartWith(source,"file:/"))
+ source.replace(0,6,"");
+ #endif
+ else if (std::regex_match(source, base_match, base_regex))
+ return false;
+ if(index<99)
+ {
+ if(sources.at(index)!=source)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,sources.at(index)+" -> "+source);
+ }
+ index++;
+ sourcesClean.push_back(TransferThread::stringToInternalString(source));
+ }
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"sourcesClean: "+stringimplode(sourcesClean,";"));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination: "+destination);
+ const INTERNALTYPEPATH &Wdest=TransferThread::stringToInternalString(destination);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination: "+TransferThread::internalStringTostring(Wdest));
+ scanFileOrFolderThread->addToList(sourcesClean,Wdest);
+ scanThreadHaveFinish(true);
+ detectDrivesOfCurrentTransfer(sourcesClean,TransferThread::stringToInternalString(destination));
+ return true;
+}
+
+// -> add thread safe, by Qt::BlockingQueuedConnection
+bool ListThread::newMove(const std::vector<std::string> &sources,const std::string &destination)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ ScanFileOrFolder * scanFileOrFolderThread = newScanThread(Ultracopier::Move);
+ if(scanFileOrFolderThread==NULL)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to get new thread");
+ return false;
+ }
+ std::regex base_regex("^[a-z][a-z][a-z]*:/.*");
+ std::smatch base_match;
+ std::vector<INTERNALTYPEPATH> sourcesClean;
+ unsigned int index=0;
+ while(index<sources.size())
+ {
+ std::string source=sources.at(index);
+ //can be: file://192.168.0.99/share/file.txt
+ //can be: file:///C:/file.txt
+ //can be: file:///home/user/fileatrootunderunix
+ #ifndef Q_OS_WIN
+ if(stringStartWith(source,"file:///"))
+ source.replace(0,7,"");
+ #else
+ if(stringStartWith(source,"file:///"))
+ source.replace(0,8,"");
+ else if(stringStartWith(source,"file://"))
+ source.replace(0,5,"");
+ else if(stringStartWith(source,"file:/"))
+ source.replace(0,6,"");
+ #endif
+ else if (std::regex_match(source, base_match, base_regex))
+ return false;
+ if(index<99)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,sources.at(index)+" -> "+source);
+ index++;
+ sourcesClean.push_back(TransferThread::stringToInternalString(source));
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination: "+destination);
+ const INTERNALTYPEPATH &Wdest=TransferThread::stringToInternalString(destination);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination: "+TransferThread::internalStringTostring(Wdest));
+ scanFileOrFolderThread->addToList(sourcesClean,Wdest);
+ scanThreadHaveFinish(true);
+ detectDrivesOfCurrentTransfer(sourcesClean,TransferThread::stringToInternalString(destination));
+ return true;
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/ListThreadOptions.cpp b/plugins/CopyEngine/Ultracopier-Spec/ListThreadOptions.cpp
new file mode 100755
index 0000000..25d710f
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/ListThreadOptions.cpp
@@ -0,0 +1,296 @@
+#include "ListThread.h"
+#include <QStorageInfo>
+#include <QtGlobal>
+#include "../../../cpp11addition.h"
+#include "async/TransferThreadAsync.h"
+
+//set the copy info and options before runing
+void ListThread::setRightTransfer(const bool doRightTransfer)
+{
+ mkPathQueue.setRightTransfer(doRightTransfer);
+ this->doRightTransfer=doRightTransfer;
+ unsigned int index=0;
+ while(index<transferThreadList.size())
+ {
+ transferThreadList.at(index)->setRightTransfer(doRightTransfer);
+ index++;
+ }
+}
+
+//set keep date
+void ListThread::setKeepDate(const bool keepDate)
+{
+ mkPathQueue.setKeepDate(keepDate);
+ this->keepDate=keepDate;
+ unsigned int index=0;
+ while(index<transferThreadList.size())
+ {
+ transferThreadList.at(index)->setKeepDate(keepDate);
+ index++;
+ }
+}
+
+void ListThread::setOsSpecFlags(bool os_spec_flags)
+{
+ this->os_spec_flags=os_spec_flags;
+ unsigned int index=0;
+ while(index<transferThreadList.size())
+ {
+ transferThreadList.at(index)->setOsSpecFlags(os_spec_flags);
+ index++;
+ }
+}
+
+void ListThread::setNativeCopy(bool native_copy)
+{
+ this->native_copy=native_copy;
+ unsigned int index=0;
+ while(index<transferThreadList.size())
+ {
+ transferThreadList.at(index)->setNativeCopy(native_copy);
+ index++;
+ }
+}
+
+#ifdef ULTRACOPIER_PLUGIN_RSYNC
+/// \brief set rsync
+void ListThread::setRsync(const bool rsync)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"set rsync: "+std::to_string(rsync));
+ this->rsync=rsync;
+ unsigned int index=0;
+ while(index<transferThreadList.size())
+ {
+ transferThreadList.at(index)->setRsync(rsync);
+ index++;
+ }
+ for(unsigned int i=0;i<scanFileOrFolderThreadsPool.size();i++)
+ scanFileOrFolderThreadsPool.at(i)->setRsync(rsync);
+}
+#endif
+
+//set check destination folder
+void ListThread::setCheckDestinationFolderExists(const bool checkDestinationFolderExists)
+{
+ this->checkDestinationFolderExists=checkDestinationFolderExists;
+ for(unsigned int i=0;i<scanFileOrFolderThreadsPool.size();i++)
+ scanFileOrFolderThreadsPool.at(i)->setCheckDestinationFolderExists(checkDestinationFolderExists && alwaysDoThisActionForFolderExists!=FolderExists_Merge);
+}
+
+void ListThread::setCollisionAction(const FileExistsAction &alwaysDoThisActionForFileExists)
+{
+ this->alwaysDoThisActionForFileExists=alwaysDoThisActionForFileExists;
+ unsigned int index=0;
+ while(index<transferThreadList.size())
+ {
+ transferThreadList.at(index)->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists);
+ index++;
+ }
+}
+
+//set the folder local collision
+void ListThread::setFolderCollision(const FolderExistsAction &alwaysDoThisActionForFolderExists)
+{
+ this->alwaysDoThisActionForFolderExists=alwaysDoThisActionForFolderExists;
+}
+
+//speedLimitation in KB/s
+bool ListThread::setSpeedLimitation(const int64_t &speedLimitation)
+{
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"maxSpeed in KB/s: "+std::to_string(speedLimitation));
+
+ if(speedLimitation>1024*1024)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"speedLimitation out of range");
+ return false;
+ }
+ this->speedLimitation=speedLimitation;
+
+ multiForBigSpeed=0;
+ if(speedLimitation>0)
+ {
+ blockSizeAfterSpeedLimitation=blockSize;
+
+ //try resolv the interval
+ int newInterval;//in ms
+ do
+ {
+ multiForBigSpeed++;
+ //at max speed, is out of range for int, it's why quint64 is used
+ newInterval=(((quint64)blockSize*(quint64)multiForBigSpeed*1000/* *1000 because interval is into ms, not s*/)/((quint64)speedLimitation*(quint64)1024));
+ if(newInterval<0)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"calculated newInterval wrong");
+ return false;
+ }
+ }
+ while(newInterval<ULTRACOPIER_PLUGIN_MINTIMERINTERVAL);
+
+ if(newInterval<=0)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"calculated newInterval wrong");
+ return false;
+ }
+ //wait time too big, then shrink the block size and set interval to max size
+ if(newInterval>ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"wait time too big, then shrink the block size and set interval to max size");
+ newInterval=ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL;
+ multiForBigSpeed=1;
+ blockSizeAfterSpeedLimitation=(this->speedLimitation*1024*newInterval)/1000;
+
+ if(blockSizeAfterSpeedLimitation<10)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"calculated block size wrong");
+ return false;
+ }
+
+ //set the new block size into the thread
+ const int &loop_size=transferThreadList.size();
+ int int_for_loop=0;
+ while(int_for_loop<loop_size)
+ {
+ if(!transferThreadList.at(int_for_loop)->setBlockSize(blockSizeAfterSpeedLimitation))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to set the block size");
+ int_for_loop++;
+ }
+ }
+
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("fixed speed with new block size and new interval in BlockSize: %1, multiForBigSpeed: %2, newInterval: %3, maxSpeed: %4")
+ .arg(blockSizeAfterSpeedLimitation)
+ .arg(multiForBigSpeed)
+ .arg(newInterval)
+ .arg(speedLimitation)
+ .toStdString()
+ );
+
+ clockForTheCopySpeed->setInterval(newInterval);
+ if(clockForTheCopySpeed!=NULL)
+ clockForTheCopySpeed->start();
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"clockForTheCopySpeed == NULL at this point");
+ }
+ else
+ {
+ if(clockForTheCopySpeed!=NULL)
+ clockForTheCopySpeed->stop();
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"clockForTheCopySpeed == NULL at this point");
+ int int_for_loop=0;
+ const int &loop_size=transferThreadList.size();
+ while(int_for_loop<loop_size)
+ {
+ transferThreadList.at(int_for_loop)->setBlockSize(blockSize);
+ int_for_loop++;
+ }
+ }
+ int int_for_loop=0;
+ const int &loop_size=transferThreadList.size();
+ while(int_for_loop<loop_size)
+ {
+ transferThreadList.at(int_for_loop)->setMultiForBigSpeed(multiForBigSpeed);
+ int_for_loop++;
+ }
+
+ return true;
+ #else
+ Q_UNUSED(speedLimitation);
+ return false;
+ #endif
+}
+
+//set data local to the thread
+void ListThread::setAlwaysFileExistsAction(const FileExistsAction &alwaysDoThisActionForFileExists)
+{
+ this->alwaysDoThisActionForFileExists=alwaysDoThisActionForFileExists;
+ unsigned int int_for_loop=0;
+ while(int_for_loop<transferThreadList.size())
+ {
+ transferThreadList.at(int_for_loop)->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists);
+ int_for_loop++;
+ }
+}
+
+/** \brief give the forced mode, to export/import transfer list */
+void ListThread::forceMode(const Ultracopier::CopyMode &mode)
+{
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ if(mode==Ultracopier::Move)
+ setRsync(false);
+ #endif
+ if(mode==Ultracopier::Copy)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Force mode to copy");
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Force mode to move");
+ this->mode=mode;
+ forcedMode=true;
+}
+
+void ListThread::setMoveTheWholeFolder(const bool &moveTheWholeFolder)
+{
+ for(unsigned int i=0;i<scanFileOrFolderThreadsPool.size();i++)
+ scanFileOrFolderThreadsPool.at(i)->setMoveTheWholeFolder(moveTheWholeFolder);
+ this->moveTheWholeFolder=moveTheWholeFolder;
+}
+
+void ListThread::setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles)
+{
+ this->deletePartiallyTransferredFiles=deletePartiallyTransferredFiles;
+ unsigned int index=0;
+ while(index<transferThreadList.size())
+ {
+ transferThreadList.at(index)->setDeletePartiallyTransferredFiles(deletePartiallyTransferredFiles);
+ index++;
+ }
+}
+
+void ListThread::setInodeThreads(const int &inodeThreads)
+{
+ if(inodeThreads<1 || inodeThreads>32)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"inodeThreads is out of ranges: "+std::to_string(inodeThreads));
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"inodeThreads: "+std::to_string(inodeThreads));
+ this->inodeThreads=inodeThreads;
+ createTransferThread();
+ deleteTransferThread();
+}
+
+void ListThread::setRenameTheOriginalDestination(const bool &renameTheOriginalDestination)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"renameTheOriginalDestination: "+std::to_string(renameTheOriginalDestination));
+ this->renameTheOriginalDestination=renameTheOriginalDestination;
+ unsigned int index=0;
+ while(index<transferThreadList.size())
+ {
+ transferThreadList.at(index)->setRenameTheOriginalDestination(renameTheOriginalDestination);
+ index++;
+ }
+}
+
+void ListThread::setCheckDiskSpace(const bool &checkDiskSpace)
+{
+ this->checkDiskSpace=checkDiskSpace;
+}
+
+void ListThread::setBuffer(const bool &buffer)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"setBuffer: "+std::to_string(buffer));
+ this->buffer=buffer;
+ unsigned int index=0;
+ while(index<transferThreadList.size())
+ {
+ transferThreadList.at(index)->setBuffer(buffer);
+ index++;
+ }
+}
+
+void ListThread::setFollowTheStrictOrder(const bool &order)
+{
+ this->followTheStrictOrder=order;
+ for(unsigned int i=0;i<scanFileOrFolderThreadsPool.size();i++)
+ scanFileOrFolderThreadsPool.at(i)->setFollowTheStrictOrder(this->followTheStrictOrder);
+}
+
diff --git a/plugins/CopyEngine/Ultracopier-Spec/ListThreadScan.cpp b/plugins/CopyEngine/Ultracopier-Spec/ListThreadScan.cpp
new file mode 100755
index 0000000..48cc444
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/ListThreadScan.cpp
@@ -0,0 +1,97 @@
+#include "ListThread.h"
+#include <QStorageInfo>
+#include <QtGlobal>
+#include "../../../cpp11addition.h"
+
+#include "async/TransferThreadAsync.h"
+
+ScanFileOrFolder * ListThread::newScanThread(Ultracopier::CopyMode mode)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start with: "+std::to_string(mode));
+
+ //create new thread because is auto-detroyed
+ scanFileOrFolderThreadsPool.push_back(new ScanFileOrFolder(mode));
+ ScanFileOrFolder * scanFileOrFolderThreads=scanFileOrFolderThreadsPool.back();
+ if(!connect(scanFileOrFolderThreads,&ScanFileOrFolder::finishedTheListing, this,&ListThread::scanThreadHaveFinishSlot, Qt::QueuedConnection))
+ abort();
+ if(!connect(scanFileOrFolderThreads,&ScanFileOrFolder::fileTransfer, this,&ListThread::fileTransfer, Qt::QueuedConnection))
+ abort();
+ if(!connect(scanFileOrFolderThreads,&ScanFileOrFolder::fileTransferWithInode, this,&ListThread::fileTransferWithInode, Qt::QueuedConnection))
+ abort();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(!connect(scanFileOrFolderThreads,&ScanFileOrFolder::debugInformation, this,&ListThread::debugInformation, Qt::QueuedConnection))
+ abort();
+ #endif
+ if(!connect(scanFileOrFolderThreads,&ScanFileOrFolder::newFolderListing, this,&ListThread::newFolderListing))
+ abort();
+ if(!connect(scanFileOrFolderThreads,&ScanFileOrFolder::addToMovePath, this,&ListThread::addToMovePath, Qt::QueuedConnection))
+ abort();
+ if(!connect(scanFileOrFolderThreads,&ScanFileOrFolder::addToKeepAttributePath, this,&ListThread::addToKeepAttributePath, Qt::QueuedConnection))
+ abort();
+ if(!connect(scanFileOrFolderThreads,&ScanFileOrFolder::addToRealMove, this,&ListThread::addToRealMove, Qt::QueuedConnection))
+ abort();
+ if(!connect(scanFileOrFolderThreads,&ScanFileOrFolder::addToMkPath, this,&ListThread::addToMkPath, Qt::QueuedConnection))
+ abort();
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ if(!connect(scanFileOrFolderThreads,&ScanFileOrFolder::addToRmForRsync, this,&ListThread::addToRmForRsync, Qt::QueuedConnection))
+ abort();
+ #endif
+
+ if(!connect(scanFileOrFolderThreads,&ScanFileOrFolder::errorOnFolder, this,&ListThread::errorOnFolder, Qt::QueuedConnection))
+ abort();
+ if(!connect(scanFileOrFolderThreads,&ScanFileOrFolder::folderAlreadyExists, this,&ListThread::folderAlreadyExists, Qt::QueuedConnection))
+ abort();
+
+ if(!connect(this,&ListThread::send_updateMount, scanFileOrFolderThreads,&ScanFileOrFolder::set_updateMount, Qt::QueuedConnection))
+ abort();
+
+ scanFileOrFolderThreads->setFilters(include,exclude);
+ scanFileOrFolderThreads->setCheckDestinationFolderExists(checkDestinationFolderExists && alwaysDoThisActionForFolderExists!=FolderExists_Merge);
+ scanFileOrFolderThreads->setMoveTheWholeFolder(moveTheWholeFolder);
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ scanFileOrFolderThreads->setRsync(rsync);
+ #endif
+ if(scanFileOrFolderThreadsPool.size()==1)
+ updateTheStatus();
+ scanFileOrFolderThreads->setRenamingRules(firstRenamingRule,otherRenamingRule);
+ scanFileOrFolderThreads->setFollowTheStrictOrder(followTheStrictOrder);
+ return scanFileOrFolderThreads;
+}
+
+void ListThread::scanThreadHaveFinishSlot()
+{
+ scanThreadHaveFinish();
+}
+
+void ListThread::scanThreadHaveFinish(bool skipFirstRemove)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"listing thread have finish, skipFirstRemove: "+std::to_string(skipFirstRemove));
+ if(!skipFirstRemove)
+ {
+ ScanFileOrFolder * senderThread = qobject_cast<ScanFileOrFolder *>(QObject::sender());
+ if(senderThread==NULL)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"sender pointer null (plugin copy engine)");
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start the next thread, scanFileOrFolderThreadsPool.size(): "+std::to_string(scanFileOrFolderThreadsPool.size()));
+ delete senderThread;
+ vectorremoveOne(scanFileOrFolderThreadsPool,senderThread);
+ if(scanFileOrFolderThreadsPool.empty())
+ updateTheStatus();
+ }
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start the next thread, scanFileOrFolderThreadsPool.size(): "+std::to_string(scanFileOrFolderThreadsPool.size()));
+ if(scanFileOrFolderThreadsPool.size()>0)
+ {
+ //then start the next listing threads
+ if(scanFileOrFolderThreadsPool.front()->isFinished())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"Start listing thread");
+ scanFileOrFolderThreadsPool.front()->start();
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"The listing thread is already running");
+ }
+ else
+ autoStartAndCheckSpace();
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/ListThreadStat.cpp b/plugins/CopyEngine/Ultracopier-Spec/ListThreadStat.cpp
new file mode 100755
index 0000000..bbba3ee
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/ListThreadStat.cpp
@@ -0,0 +1,184 @@
+#include "ListThread.h"
+#include <QStorageInfo>
+#include <QtGlobal>
+#include "../../../cpp11addition.h"
+
+#include "async/TransferThreadAsync.h"
+
+/// \brief update the transfer stat
+void ListThread::newTransferStat(const TransferStat &stat,const quint64 &id)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"TransferStat: "+std::to_string(stat));
+ Ultracopier::ReturnActionOnCopyList newAction;
+ switch(stat)
+ {
+ case TransferStat_Idle:
+ return;
+ break;
+ case TransferStat_PreOperation:
+ return;
+ break;
+ case TransferStat_WaitForTheTransfer:
+ return;
+ break;
+ case TransferStat_Transfer:
+ newAction.type=Ultracopier::Transfer;
+ break;
+ case TransferStat_PostTransfer:
+ case TransferStat_PostOperation:
+ newAction.type=Ultracopier::PostOperation;
+ break;
+ default:
+ return;
+ break;
+ }
+ newAction.addAction.id = id;
+ actionDone.push_back(newAction);
+}
+
+#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+void ListThread::timedUpdateDebugDialog()
+{
+ std::vector<std::string> newList;
+ int index=0;
+ int loop_sub_size_transfer_thread_search=transferThreadList.size();
+ while(index<loop_sub_size_transfer_thread_search)
+ {
+ QString stat;
+ switch(transferThreadList.at(index)->getStat())
+ {
+ case TransferStat_Idle:
+ stat="Idle";
+ break;
+ case TransferStat_PreOperation:
+ stat="PreOperation";
+ break;
+ case TransferStat_WaitForTheTransfer:
+ stat="WaitForTheTransfer";
+ break;
+ case TransferStat_Transfer:
+ stat="Transfer";
+ break;
+ case TransferStat_PostOperation:
+ stat="PostOperation";
+ break;
+ case TransferStat_PostTransfer:
+ stat="PostTransfer";
+ break;
+ default:
+ stat=QStringLiteral("??? (%1)").arg(transferThreadList.at(index)->getStat());
+ break;
+ }
+ newList.push_back(QStringLiteral("%1) (%3,%4) %2")
+ .arg(index)
+ .arg(stat)
+ .arg(transferThreadList.at(index)->readingLetter())
+ .arg(transferThreadList.at(index)->writingLetter())
+ .toStdString()
+ );
+ index++;
+ }
+ std::vector<std::string> newList2;
+ index=0;
+ const int &loop_size=actionToDoListTransfer.size();
+ while(index<loop_size)
+ {
+ newList2.push_back(
+ TransferThread::internalStringTostring(actionToDoListTransfer.at(index).source)+
+ " "+std::to_string(actionToDoListTransfer.at(index).size)+" "+
+ TransferThread::internalStringTostring(actionToDoListTransfer.at(index).destination)
+ );
+ if(index>((inodeThreads+ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER)*2+1))
+ {
+ newList2.push_back("...");
+ break;
+ }
+ index++;
+ }
+ emit updateTheDebugInfo(newList,newList2,numberOfInodeOperation);
+}
+#endif
+
+int ListThread::getNumberOfTranferRuning() const
+{
+ int numberOfTranferRuning=0;
+ const int &loop_size=transferThreadList.size();
+ //lunch the transfer in WaitForTheTransfer
+ int int_for_loop=0;
+ while(int_for_loop<loop_size)
+ {
+ if(transferThreadList.at(int_for_loop)->getStat()==TransferStat_Transfer && transferThreadList.at(int_for_loop)->transferId!=0 && transferThreadList.at(int_for_loop)->transferSize>=parallelizeIfSmallerThan)
+ numberOfTranferRuning++;
+ int_for_loop++;
+ }
+ return numberOfTranferRuning;
+}
+
+//send action done
+void ListThread::sendActionDone()
+{
+ if(!actionDone.empty())
+ {
+ emit newActionOnList(actionDone);
+ actionDone.clear();
+ }
+ if(!timeToTransfer.empty())
+ {
+ emit doneTime(timeToTransfer);
+ timeToTransfer.clear();
+ }
+}
+
+//send progression
+void ListThread::sendProgression()
+{
+ if(actionToDoListTransfer.empty())
+ return;
+ oversize=0;
+ currentProgression=0;
+ int int_for_loop=0;
+ const int &loop_size=transferThreadList.size();
+ while(int_for_loop<loop_size)
+ {
+ TransferThreadAsync * temp_transfer_thread=transferThreadList.at(int_for_loop);
+ switch(temp_transfer_thread->getStat())
+ {
+ case TransferStat_Transfer:
+ case TransferStat_PostTransfer:
+ case TransferStat_PostOperation:
+ {
+ copiedSize=temp_transfer_thread->copiedSize();
+
+ //for the general progression
+ currentProgression+=copiedSize;
+
+ //the oversize (when the file is bigger after/during the copy then what was during the listing)
+ if(copiedSize>(qint64)temp_transfer_thread->transferSize)
+ localOverSize=copiedSize-temp_transfer_thread->transferSize;
+ else
+ localOverSize=0;
+
+ //the current size copied
+ totalSize=temp_transfer_thread->transferSize+localOverSize;
+ std::pair<uint64_t,uint64_t> progression=temp_transfer_thread->progression();
+ Ultracopier::ProgressionItem tempItem;
+ tempItem.currentRead=progression.first;
+ tempItem.currentWrite=progression.second;
+ tempItem.id=temp_transfer_thread->transferId;
+ tempItem.total=totalSize;
+ progressionList.push_back(tempItem);
+
+ //add the oversize to the general progression
+ oversize+=localOverSize;
+ }
+ break;
+ default:
+ break;
+ }
+ int_for_loop++;
+ }
+ emit pushFileProgression(progressionList);
+ progressionList.clear();
+ emit pushGeneralProgression(bytesTransfered+currentProgression,bytesToTransfer+oversize);
+ realByteTransfered();
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/ListThread_InodeAction.cpp b/plugins/CopyEngine/Ultracopier-Spec/ListThread_InodeAction.cpp
new file mode 100755
index 0000000..b26cb35
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/ListThread_InodeAction.cpp
@@ -0,0 +1,91 @@
+/** \file ListThread_InodeAction.cpp
+\brief To be included into ListThread.cpp, to optimize and prevent code duplication
+\see ListThread.cpp */
+
+#ifdef LISTTHREAD_H
+
+//do the inode action
+ActionToDoInode& currentActionToDoInode=actionToDoListInode[int_for_internal_loop];
+switch(currentActionToDoInode.type)
+{
+ case ActionType_RealMove:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"launch real move, source: "+TransferThread::internalStringTostring(currentActionToDoInode.source)+
+ ", destination: "+TransferThread::internalStringTostring(currentActionToDoInode.destination));
+ mkPathQueue.addPath(currentActionToDoInode.source,currentActionToDoInode.destination,currentActionToDoInode.type);
+ currentActionToDoInode.isRunning=true;
+ numberOfInodeOperation++;
+ if(numberOfInodeOperation>=inodeThreads)
+ return;
+ break;
+ case ActionType_MkPath:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"launch mkpath, source: "+TransferThread::internalStringTostring(currentActionToDoInode.source)+
+ ", destination: "+TransferThread::internalStringTostring(currentActionToDoInode.destination));
+ mkPathQueue.addPath(currentActionToDoInode.source,currentActionToDoInode.destination,currentActionToDoInode.type);
+ currentActionToDoInode.isRunning=true;
+ numberOfInodeOperation++;
+ if(numberOfInodeOperation>=inodeThreads)
+ return;
+ break;
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ case ActionType_RmSync:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"launch rmsync, source: "+TransferThread::internalStringTostring(currentActionToDoInode.source)+
+ ", destination: "+TransferThread::internalStringTostring(currentActionToDoInode.destination));
+ mkPathQueue.addPath(currentActionToDoInode.destination,currentActionToDoInode.destination,currentActionToDoInode.type);
+ currentActionToDoInode.isRunning=true;
+ numberOfInodeOperation++;
+ if(numberOfInodeOperation>=inodeThreads)
+ return;
+ break;
+ #endif
+ case ActionType_MovePath:
+ //then empty (no file), can try remove it
+ if(currentActionToDoInode.size==0 || actionToDoListTransfer.empty())//don't put afterTheTransfer because actionToDoListInode_afterTheTransfer -> already afterTheTransfer
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"launch rmpath: source: "+TransferThread::internalStringTostring(currentActionToDoInode.source)+
+ ", destination: "+TransferThread::internalStringTostring(currentActionToDoInode.destination));
+ mkPathQueue.addPath(currentActionToDoInode.source,currentActionToDoInode.destination,currentActionToDoInode.type);
+ currentActionToDoInode.isRunning=true;
+ numberOfInodeOperation++;
+ if(numberOfInodeOperation>=inodeThreads)
+ return;
+ }
+ else //have do the destination, put the remove to after
+ {
+ currentActionToDoInode.size=0;//why just not do .size--?
+ actionToDoListInode_afterTheTransfer.push_back(currentActionToDoInode);
+ actionToDoListInode.erase(actionToDoListInode.cbegin()+int_for_internal_loop);
+ int_for_internal_loop--;
+ actionToDoListInode_count--;
+ if(numberOfInodeOperation>=inodeThreads)
+ return;
+ }
+ break;
+ case ActionType_SyncDate:
+ //then empty (no file), can try remove it
+ if(currentActionToDoInode.size==0 || actionToDoListTransfer.empty())//don't put afterTheTransfer because actionToDoListInode_afterTheTransfer -> already afterTheTransfer
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"launch rmpath: source: "+TransferThread::internalStringTostring(currentActionToDoInode.source)+
+ ", destination: "+TransferThread::internalStringTostring(currentActionToDoInode.destination));
+ mkPathQueue.addPath(currentActionToDoInode.source,currentActionToDoInode.destination,currentActionToDoInode.type);
+ currentActionToDoInode.isRunning=true;
+ numberOfInodeOperation++;
+ if(numberOfInodeOperation>=inodeThreads)
+ return;
+ }
+ else //have do the destination, put the remove to after
+ {
+ currentActionToDoInode.size=0;//why just not do .size--?
+ actionToDoListInode_afterTheTransfer.push_back(currentActionToDoInode);
+ actionToDoListInode.erase(actionToDoListInode.cbegin()+int_for_internal_loop);
+ int_for_internal_loop--;
+ actionToDoListInode_count--;
+ if(numberOfInodeOperation>=inodeThreads)
+ return;
+ }
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Wrong type at inode action");
+ return;
+}
+
+#endif
diff --git a/plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp b/plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp
new file mode 100755
index 0000000..3d6729c
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp
@@ -0,0 +1,676 @@
+#include "MkPath.h"
+#include "TransferThread.h"
+#include "../../../cpp11addition.h"
+
+#ifdef Q_OS_WIN32
+#include <accctrl.h>
+#include <aclapi.h>
+#endif
+
+#ifdef Q_OS_WIN32
+ #ifndef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY
+ #ifndef NOMINMAX
+ #define NOMINMAX
+ #endif
+ #include <windows.h>
+ #endif
+#endif
+
+#ifdef WIDESTRING
+INTERNALTYPEPATH MkPath::text_slash=L"/";
+#else
+INTERNALTYPEPATH MkPath::text_slash="/";
+#endif
+
+MkPath::MkPath() :
+ waitAction(false),
+ stopIt(false),
+ doRightTransfer(false),
+ keepDate(false),
+ mkFullPath(false),
+ doTheDateTransfer(false)
+{
+ setObjectName("MkPath");
+ moveToThread(this);
+ start();
+}
+
+MkPath::~MkPath()
+{
+ stopIt=true;
+ quit();
+ wait();
+}
+
+void MkPath::addPath(const INTERNALTYPEPATH& source, const INTERNALTYPEPATH& destination, const ActionType &actionType)
+{
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ #ifdef WIDESTRING
+ if(destination.find(L"//") != std::wstring::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path destination contains error");
+ if(source.find(L"//") != std::wstring::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path source contains error");
+ #else
+ if(destination.find("//") != std::string::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path destination contains error");
+ if(source.find("//") != std::string::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path source contains error");
+ #endif
+ #endif
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+TransferThread::internalStringTostring(source)+
+ ", destination: "+TransferThread::internalStringTostring(destination));
+ if(stopIt)
+ return;
+ emit internalStartAddPath(source,destination,actionType);
+}
+
+void MkPath::skip()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit internalStartSkip();
+}
+
+void MkPath::retry()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit internalStartRetry();
+}
+
+void MkPath::run()
+{
+ connect(this,&MkPath::internalStartAddPath, this,&MkPath::internalAddPath,Qt::QueuedConnection);
+ connect(this,&MkPath::internalStartDoThisPath, this,&MkPath::internalDoThisPath,Qt::QueuedConnection);
+ connect(this,&MkPath::internalStartSkip, this,&MkPath::internalSkip,Qt::QueuedConnection);
+ connect(this,&MkPath::internalStartRetry, this,&MkPath::internalRetry,Qt::QueuedConnection);
+ exec();
+}
+
+void MkPath::internalDoThisPath()
+{
+ if(waitAction || pathList.empty())
+ return;
+ const Item &item=pathList.front();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(item.destination.find(TransferThread::stringToInternalString("//")) != std::string::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path destination contains error");
+ if(item.source.find(TransferThread::stringToInternalString("//")) != std::string::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path source contains error");
+ #endif
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+TransferThread::internalStringTostring(item.source)+
+ ", destination: "+TransferThread::internalStringTostring(item.destination)+
+ ", move: "+std::to_string(item.actionType));
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ if(item.actionType==ActionType_RmSync)
+ {
+ if(item.destination.isFile())
+ {
+ QFile removedFile(item.destination.absoluteFilePath());
+ if(!removedFile.remove())
+ {
+ if(stopIt)
+ return;
+ waitAction=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to remove the inode: "+item.destination+", error: "+removedFile.errorString().toStdString());
+ emit errorOnFolder(item.destination,removedFile.errorString().toStdString());
+ return;
+ }
+ }
+ else if(!rmpath(item.destination.absoluteFilePath()))
+ {
+ if(stopIt)
+ return;
+ waitAction=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to remove the inode: "+item.destination);
+ emit errorOnFolder(item.destination,tr("Unable to remove").toStdString());
+ return;
+ }
+ pathList.removeFirst();
+ emit firstFolderFinish();
+ checkIfCanDoTheNext();
+ return;
+ }
+ #endif
+ doTheDateTransfer=false;
+ if(keepDate)
+ {
+ const int64_t &sourceLastModified=TransferThread::readFileMDateTime(item.source);
+ if(!TransferThread::exists(item.source))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"the sources not exists: "+TransferThread::internalStringTostring(item.source));
+ doTheDateTransfer=false;
+ }
+ else if(ULTRACOPIER_PLUGIN_MINIMALYEAR_TIMESTAMPS>=sourceLastModified)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"the sources is older to copy the time: "+TransferThread::internalStringTostring(item.source)+
+ ": "+QDateTime::fromMSecsSinceEpoch((uint64_t)ULTRACOPIER_PLUGIN_MINIMALYEAR_TIMESTAMPS*(uint64_t)1000).toString("dd.MM.yyyy hh:mm:ss.zzz").toStdString()+
+ ">="+QDateTime::fromMSecsSinceEpoch((uint64_t)sourceLastModified*(uint64_t)1000).toString("dd.MM.yyyy hh:mm:ss.zzz").toStdString());
+ doTheDateTransfer=false;
+ }
+ else
+ {
+ doTheDateTransfer=readFileDateTime(item.source);
+ /*if(!doTheDateTransfer)
+ {
+ if(stopIt)
+ return;
+ waitAction=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to get source folder time: "+item.source.absoluteFilePath());
+ emit errorOnFolder(item.source,tr("Unable to get time"));
+ return;
+ }*/
+ }
+ }
+ if(TransferThread::is_dir(item.destination) && item.actionType==ActionType_RealMove)
+ pathList.front().actionType=ActionType_MovePath;
+ if(item.actionType!=ActionType_RealMove)
+ {
+ if(!TransferThread::is_dir(item.destination))
+ {
+ if(mkFullPath)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"TransferThread::mkpath: "+TransferThread::internalStringTostring(item.destination));
+ if(!TransferThread::mkpath(item.destination))
+ {
+ if(!TransferThread::is_dir(item.destination))
+ {
+ if(stopIt)
+ return;
+ waitAction=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to make the folder: "+
+ TransferThread::internalStringTostring(item.destination)+
+ #ifdef Q_OS_WIN32
+ ", LastError: "+TransferThread::GetLastErrorStdStr()
+ #else
+ ", errno: "+std::to_string(errno)
+ #endif
+ );
+ emit errorOnFolder(item.destination,tr("Unable to create the folder").toStdString());
+ return;
+ }
+ }
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"TransferThread::mkdir: "+TransferThread::internalStringTostring(item.destination));
+ if(!TransferThread::mkdir(item.destination))
+ {
+ if(!TransferThread::is_dir(item.destination))
+ {
+ if(stopIt)
+ return;
+ waitAction=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to make the folder: "+
+ TransferThread::internalStringTostring(item.destination)+
+ #ifdef Q_OS_WIN32
+ ", LastError: "+TransferThread::GetLastErrorStdStr()
+ #else
+ ", errno: "+std::to_string(errno)
+ #endif
+ );
+ emit errorOnFolder(item.destination,tr("Unable to create the folder").toStdString());
+ return;
+ }
+ }
+ }
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"TransferThread::mkpath ignore exists: "+TransferThread::internalStringTostring(item.destination));
+ }
+ else
+ {
+ if(!TransferThread::is_dir(item.source))
+ {
+ if(stopIt)
+ return;
+ waitAction=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The source folder don't exists: "+TransferThread::internalStringTostring(item.source));
+ emit errorOnFolder(item.destination,tr("The source folder don't exists").toStdString());
+ return;
+ }
+ if(!TransferThread::is_dir(item.source))//it's really an error?
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The source is not a folder: "+TransferThread::internalStringTostring(item.source));
+ /*if(stopIt)
+ return;
+ waitAction=true;
+ emit errorOnFolder(item.destination,tr("The source is not a folder"));
+ return;*/
+ }
+ if(stringStartWith(item.destination,(item.source+text_slash)))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"move into it self: "+TransferThread::internalStringTostring(item.destination));
+ int random=rand();
+ INTERNALTYPEPATH tempFolder=FSabsolutePath(item.source)+text_slash+TransferThread::stringToInternalString(std::to_string(random));
+ while(TransferThread::is_dir(tempFolder))
+ {
+ random=rand();
+ tempFolder=FSabsolutePath(item.source)+text_slash+TransferThread::stringToInternalString(std::to_string(random));
+ }
+ if(!TransferThread::rename(item.source,tempFolder))
+ {
+ if(stopIt)
+ return;
+ waitAction=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to temporary rename the folder: "+TransferThread::internalStringTostring(item.destination));
+ emit errorOnFolder(item.destination,tr("Unable to temporary rename the folder").toStdString());
+ return;
+ }
+ /* http://doc.qt.io/qt-5/qdir.html#rename
+ * On most file systems, rename() fails only if oldName does not exist, or if a file with the new name already exists.
+ if(!dir.mkpath(FSabsolutePath(item.destination)))
+ {
+ if(!dir.exists(FSabsolutePath(item.destination)))
+ {
+ if(stopIt)
+ return;
+ waitAction=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to make the folder: "+item.destination.absoluteFilePath());
+ emit errorOnFolder(item.destination,tr("Unable to create the folder"));
+ return;
+ }
+ }*/
+ if(!TransferThread::rename(tempFolder,item.destination))
+ {
+ if(stopIt)
+ return;
+ waitAction=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to do the final real move the folder: "+TransferThread::internalStringTostring(item.destination));
+ emit errorOnFolder(item.destination,tr("Unable to do the final real move the folder").toStdString());
+ return;
+ }
+ }
+ else
+ {
+ /* http://doc.qt.io/qt-5/qdir.html#rename
+ * On most file systems, rename() fails only if oldName does not exist, or if a file with the new name already exists.
+ if(!dir.mkpath(FSabsolutePath(item.destination)))
+ {
+ if(!dir.exists(FSabsolutePath(item.destination)))
+ {
+ if(stopIt)
+ return;
+ waitAction=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to make the folder: "+item.destination.absoluteFilePath());
+ emit errorOnFolder(item.destination,tr("Unable to create the folder"));
+ return;
+ }
+ }*/
+ if(!TransferThread::rename(item.source,item.destination)!=0)
+ {
+ if(stopIt)
+ return;
+ waitAction=true;
+ #ifdef Q_OS_WIN32
+ const std::string &strError=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to make the folder: from: "+TransferThread::internalStringTostring(item.source)+", soruce exists: "+
+ std::to_string(TransferThread::is_dir(item.source))+", to: "+TransferThread::internalStringTostring(item.destination)
+ +", destination exist: "+std::to_string(TransferThread::is_dir(item.destination))+": "+strError
+ );
+ emit errorOnFolder(item.destination,tr("Unable to move the folder").toStdString()+": "+strError);
+ #else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to make the folder: from: "+TransferThread::internalStringTostring(item.source)+", soruce exists: "+
+ std::to_string(TransferThread::is_dir(item.source))+", to: "+TransferThread::internalStringTostring(item.destination)
+ +", destination exist: "+std::to_string(TransferThread::is_dir(item.destination))+": "+std::to_string(errno)
+ );
+ emit errorOnFolder(item.destination,tr("Unable to move the folder: errno: %1").arg(errno).toStdString());
+ #endif
+ return;
+ }
+ }
+ }
+ if(doTheDateTransfer)
+ if(!writeFileDateTime(item.destination))
+ {
+ if(!TransferThread::exists(item.destination))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to set destination folder time (not exists): "+TransferThread::internalStringTostring(item.destination));
+ else if(!TransferThread::is_dir(item.destination))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to set destination folder time (not a dir): "+TransferThread::internalStringTostring(item.destination));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to set destination folder time: "+TransferThread::internalStringTostring(item.destination));
+ /*if(stopIt)
+ return;
+ waitAction=true;
+
+ emit errorOnFolder(item.source,tr("Unable to set time"));
+ return;*/
+ }
+ if(doRightTransfer && item.actionType!=ActionType_RealMove)
+ {
+ #ifdef Q_OS_UNIX
+ struct stat permissions;
+ if(stat(TransferThread::internalStringTostring(item.source).c_str(), &permissions)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to get the right: "+TransferThread::internalStringTostring(item.destination));
+ else
+ {
+ if(chmod(TransferThread::internalStringTostring(item.destination).c_str(), permissions.st_mode)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to chmod the right: "+TransferThread::internalStringTostring(item.destination));
+ if(chown(TransferThread::internalStringTostring(item.destination).c_str(), permissions.st_uid, permissions.st_gid)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to chown the right: "+TransferThread::internalStringTostring(item.destination));
+ }
+ #else
+ PSECURITY_DESCRIPTOR PSecurityD;
+ PACL dacl;
+
+ HANDLE hFile = CreateFileW(item.source.c_str(), GENERIC_READ ,
+ FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
+ if (hFile == INVALID_HANDLE_VALUE)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,
+ std::string("CreateFile() failed. Error: INVALID_HANDLE_VALUE ")+TransferThread::internalStringTostring(item.source).c_str()+", GetLastError(): "+std::to_string(GetLastError())
+ );
+ else
+ {
+ DWORD lasterror = GetSecurityInfo(hFile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,
+ NULL, NULL, &dacl, NULL, &PSecurityD);
+ CloseHandle(hFile);
+ if (lasterror != ERROR_SUCCESS)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"GetSecurityInfo() failed. Error"+std::to_string(lasterror));
+ else
+ {
+ hFile = CreateFileW(item.destination.c_str(),READ_CONTROL | WRITE_OWNER | WRITE_DAC | ACCESS_SYSTEM_SECURITY ,
+ 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
+ if (hFile == INVALID_HANDLE_VALUE)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"CreateFile() failed. Error: INVALID_HANDLE_VALUE");
+ else
+ {
+ lasterror = SetSecurityInfo(hFile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION , NULL, NULL, dacl, NULL);
+ if (lasterror != ERROR_SUCCESS)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"GetSecurityInfo() failed. Error"+std::to_string(lasterror));
+ }
+ //free(dacl);
+ //free(PSecurityD);
+ CloseHandle(hFile);
+ }
+ }
+ #endif
+ }
+ if(item.actionType==ActionType_MovePath)
+ {
+ if(!rmpath(item.source))
+ {
+ if(stopIt)
+ return;
+ waitAction=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Unable to remove the source folder: "+TransferThread::internalStringTostring(item.destination));
+ emit errorOnFolder(item.source,tr("Unable to remove").toStdString());
+ return;
+ }
+ }
+ pathList.erase(pathList.cbegin());
+ emit firstFolderFinish();
+ checkIfCanDoTheNext();
+}
+
+void MkPath::internalAddPath(const INTERNALTYPEPATH &source, const INTERNALTYPEPATH &destination, const ActionType &actionType)
+{
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ #ifdef WIDESTRING
+ if(destination.find(L"//") != std::wstring::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path destination contains error");
+ if(source.find(L"//") != std::wstring::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path source contains error");
+ #else
+ if(destination.find("//") != std::string::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path destination contains error");
+ if(source.find("//") != std::string::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path source contains error");
+ #endif
+ #endif
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+TransferThread::internalStringTostring(source)+", destination: "+TransferThread::internalStringTostring(destination));
+ Item tempPath;
+ tempPath.source=source;
+ tempPath.destination=destination;
+ tempPath.actionType=actionType;
+ pathList.push_back(tempPath);
+ if(!waitAction)
+ checkIfCanDoTheNext();
+}
+
+void MkPath::checkIfCanDoTheNext()
+{
+ if(!waitAction && !stopIt && pathList.size()>0)
+ emit internalStartDoThisPath();
+}
+
+void MkPath::internalSkip()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ waitAction=false;
+ pathList.erase(pathList.cbegin());
+ emit firstFolderFinish();
+ checkIfCanDoTheNext();
+}
+
+void MkPath::internalRetry()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ waitAction=false;
+ checkIfCanDoTheNext();
+}
+
+void MkPath::setRightTransfer(const bool doRightTransfer)
+{
+ this->doRightTransfer=doRightTransfer;
+}
+
+void MkPath::setKeepDate(const bool keepDate)
+{
+ this->keepDate=keepDate;
+}
+
+void MkPath::setMkFullPath(const bool mkFullPath)
+{
+ this->mkFullPath=mkFullPath;
+}
+
+bool MkPath::rmpath(const INTERNALTYPEPATH &dir
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ ,const bool &toSync
+ #endif
+ )
+{
+ if(!TransferThread::is_dir(dir))
+ return false;
+ bool allHaveWork=true;
+ #ifdef Q_OS_UNIX
+ std::vector<TransferThread::dirent_uc> list;
+ if(!TransferThread::entryInfoList(dir,list))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"folder list error: "+TransferThread::internalStringTostring(dir)+", errno: "+std::to_string(errno));
+ return false;
+ }
+ for (unsigned int i = 0; i < list.size(); ++i)
+ {
+ TransferThread::dirent_uc fileInfo=list.at(i);
+ if(!fileInfo.isFolder)
+ {
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ if(toSync)
+ {
+ QFile file(fileInfo.absoluteFilePath());
+ if(!file.remove())
+ {
+ QFile file(fileInfo.absoluteFilePath());
+ if(!file.remove())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to remove a file: "+fileInfo+", due to: "+file.errorString().toStdString());
+ allHaveWork=false;
+ }
+ }
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"found a file: "+fileInfo.fileName().toStdString());
+ allHaveWork=false;
+ }
+ #else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"found a file: "+TransferThread::internalStringTostring(fileInfo.d_name));
+ allHaveWork=false;
+ #endif
+ }
+ else
+ {
+ //return the fonction for scan the new folder
+ if(!rmpath(FSabsolutePath(dir)+TransferThread::stringToInternalString("/")+fileInfo.d_name+TransferThread::stringToInternalString("/")))
+ allHaveWork=false;
+ }
+ }
+ #else
+ HANDLE hFind = NULL;
+ allHaveWork=true;
+ WIN32_FIND_DATAW fdFile;
+ if((hFind = FindFirstFileW((TransferThread::toFinalPath(dir)+L"\\*").c_str(), &fdFile)) == INVALID_HANDLE_VALUE)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"folder list error: "+TransferThread::internalStringTostring(dir)+", errno: "+std::to_string(errno));
+ return false;
+ }
+
+ if(allHaveWork)
+ do
+ {
+ #ifdef WIDESTRING
+ if(wcscmp(fdFile.cFileName, L".")!=0 && wcscmp(fdFile.cFileName, L"..")!=0)
+ #else
+ if(strcmp(fdFile.cFileName, ".")!=0 && strcmp(fdFile.cFileName, "..")!=0)
+ #endif
+ {
+ if(fdFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
+ {
+ //return the fonction for scan the new folder
+ #ifdef WIDESTRING
+ if(!rmpath(dir+L'\\'+fdFile.cFileName+L'/'))
+ #else
+ if(!rmpath(dir+'\\'+fdFile.cFileName+'/'))
+ #endif
+ allHaveWork=false;
+ }
+ else
+ {
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ if(toSync)
+ {
+ QFile file(fileInfo.absoluteFilePath());
+ if(!file.remove())
+ {
+ QFile file(fileInfo.absoluteFilePath());
+ if(!file.remove())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to remove a file: "+fileInfo+", due to: "+file.errorString().toStdString());
+ allHaveWork=false;
+ }
+ }
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"found a file: "+fileInfo.fileName().toStdString());
+ allHaveWork=false;
+ }
+ #else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"found a file: "+TransferThread::internalStringTostring(fdFile.cFileName));
+ allHaveWork=false;
+ #endif
+ }
+ }
+ }
+ while(FindNextFileW(hFind, &fdFile));
+ FindClose(hFind);
+ #endif
+ if(!allHaveWork)
+ return false;
+ allHaveWork=TransferThread::rmdir(dir);
+ if(!allHaveWork)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to remove the folder: "+TransferThread::internalStringTostring(FSabsolutePath(dir)));
+ return allHaveWork;
+}
+
+//fonction to edit the file date time
+bool MkPath::readFileDateTime(const INTERNALTYPEPATH &source)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"readFileDateTime("+TransferThread::internalStringTostring(source)+")");
+ /** Why not do it with Qt? Because it not support setModificationTime(), and get the time with Qt, that's mean use local time where in C is UTC time */
+ #ifdef Q_OS_UNIX
+ struct stat info;
+ if(stat(TransferThread::internalStringTostring(source).c_str(),&info)!=0)
+ return false;
+ #ifdef Q_OS_MAC
+ time_t ctime=info.st_ctimespec.tv_sec;
+ time_t actime=info.st_atimespec.tv_sec;
+ time_t modtime=info.st_mtimespec.tv_sec;
+ //this function avalaible on unix and mingw
+ butime.actime=actime;
+ butime.modtime=modtime;
+ #else
+ time_t ctime=info.st_ctim.tv_sec;
+ time_t actime=info.st_atim.tv_sec;
+ time_t modtime=info.st_mtim.tv_sec;
+ //this function avalaible on unix and mingw
+ butime.actime=actime;
+ butime.modtime=modtime;
+ #endif
+ Q_UNUSED(ctime);
+ return true;
+ #else
+ #ifdef Q_OS_WIN32
+ HANDLE hFileSouce = CreateFileW(TransferThread::toFinalPath(source).c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY | FILE_FLAG_BACKUP_SEMANTICS, NULL);
+ if(hFileSouce == INVALID_HANDLE_VALUE)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"open failed to read: "+TransferThread::internalStringTostring(source)+", error: "+std::to_string(GetLastError()));
+ return false;
+ }
+ FILETIME ftCreate, ftAccess, ftWrite;
+ if(!GetFileTime(hFileSouce, &ftCreate, &ftAccess, &ftWrite))
+ {
+ CloseHandle(hFileSouce);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to get the file time");
+ return false;
+ }
+ this->ftCreate=ftCreate;
+ this->ftAccess=ftAccess;
+ this->ftWrite=ftWrite;
+ CloseHandle(hFileSouce);
+ return true;
+ #else
+ return false;
+ #endif
+ #endif
+ return false;
+}
+
+bool MkPath::writeFileDateTime(const INTERNALTYPEPATH &destination)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"writeFileDateTime("+TransferThread::internalStringTostring(destination)+")");
+ /** Why not do it with Qt? Because it not support setModificationTime(), and get the time with Qt, that's mean use local time where in C is UTC time */
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_LINUX
+ return utime(TransferThread::internalStringTostring(destination).c_str(),&butime)==0;
+ #else //mainly for mac
+ return utime(TransferThread::internalStringTostring(destination).c_str(),&butime)==0;
+ #endif
+ #else
+ #ifdef Q_OS_WIN32
+ HANDLE hFileDestination = CreateFileW(TransferThread::toFinalPath(destination).c_str(), GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
+ if(hFileDestination == INVALID_HANDLE_VALUE)
+ {
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ wchar_t filePath[65535];
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"open failed to write: "+QString::fromWCharArray(filePath).toStdString()+", error: "+std::to_string(GetLastError()));
+ #endif
+ return false;
+ }
+ FILETIME ftCreate, ftAccess, ftWrite;
+ ftCreate=this->ftCreate;
+ ftAccess=this->ftAccess;
+ ftWrite=this->ftWrite;
+ if(!SetFileTime(hFileDestination, &ftCreate, &ftAccess, &ftWrite))
+ {
+ CloseHandle(hFileDestination);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to set the file time");
+ return false;
+ }
+ CloseHandle(hFileDestination);
+ return true;
+ #else
+ return false;
+ #endif
+ #endif
+ return false;
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/MkPath.h b/plugins/CopyEngine/Ultracopier-Spec/MkPath.h
new file mode 100755
index 0000000..1b3a674
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/MkPath.h
@@ -0,0 +1,100 @@
+/** \file MkPath.h
+\brief Make the path given as queued mkpath
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef MKPATH_H
+#define MKPATH_H
+
+#include <QThread>
+#include <string>
+#include <QSemaphore>
+#include <vector>
+#include <QDir>
+#include <QDateTime>
+
+#ifdef WIDESTRING
+#define INTERNALTYPEPATH std::wstring
+#else
+#define INTERNALTYPEPATH std::string
+#endif
+
+#include "Environment.h"
+
+#ifdef Q_OS_UNIX
+ #include <utime.h>
+ #include <time.h>
+ #include <unistd.h>
+ #include <sys/stat.h>
+#else
+ #ifdef Q_OS_WIN32
+ #include <windows.h>
+ #endif
+#endif
+
+/// \brief Make the path given as queued mkpath
+class MkPath : public QThread
+{
+ Q_OBJECT
+public:
+ explicit MkPath();
+ ~MkPath();
+ /// \brief add path to make
+ void addPath(const INTERNALTYPEPATH& source,const INTERNALTYPEPATH& destination,const ActionType &actionType);
+ void setRightTransfer(const bool doRightTransfer);
+ void setKeepDate(const bool keepDate);
+ void setMkFullPath(const bool mkFullPath);
+signals:
+ void errorOnFolder(const INTERNALTYPEPATH &,const std::string &,const ErrorType &errorType=ErrorType_FolderWithRety) const;
+ void firstFolderFinish();
+ void internalStartAddPath(const INTERNALTYPEPATH& source,const INTERNALTYPEPATH& destination, const ActionType &actionType) const;
+ void internalStartDoThisPath() const;
+ void internalStartSkip() const;
+ void internalStartRetry() const;
+ void debugInformation(const Ultracopier::DebugLevel &level,const std::string &fonction,const std::string &text,const std::string &file,const int &ligne) const;
+public slots:
+ /// \brief skip after creation error
+ void skip();
+ /// \brief retry after creation error
+ void retry();
+private:
+ void run();
+ bool waitAction;
+ bool stopIt;
+ bool skipIt;
+ struct Item
+ {
+ INTERNALTYPEPATH source;
+ INTERNALTYPEPATH destination;
+ ActionType actionType;
+ };
+ std::vector<Item> pathList;
+ void checkIfCanDoTheNext();
+ bool doRightTransfer;
+ bool keepDate;
+ bool mkFullPath;
+ bool doTheDateTransfer;
+ #ifdef Q_OS_UNIX
+ utimbuf butime;
+ #else
+ #ifdef Q_OS_WIN32
+ FILETIME ftCreate, ftAccess, ftWrite;
+ #endif
+ #endif
+ //fonction to edit the file date time
+ bool readFileDateTime(const INTERNALTYPEPATH &source);
+ bool writeFileDateTime(const INTERNALTYPEPATH &destination);
+ static INTERNALTYPEPATH text_slash;
+private slots:
+ void internalDoThisPath();
+ void internalAddPath(const INTERNALTYPEPATH& source, const INTERNALTYPEPATH& destination,const ActionType &actionType);
+ void internalSkip();
+ void internalRetry();
+ bool rmpath(const INTERNALTYPEPATH &dir
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ , const bool &toSync=false
+ #endif
+ );
+};
+
+#endif // MKPATH_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/README.md b/plugins/CopyEngine/Ultracopier-Spec/README.md
new file mode 100755
index 0000000..a15b943
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/README.md
@@ -0,0 +1,3 @@
+# Copy Engine: Ultracopier
+
+This is the default copy engine.
diff --git a/plugins/CopyEngine/Ultracopier-Spec/RenamingRules.cpp b/plugins/CopyEngine/Ultracopier-Spec/RenamingRules.cpp
new file mode 100755
index 0000000..8c0d698
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/RenamingRules.cpp
@@ -0,0 +1,96 @@
+#include "RenamingRules.h"
+#include "ui_RenamingRules.h"
+
+#include <QMessageBox>
+
+RenamingRules::RenamingRules(QWidget *parent) :
+ QDialog(parent),
+ ui(new Ui::RenamingRules)
+{
+ ui->setupUi(this);
+ connectUI();
+ setRenamingRules("","");
+}
+
+RenamingRules::~RenamingRules()
+{
+ delete ui;
+}
+
+void RenamingRules::on_buttonBox_clicked(QAbstractButton *button)
+{
+ if(ui->buttonBox->buttonRole(button)==QDialogButtonBox::RejectRole)
+ reject();
+ if(ui->buttonBox->buttonRole(button)==QDialogButtonBox::ResetRole)
+ {
+ setRenamingRules("","");
+ emit sendNewRenamingRules(firstRenamingRule,otherRenamingRule);
+ }
+}
+
+void RenamingRules::setRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule)
+{
+ disconnectUI();
+ if(firstRenamingRule.find("%name%")==std::string::npos || firstRenamingRule.find("%suffix%")==std::string::npos)
+ firstRenamingRule.clear();
+ if(otherRenamingRule.find("%name%")==std::string::npos || otherRenamingRule.find("%suffix%")==std::string::npos
+ || otherRenamingRule.find("%number%")==std::string::npos)
+ otherRenamingRule.clear();
+
+ this->firstRenamingRule=firstRenamingRule;
+ this->otherRenamingRule=otherRenamingRule;
+
+ if(!firstRenamingRule.empty())
+ ui->firstRenamingRule->setText(QString::fromStdString(firstRenamingRule));
+ else
+ ui->firstRenamingRule->setText(tr("%1 - copy%2").arg(QStringLiteral("%name%")).arg(QStringLiteral("%suffix%")));
+ if(!otherRenamingRule.empty())
+ ui->otherRenamingRule->setText(QString::fromStdString(otherRenamingRule));
+ else
+ ui->otherRenamingRule->setText(tr("%1 - copy (%2)%3").arg(QStringLiteral("%name%")).arg(QStringLiteral("%number%")).arg(QStringLiteral("%suffix%")));
+ connectUI();
+}
+
+void RenamingRules::connectUI()
+{
+ connect(ui->firstRenamingRule,&QLineEdit::editingFinished,this,&RenamingRules::firstRenamingRule_haveChanged);
+ connect(ui->otherRenamingRule,&QLineEdit::editingFinished,this,&RenamingRules::otherRenamingRule_haveChanged);
+}
+
+void RenamingRules::disconnectUI()
+{
+ disconnect(ui->firstRenamingRule,&QLineEdit::editingFinished,this,&RenamingRules::firstRenamingRule_haveChanged);
+ disconnect(ui->otherRenamingRule,&QLineEdit::editingFinished,this,&RenamingRules::otherRenamingRule_haveChanged);
+}
+
+void RenamingRules::firstRenamingRule_haveChanged()
+{
+ QString newValue=ui->firstRenamingRule->text();
+ if(!newValue.contains("%name%") || !newValue.contains("%suffix%"))
+ newValue.clear();
+ if(newValue==tr("%1 - copy%2").arg(QStringLiteral("%name%")).arg(QStringLiteral("%name%")))
+ newValue=QStringLiteral("");
+ if(newValue.toStdString()==firstRenamingRule)
+ return;
+ firstRenamingRule=newValue.toStdString();
+ emit sendNewRenamingRules(firstRenamingRule,otherRenamingRule);
+}
+
+void RenamingRules::otherRenamingRule_haveChanged()
+{
+ QString newValue=ui->otherRenamingRule->text();
+ if(!newValue.contains("%name%") || !newValue.contains("%suffix%") || !newValue.contains("%number%"))
+ newValue.clear();
+ if(newValue==tr("%1 - copy (%2)%3").arg(QStringLiteral("%name%")).arg(QStringLiteral("%number%")).arg(QStringLiteral("%name%")))
+ newValue=QStringLiteral("");
+ if(newValue.toStdString()==otherRenamingRule)
+ return;
+ otherRenamingRule=newValue.toStdString();
+ emit sendNewRenamingRules(firstRenamingRule,otherRenamingRule);
+}
+
+void RenamingRules::newLanguageLoaded()
+{
+ ui->retranslateUi(this);
+ setRenamingRules(firstRenamingRule,otherRenamingRule);
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/RenamingRules.h b/plugins/CopyEngine/Ultracopier-Spec/RenamingRules.h
new file mode 100755
index 0000000..b2e9d02
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/RenamingRules.h
@@ -0,0 +1,34 @@
+#ifndef RENAMINGRULES_H
+#define RENAMINGRULES_H
+
+#include <QDialog>
+#include <QAbstractButton>
+
+namespace Ui {
+class RenamingRules;
+}
+
+/** Define rules for renaming */
+class RenamingRules : public QDialog
+{
+ Q_OBJECT
+public:
+ explicit RenamingRules(QWidget *parent = 0);
+ ~RenamingRules();
+ void setRenamingRules(std::string firstRenamingRule, std::string otherRenamingRule);
+ void newLanguageLoaded();
+private:
+ Ui::RenamingRules *ui;
+ void connectUI();
+ void disconnectUI();
+ std::string firstRenamingRule;
+ std::string otherRenamingRule;
+private slots:
+ void on_buttonBox_clicked(QAbstractButton *button);
+ void firstRenamingRule_haveChanged();
+ void otherRenamingRule_haveChanged();
+signals:
+ void sendNewRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule) const;
+};
+
+#endif // RENAMINGRULES_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/RenamingRules.ui b/plugins/CopyEngine/Ultracopier-Spec/RenamingRules.ui
new file mode 100755
index 0000000..0219249
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/RenamingRules.ui
@@ -0,0 +1,134 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>RenamingRules</class>
+ <widget class="QDialog" name="RenamingRules">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>491</width>
+ <height>293</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Renaming rules</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="spacing">
+ <number>2</number>
+ </property>
+ <property name="leftMargin">
+ <number>2</number>
+ </property>
+ <property name="topMargin">
+ <number>2</number>
+ </property>
+ <property name="rightMargin">
+ <number>2</number>
+ </property>
+ <property name="bottomMargin">
+ <number>2</number>
+ </property>
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>First renaming</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLineEdit" name="firstRenamingRule">
+ <property name="placeholderText">
+ <string extracomment="%name% should not be translated">%name% - copy%suffix%</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>Second renaming</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QLineEdit" name="otherRenamingRule">
+ <property name="placeholderText">
+ <string extracomment="%name%, %number% should not be translated">%name% - copy (%number%)%suffix%</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string extracomment="%name%, %number% should not be translated">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>1</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Close|QDialogButtonBox::RestoreDefaults</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>RenamingRules</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>RenamingRules</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp b/plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp
new file mode 100755
index 0000000..014585d
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp
@@ -0,0 +1,953 @@
+#include "ScanFileOrFolder.h"
+#include "TransferThread.h"
+#include <QtGlobal>
+#include <regex>
+#include "../../../cpp11addition.h"
+
+#ifdef Q_OS_WIN32
+ #ifndef NOMINMAX
+ #define NOMINMAX
+ #endif
+ #include <windows.h>
+#endif
+
+#ifdef WIDESTRING
+std::wstring ScanFileOrFolder::text_slash=L"/";
+std::wstring ScanFileOrFolder::text_antislash=L"\\";
+std::wstring ScanFileOrFolder::text_dot=L".";
+#else
+std::string ScanFileOrFolder::text_slash="/";
+std::string ScanFileOrFolder::text_antislash="\\";
+std::string ScanFileOrFolder::text_dot=".";
+#endif
+
+ScanFileOrFolder::ScanFileOrFolder(const Ultracopier::CopyMode &mode) :
+ moveTheWholeFolder(false),
+ stopIt(false),
+ stopped(false),
+ folderExistsAction(FolderExistsAction::FolderExists_NotSet),
+ fileErrorAction(FileErrorAction::FileError_NotSet),
+ checkDestinationExists(false),
+ copyListOrder(false),
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ rsync(false),
+ #endif
+ mode(Ultracopier::CopyMode::Copy),
+ reloadTheNewFilters(false),
+ haveFilters(false)
+{
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ rsync = false;
+ #endif
+ moveTheWholeFolder = true;
+ stopped = true;
+ stopIt = false;
+ this->mode = mode;
+ folder_isolation = std::regex("^(.*/)?([^/]+)/$");
+ setObjectName(QStringLiteral("ScanFileOrFolder"));
+ /*#ifdef Q_OS_WIN32
+ QString userName;
+ DWORD size=255;
+ WCHAR * userNameW=new WCHAR[size];
+ if(GetUserNameW(userNameW,&size))
+ {
+ userName=QString::fromWCharArray(userNameW,size-1);
+ blackList.push_back(QFileInfo(QStringLiteral("C:/Users/%1/AppData/Roaming/").arg(userName)));
+ }
+ delete userNameW;
+ #endif*/
+}
+
+ScanFileOrFolder::~ScanFileOrFolder()
+{
+ stop();
+ quit();
+ wait();
+}
+
+bool ScanFileOrFolder::isFinished() const
+{
+ return stopped;
+}
+
+void ScanFileOrFolder::addToList(const std::vector<INTERNALTYPEPATH>& sources,const INTERNALTYPEPATH& destination)
+{
+ stopIt=false;
+ this->sources=parseWildcardSources(sources);
+ this->destination=destination;
+ #ifdef WIDESTRING
+ QFileInfo destinationInfo(QString::fromStdWString(this->destination));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"check symblink: "+destinationInfo.absoluteFilePath().toStdString()+", destination: "+TransferThread::internalStringTostring(destination));
+ #ifdef WIDESTRING
+ while(TransferThread::is_symlink(destinationInfo.absoluteFilePath().toStdWString()))
+ #else
+ while(TransferThread::is_symlink(destinationInfo.absoluteFilePath().toStdString()))
+ #endif
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"resolv destination to: "+destinationInfo.symLinkTarget().toStdString());
+ if(QFileInfo(destinationInfo.symLinkTarget()).isAbsolute())
+ this->destination=destinationInfo.symLinkTarget().toStdWString();
+ else
+ this->destination=destinationInfo.absolutePath().toStdWString()+text_slash+destinationInfo.symLinkTarget().toStdWString();
+ destinationInfo.setFile(QString::fromStdWString(this->destination));
+ }
+ if(sources.size()>1 || QFileInfo(QString::fromStdWString(destination)).isDir())
+ /* Disabled because the separator transformation product bug
+ * if(!destination.endsWith(QDir::separator()))
+ this->destination+=QDir::separator();*/
+ if(!stringEndsWith(destination,'/') && !stringEndsWith(destination,'\\'))
+ this->destination+=text_slash;//put unix separator because it's transformed into that's under windows too
+ #else
+ QFileInfo destinationInfo(QString::fromStdString(this->destination));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"check symblink: "+destinationInfo.absoluteFilePath().toStdString());
+ while(destinationInfo.isSymLink())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"resolv destination to: "+destinationInfo.symLinkTarget().toStdString());
+ if(QFileInfo(destinationInfo.symLinkTarget()).isAbsolute())
+ this->destination=destinationInfo.symLinkTarget().toStdString();
+ else
+ this->destination=destinationInfo.absolutePath().toStdString()+text_slash+destinationInfo.symLinkTarget().toStdString();
+ destinationInfo.setFile(QString::fromStdString(this->destination));
+ }
+ if(sources.size()>1 || QFileInfo(QString::fromStdString(destination)).isDir())
+ /* Disabled because the separator transformation product bug
+ * if(!destination.endsWith(QDir::separator()))
+ this->destination+=QDir::separator();*/
+ if(!stringEndsWith(destination,'/') && !stringEndsWith(destination,'\\'))
+ this->destination+=text_slash;//put unix separator because it's transformed into that's under windows too
+ #endif
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"addToList("+stringimplode(sources,";")+","+this->destination+")");
+}
+
+
+std::vector<INTERNALTYPEPATH> ScanFileOrFolder::parseWildcardSources(const std::vector<INTERNALTYPEPATH> &sources) const
+{
+ std::regex splitFolder("[/\\\\]");
+ std::vector<INTERNALTYPEPATH> returnList;
+ unsigned int index=0;
+ while(index<(unsigned int)sources.size())
+ {
+ std::string sourceAt=TransferThread::internalStringTostring(sources.at(index));
+ if(sourceAt.find("*") != std::string::npos)
+ {
+ std::vector<std::string> toParse=stringregexsplit(sourceAt,splitFolder);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"before wildcard parse: "+sourceAt+", toParse: "+stringimplode(toParse,", "));
+ std::vector<std::vector<std::string> > recomposedSource;
+ {
+ std::vector<std::string> t;
+ t.push_back("");
+ recomposedSource.push_back(t);
+ }
+ while(toParse.size()>0)
+ {
+ if(toParse.front().find("*") != std::string::npos)
+ {
+ std::string toParseFirst=toParse.front();
+ if(toParseFirst.empty())
+ toParseFirst=TransferThread::internalStringTostring(text_slash);
+ std::vector<std::vector<std::string> > newRecomposedSource;
+ stringreplaceAll(toParseFirst,"*","[^/\\\\]*");
+ std::regex toResolv=std::regex(toParseFirst);
+ unsigned int index_recomposedSource=0;
+ while(index_recomposedSource<recomposedSource.size())//parse each url part
+ {
+ std::string fileInfo(stringimplode(recomposedSource.at(index_recomposedSource),TransferThread::internalStringTostring(text_slash)));
+ std::vector<TransferThread::dirent_uc> list;
+
+ if(TransferThread::is_dir(fileInfo.c_str()))
+ {
+ if(TransferThread::entryInfoList(TransferThread::stringToInternalString(fileInfo),list))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"list the folder: "+fileInfo+", with the wildcard: "+toParseFirst);
+ unsigned int index_fileList=0;
+ while(index_fileList<list.size())
+ {
+ const std::string &fileName=TransferThread::internalStringTostring(list.at(index_fileList).d_name);
+ if(std::regex_match(fileName,toResolv))
+ {
+ std::vector<std::string> tempList=recomposedSource.at(index_recomposedSource);
+ tempList.push_back(fileName);
+ newRecomposedSource.push_back(tempList);
+ }
+ index_fileList++;
+ }
+ }
+ }
+ index_recomposedSource++;
+ }
+ recomposedSource=newRecomposedSource;
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"add toParse: "+stringimplode(toParse,TransferThread::internalStringTostring(text_slash)));
+ unsigned int index_recomposedSource=0;
+ while(index_recomposedSource<recomposedSource.size())
+ {
+ recomposedSource[index_recomposedSource].push_back(toParse.front());
+ if(!QFileInfo(QString::fromStdString(stringimplode(recomposedSource.at(index_recomposedSource),TransferThread::internalStringTostring(text_slash)))).exists())
+ recomposedSource.erase(recomposedSource.cbegin()+index_recomposedSource);
+ else
+ index_recomposedSource++;
+ }
+ }
+ toParse.erase(toParse.cbegin());
+ }
+ unsigned int index_recomposedSource=0;
+ while(index_recomposedSource<recomposedSource.size())
+ {
+ returnList.push_back(TransferThread::stringToInternalString(stringimplode(recomposedSource.at(index_recomposedSource),TransferThread::internalStringTostring(text_slash))));
+ index_recomposedSource++;
+ }
+ }
+ else
+ returnList.push_back(TransferThread::stringToInternalString(sourceAt));
+ index++;
+ }
+ return returnList;
+}
+
+void ScanFileOrFolder::setFilters(const std::vector<Filters_rules> &include, const std::vector<Filters_rules> &exclude)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ QMutexLocker lock(&filtersMutex);
+ this->include_send=include;
+ this->exclude_send=exclude;
+ reloadTheNewFilters=true;
+ haveFilters=include_send.size()>0 || exclude_send.size()>0;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"haveFilters: "+std::to_string(haveFilters)+", include_send.size(): "+std::to_string(include_send.size())+", exclude_send.size(): "+std::to_string(exclude_send.size()));
+}
+
+//set action if Folder are same or exists
+void ScanFileOrFolder::setFolderExistsAction(const FolderExistsAction &action, const std::string &newName)
+{
+ this->newName=TransferThread::stringToInternalString(newName);
+ folderExistsAction=action;
+ waitOneAction.release();
+}
+
+//set action if error
+void ScanFileOrFolder::setFolderErrorAction(const FileErrorAction &action)
+{
+ fileErrorAction=action;
+ waitOneAction.release();
+}
+
+void ScanFileOrFolder::stop()
+{
+ stopIt=true;
+ waitOneAction.release();
+}
+
+void ScanFileOrFolder::run()
+{
+ stopped=false;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,
+ "start the listing with destination: "+TransferThread::internalStringTostring(destination)+", mode: "+std::to_string(mode));
+ #ifdef Q_OS_UNIX
+ destination=resolvDestination(destination);
+ #endif
+ #ifdef WIDESTRING
+ stringreplaceAll(destination,L"\\",L"/");
+ #else
+ stringreplaceAll(destination,"\\","/");
+ #endif
+ if(stopIt)
+ {
+ stopped=true;
+ return;
+ }
+ if(fileErrorAction==FileError_Skip)
+ {
+ stopped=true;
+ return;
+ }
+ unsigned int sourceIndex=0;
+ while(sourceIndex<sources.size())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"size source to list: "+std::to_string(sourceIndex)+TransferThread::internalStringTostring(text_slash)+std::to_string(sources.size()));
+ if(stopIt)
+ {
+ stopped=true;
+ return;
+ }
+ INTERNALTYPEPATH source=sources.at(sourceIndex);
+ #ifdef WIDESTRING
+ stringreplaceAll(source,L"\\",L"/");
+ #else
+ stringreplaceAll(source,"\\","/");
+ #endif
+ if(TransferThread::is_dir(source))
+ {
+ /* Bad way; when you copy c:\source\folder into d:\destination, you wait it create the folder d:\destination\folder
+ //listFolder(source.absoluteFilePath()+QDir::separator(),destination);
+ listFolder(source.absoluteFilePath()+text_slash,destination);//put unix separator because it's transformed into that's under windows too
+ */
+ //put unix separator because it's transformed into that's under windows too
+ INTERNALTYPEPATH tempString=destination;
+ if(!stringEndsWith(tempString,text_slash) && !stringEndsWith(tempString,text_antislash))
+ tempString+=text_slash;
+ tempString+=TransferThread::resolvedName(source);
+ if(moveTheWholeFolder && mode==Ultracopier::Move && !QFileInfo(
+ #ifdef WIDESTRING
+ QString::fromStdWString(tempString)
+ #else
+ QString::fromStdString(tempString)
+ #endif
+ ).exists() &&
+ driveManagement.isSameDrive(TransferThread::internalStringTostring(source),TransferThread::internalStringTostring(tempString)))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"tempString: move and not exists: "+TransferThread::internalStringTostring(tempString));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"do real move: "+TransferThread::internalStringTostring(source)+" to "+TransferThread::internalStringTostring(tempString));
+ emit addToRealMove(source,tempString);
+ }
+ else
+ {
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"tempString: "+tempString+" normal listing, blacklist size: "+std::to_string(blackList.size()));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"tempString: "+TransferThread::internalStringTostring(tempString)+" normal listing");
+ if(stringEndsWith(source,'/'))
+ source.erase(source.end()-1);
+ if(stringEndsWith(tempString,'/'))
+ tempString.erase(tempString.end()-1);
+ listFolder(source,tempString);
+ }
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+TransferThread::internalStringTostring(source)+" is file or symblink");
+ if(stringEndsWith(destination,'/') || stringEndsWith(destination,'\\'))
+ emit fileTransfer(source,destination+TransferThread::resolvedName(source),mode);
+ else
+ emit fileTransfer(source,destination+text_slash+TransferThread::resolvedName(source),mode);
+ }
+ sourceIndex++;
+ }
+ stopped=true;
+ if(stopIt)
+ return;
+ emit finishedTheListing();
+}
+
+#ifdef Q_OS_UNIX
+INTERNALTYPEPATH ScanFileOrFolder::resolvDestination(const INTERNALTYPEPATH &destination)
+{
+ INTERNALTYPEPATH temp(destination);
+ char buf[PATH_MAX];
+ ssize_t nbytes=0;
+ nbytes=readlink(TransferThread::internalStringTostring(destination).c_str(), buf, sizeof(buf));
+ while(nbytes!=-1) {
+ temp=FSabsolutePath(temp);
+ if(!stringEndsWith(destination,'/')
+ #ifdef Q_OS_WIN32
+ && !stringEndsWith(destination,'\\')
+ #endif
+ )
+ temp+=TransferThread::stringToInternalString("/");
+ temp+=TransferThread::stringToInternalString(std::string(buf,nbytes));
+ /// \todo change for pure c++ code
+ #ifdef WIDESTRING
+ temp=QFileInfo(QString::fromStdWString(temp)).absoluteFilePath().toStdWString();
+ #else
+ temp=QFileInfo(QString::fromStdString(temp)).absoluteFilePath().toStdString();
+ #endif
+ nbytes=readlink(TransferThread::internalStringTostring(temp).c_str(), buf, sizeof(buf));
+ }
+ return temp;
+ /*do
+ {
+ fileErrorAction=FileError_NotSet;
+ if(isBlackListed(destination))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"isBlackListed: "+destination);
+ emit errorOnFolder(destination,tr("Blacklisted folder").toStdString(),ErrorType_Folder);
+ waitOneAction.acquire();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"actionNum: "+std::to_string(fileErrorAction));
+ }
+ } while(fileErrorAction==FileError_Retry || fileErrorAction==FileError_PutToEndOfTheList);
+ return newDestination;*/
+}
+#endif
+
+/*bool ScanFileOrFolder::isBlackListed(const QFileInfo &destination)
+{
+ int index=0;
+ int size=blackList.size();
+ while(index<size)
+ {
+ if(stringStartWith(destination,blackList.at(index)))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,destination+" start with: "+blackList.at(index));
+ return true;
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,destination+" not start with: "+blackList.at(index));
+ index++;
+ }
+ return false;
+}*/
+
+void ScanFileOrFolder::listFolder(INTERNALTYPEPATH source,INTERNALTYPEPATH destination)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+TransferThread::internalStringTostring(source)+
+ ", destination: "+TransferThread::internalStringTostring(destination)
+ );
+ if(stopIt)
+ return;
+ #ifdef Q_OS_UNIX
+ destination=resolvDestination(destination);
+ #endif
+ if(stopIt)
+ return;
+ if(fileErrorAction==FileError_Skip)
+ return;
+ //if is same
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ #ifdef WIDESTRING
+ if(destination.find(L"//") != std::wstring::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path destination contains error");
+ if(source.find(L"//") != std::wstring::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path source contains error");
+ #else
+ if(destination.find("//") != std::string::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path destination contains error");
+ if(source.find("//") != std::string::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path source contains error");
+ #endif
+ #endif
+ if(source==destination)
+ {
+ emit folderAlreadyExists(source,destination,true);
+ waitOneAction.acquire();
+ INTERNALTYPEPATH destinationSuffixPath;
+ switch(folderExistsAction)
+ {
+ case FolderExists_Merge:
+ break;
+ case FolderExists_Skip:
+ return;
+ break;
+ case FolderExists_Rename:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination before rename: "+TransferThread::internalStringTostring(destination));
+ if(newName.empty())
+ {
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"pattern: "+folder_isolation.str());
+ //resolv the new name
+ destinationSuffixPath=TransferThread::resolvedName(destination);
+ int num=1;
+ do
+ {
+ if(num==1)
+ {
+ if(firstRenamingRule.empty())
+ #ifdef WIDESTRING
+ destinationSuffixPath=tr("%1 - copy").arg(QString::fromStdWString(TransferThread::resolvedName(destination))).toStdWString();
+ #else
+ destinationSuffixPath=tr("%1 - copy").arg(QString::fromStdString(TransferThread::resolvedName(destination))).toStdString();
+ #endif
+ else
+ destinationSuffixPath=TransferThread::stringToInternalString(firstRenamingRule);
+ }
+ else
+ {
+ if(otherRenamingRule.empty())
+ #ifdef WIDESTRING
+ destinationSuffixPath=tr("%1 - copy (%2)").arg(QString::fromStdWString(TransferThread::resolvedName(destination))).arg(num).toStdWString();
+ #else
+ destinationSuffixPath=tr("%1 - copy (%2)").arg(QString::fromStdString(TransferThread::resolvedName(destination))).arg(num).toStdString();
+ #endif
+ else
+ {
+ destinationSuffixPath=TransferThread::stringToInternalString(otherRenamingRule);
+ #ifdef WIDESTRING
+ stringreplaceAll(destinationSuffixPath,L"%number%",std::to_wstring(num));
+ #else
+ stringreplaceAll(destinationSuffixPath,"%number%",std::to_string(num));
+ #endif
+ }
+ }
+ #ifdef WIDESTRING
+ stringreplaceAll(destinationSuffixPath,L"%name%",TransferThread::resolvedName(destination));
+ #else
+ stringreplaceAll(destinationSuffixPath,"%name%",TransferThread::resolvedName(destination));
+ #endif
+ num++;
+ {
+ std::string::size_type n=destination.rfind('/');
+ if(n == std::string::npos)
+ n=destination.rfind('.');
+ else
+ n=destination.rfind(n,'.');
+ if(n == std::string::npos)
+ {
+ destination=FSabsolutePath(destination);
+ if(!stringEndsWith(destination,'/')
+ #ifdef Q_OS_WIN32
+ && !stringEndsWith(destination,'\\')
+ #endif
+ )
+ destination+=text_slash;
+ destination+=destinationSuffixPath;
+ }
+ else
+ {
+ destination=FSabsolutePath(destination);
+ if(!stringEndsWith(destination,'/')
+ #ifdef Q_OS_WIN32
+ && !stringEndsWith(destination,'\\')
+ #endif
+ )
+ destination+=text_slash;
+ destination+=destinationSuffixPath+TransferThread::stringToInternalString(".")+destination.substr(n);
+ }
+ }
+ }
+ while(TransferThread::exists(destination));
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"use new name: "+TransferThread::internalStringTostring(newName));
+ destinationSuffixPath = newName;
+ }
+ destination=FSabsolutePath(destination);
+ if(!stringEndsWith(destination,'/')
+ #ifdef Q_OS_WIN32
+ && !stringEndsWith(destination,'\\')
+ #endif
+ )
+ destination+=text_slash;
+ destination+=destinationSuffixPath;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination after rename: "+TransferThread::internalStringTostring(destination));
+ break;
+ default:
+ return;
+ break;
+ }
+ }
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ #ifdef WIDESTRING
+ if(destination.find(L"//") != std::wstring::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path destination contains error");
+ if(source.find(L"//") != std::wstring::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path source contains error");
+ #else
+ if(destination.find("//") != std::string::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path destination contains error");
+ if(source.find("//") != std::string::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path source contains error");
+ #endif
+ #endif
+ //check if destination exists
+ if(checkDestinationExists)
+ {
+ if(TransferThread::exists(destination))
+ {
+ emit folderAlreadyExists(source,destination,false);
+ waitOneAction.acquire();
+ INTERNALTYPEPATH destinationSuffixPath;
+ switch(folderExistsAction)
+ {
+ case FolderExists_Merge:
+ break;
+ case FolderExists_Skip:
+ return;
+ break;
+ case FolderExists_Rename:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination before rename: "+TransferThread::internalStringTostring(destination));
+ if(newName.empty())
+ {
+ //resolv the new name
+ int num=1;
+ INTERNALTYPEPATH tempdestination;
+ do
+ {
+ if(num==1)
+ {
+ if(firstRenamingRule.empty())
+ #ifdef WIDESTRING
+ destinationSuffixPath=tr("%name% - copy").toStdWString();
+ #else
+ destinationSuffixPath=tr("%name% - copy").toStdString();
+ #endif
+ else
+ destinationSuffixPath=TransferThread::stringToInternalString(firstRenamingRule);
+ }
+ else
+ {
+ if(otherRenamingRule.empty())
+ #ifdef WIDESTRING
+ destinationSuffixPath=tr("%name% - copy (%number%)").toStdWString();
+ #else
+ destinationSuffixPath=tr("%name% - copy (%number%)").toStdString();
+ #endif
+ else
+ destinationSuffixPath=TransferThread::stringToInternalString(otherRenamingRule);
+ #ifdef WIDESTRING
+ stringreplaceAll(destinationSuffixPath,L"%number%",std::to_wstring(num));
+ #else
+ stringreplaceAll(destinationSuffixPath,"%number%",std::to_string(num));
+ #endif
+ }
+ #ifdef WIDESTRING
+ stringreplaceAll(destinationSuffixPath,L"%name%",TransferThread::resolvedName(destination));
+ #else
+ stringreplaceAll(destinationSuffixPath,"%name%",TransferThread::resolvedName(destination));
+ #endif
+ tempdestination=FSabsolutePath(destination);
+ if(!stringEndsWith(destination,'/')
+ #ifdef Q_OS_WIN32
+ && !stringEndsWith(destination,'\\')
+ #endif
+ )
+ tempdestination+=text_slash;
+ tempdestination+=destinationSuffixPath;
+ num++;
+ }
+ while(TransferThread::exists(tempdestination));
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"use new name: "+TransferThread::internalStringTostring(newName));
+ destinationSuffixPath = newName;
+ }
+ {
+ std::string::size_type n=destination.rfind('/');
+ if(n == std::string::npos)
+ n=destination.rfind('.');
+ else
+ n=destination.rfind(n,'.');
+ if(n == std::string::npos)
+ {
+ destination=FSabsolutePath(destination);
+ if(!stringEndsWith(destination,'/')
+ #ifdef Q_OS_WIN32
+ && !stringEndsWith(destination,'\\')
+ #endif
+ )
+ destination+=text_slash;
+ destination+=destinationSuffixPath;
+ }
+ else
+ {
+ destination=FSabsolutePath(destination);
+ if(!stringEndsWith(destination,'/')
+ #ifdef Q_OS_WIN32
+ && !stringEndsWith(destination,'\\')
+ #endif
+ )
+ destination+=text_slash;
+ destination+=destinationSuffixPath+
+ TransferThread::stringToInternalString(".")+destination.substr(n);
+ }
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"destination after rename: "+TransferThread::internalStringTostring(destination));
+ break;
+ default:
+ return;
+ break;
+ }
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"checkDestinationExists but stat failed");
+ }
+ if(stopIt)
+ return;
+ std::vector<TransferThread::dirent_uc> entryList;
+ do
+ {
+ fileErrorAction=FileError_NotSet;
+ if(!TransferThread::entryInfoList(source,entryList))
+ {
+ #ifdef Q_OS_UNIX
+ int saveerrno=errno;
+ const std::string &errorStr=strerror(saveerrno);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Problem with the folder "+TransferThread::internalStringTostring(source)+" to read: "+std::to_string(saveerrno));
+ emit errorOnFolder(source,tr("Problem with folder read").toStdString()+": "+errorStr);
+ #else
+ const std::string &errorStr=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Problem with the folder "+TransferThread::internalStringTostring(source)+" to read: "+errorStr);
+ emit errorOnFolder(source,tr("Problem with folder read").toStdString()+": "+errorStr);
+ #endif
+ waitOneAction.acquire();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"actionNum: "+std::to_string(fileErrorAction));
+ }
+ } while(fileErrorAction==FileError_Retry);
+
+ if(copyListOrder)
+ std::sort(entryList.begin(), entryList.end(), [](TransferThread::dirent_uc a, TransferThread::dirent_uc b) {
+ return a.d_name<b.d_name;
+ });
+ if(stopIt)
+ return;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ #ifdef WIDESTRING
+ if(destination.find(L"//") != std::wstring::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path destination contains error");
+ if(source.find(L"//") != std::wstring::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path source contains error");
+ #else
+ if(destination.find("//") != std::string::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path destination contains error");
+ if(source.find("//") != std::string::npos)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"path source contains error");
+ #endif
+ #endif
+ const unsigned int sizeEntryList=entryList.size();
+ emit newFolderListing(TransferThread::internalStringTostring(source));
+ if(mode!=Ultracopier::Move)
+ emit addToMkPath(source,destination,sizeEntryList);
+ for(unsigned int index=0;index<sizeEntryList;++index)
+ {
+ const TransferThread::dirent_uc &fileInfo=entryList.at(index);
+ if(stopIt)
+ return;
+ if(haveFilters)
+ {
+ if(reloadTheNewFilters)
+ {
+ QMutexLocker lock(&filtersMutex);
+ QCoreApplication::processEvents(QEventLoop::AllEvents);
+ reloadTheNewFilters=false;
+ this->include=this->include_send;
+ this->exclude=this->exclude_send;
+ }
+ const INTERNALTYPEPATH &fileName=fileInfo.d_name;
+ if(fileInfo.isFolder)
+ {
+ bool excluded=false,included=(include.size()==0);
+ unsigned int filters_index=0;
+ while(filters_index<exclude.size())
+ {
+ if(exclude.at(filters_index).apply_on==ApplyOn_folder || exclude.at(filters_index).apply_on==ApplyOn_fileAndFolder)
+ {
+ if(std::regex_match(TransferThread::internalStringTostring(fileName),exclude.at(filters_index).regex))
+ {
+ excluded=true;
+ break;
+ }
+ }
+ filters_index++;
+ }
+ if(excluded)
+ {}
+ else
+ {
+ filters_index=0;
+ while(filters_index<include.size())
+ {
+ if(include.at(filters_index).apply_on==ApplyOn_folder || include.at(filters_index).apply_on==ApplyOn_fileAndFolder)
+ {
+ if(std::regex_match(TransferThread::internalStringTostring(fileName),include.at(filters_index).regex))
+ {
+ included=true;
+ break;
+ }
+ }
+ filters_index++;
+ }
+ if(!included)
+ {}
+ else
+ {
+ INTERNALTYPEPATH fullSource=source;
+ if(!stringEndsWith(fullSource,'/'))
+ fullSource+='/';
+ fullSource+=fileName;
+ INTERNALTYPEPATH fullDestination=destination;
+ if(!stringEndsWith(fullDestination,'/'))
+ fullDestination+='/';
+ fullDestination+=fileName;
+ listFolder(fullSource,fullDestination);
+ }
+ }
+ }
+ else
+ {
+ bool excluded=false,included=(include.size()==0);
+ unsigned int filters_index=0;
+ while(filters_index<exclude.size())
+ {
+ if(exclude.at(filters_index).apply_on==ApplyOn_file || exclude.at(filters_index).apply_on==ApplyOn_fileAndFolder)
+ {
+ if(std::regex_match(TransferThread::internalStringTostring(fileName),exclude.at(filters_index).regex))
+ {
+ excluded=true;
+ break;
+ }
+ }
+ filters_index++;
+ }
+ if(excluded)
+ {}
+ else
+ {
+ filters_index=0;
+ while(filters_index<include.size())
+ {
+ if(include.at(filters_index).apply_on==ApplyOn_file || include.at(filters_index).apply_on==ApplyOn_fileAndFolder)
+ {
+ if(std::regex_match(TransferThread::internalStringTostring(fileName),include.at(filters_index).regex))
+ {
+ included=true;
+ break;
+ }
+ }
+ filters_index++;
+ }
+ if(!included)
+ {}
+ else
+ {
+ INTERNALTYPEPATH fullSource=source;
+ if(!stringEndsWith(fullSource,'/'))
+ fullSource+='/';
+ fullSource+=fileName;
+ #ifndef ULTRACOPIER_PLUGIN_RSYNC
+ #ifdef Q_OS_WIN32
+ emit fileTransferWithInode(fullSource,destination+TransferThread::stringToInternalString("/")+fileName,mode,fileInfo);
+ #else
+ emit fileTransfer(fullSource,destination+TransferThread::stringToInternalString("/")+fileName,mode);
+ #endif
+ #else
+ {
+ bool sendToTransfer=false;
+ if(!rsync)
+ sendToTransfer=true;
+ else if(!QFile::exists(destination.absoluteFilePath()+"/"+fileInfo.fileName()))
+ sendToTransfer=true;
+ else if(fileInfo.lastModified()!=QFileInfo(destination.absoluteFilePath()+"/"+fileInfo.fileName()).lastModified())
+ sendToTransfer=true;
+ if(sendToTransfer)
+ #ifdef Q_OS_WIN32
+ emit fileTransferWithInode(fileInfo.absoluteFilePath(),destination.absoluteFilePath()+"/"+fileInfo.fileName(),mode,fileInfo);
+ #else
+ emit fileTransfer(fileInfo.absoluteFilePath(),destination.absoluteFilePath()+"/"+fileInfo.fileName(),mode);
+ #endif
+ }
+ #endif
+ }
+ }
+ }
+ }
+ else
+ {
+ const INTERNALTYPEPATH fileName(fileInfo.d_name);
+ if(fileInfo.isFolder)//possible wait time here
+ {
+ //listFolder(source,destination,suffixPath+fileInfo.fileName()+QDir::separator());
+ INTERNALTYPEPATH fullSource=source;
+ if(!stringEndsWith(fullSource,'/'))
+ fullSource+='/';
+ fullSource+=fileName;
+ INTERNALTYPEPATH fullDestination=destination;
+ if(!stringEndsWith(fullDestination,'/'))
+ fullDestination+='/';
+ fullDestination+=fileName;
+ listFolder(fullSource,fullDestination);
+ }
+ else
+ {
+ INTERNALTYPEPATH fullSource=source;
+ if(!stringEndsWith(fullSource,'/'))
+ fullSource+='/';
+ fullSource+=fileName;
+ #ifndef ULTRACOPIER_PLUGIN_RSYNC
+ #ifdef Q_OS_WIN32
+ emit fileTransferWithInode(fullSource,destination+TransferThread::stringToInternalString("/")+fileName,mode,fileInfo);
+ #else
+ emit fileTransfer(fullSource,destination+TransferThread::stringToInternalString("/")+fileName,mode);
+ #endif
+ #else
+ {
+ bool sendToTransfer=false;
+ if(!rsync)
+ sendToTransfer=true;
+ else if(!QFile::exists(destination.absoluteFilePath()+"/"+fileInfo.fileName()))
+ sendToTransfer=true;
+ else if(fileInfo.lastModified()!=QFileInfo(destination.absoluteFilePath()+"/"+fileInfo.fileName()).lastModified())
+ sendToTransfer=true;
+ if(sendToTransfer)
+ #ifdef Q_OS_WIN32
+ emit fileTransferWithInode(fileInfo.absoluteFilePath(),destination.absoluteFilePath()+"/"+fileInfo.fileName(),mode,fileInfo);
+ #else
+ emit fileTransfer(fileInfo.absoluteFilePath(),destination.absoluteFilePath()+"/"+fileInfo.fileName(),mode);
+ #endif
+ }
+ #endif
+ }
+ }
+ }
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ if(rsync)
+ {
+ //check the reverse path here
+ QFileInfoList entryListDestination;
+ if(copyListOrder)
+ entryListDestination=QDir(destination.absoluteFilePath()).entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System,QDir::DirsFirst|QDir::Name|QDir::IgnoreCase);//possible wait time here
+ else
+ entryListDestination=QDir(destination.absoluteFilePath()).entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System);//possible wait time here
+ int sizeEntryListDestination=entryListDestination.size();
+ int index=0;
+ for (int indexDestination=0;indexDestination<sizeEntryListDestination;++indexDestination)
+ {
+ index=0;
+ while(index<sizeEntryList)
+ {
+ if(entryListDestination.at(indexDestination).fileName()==entryList.at(index).fileName())
+ break;
+ index++;
+ }
+ if(index==sizeEntryList)
+ {
+ //then not found, need be remove
+ emit addToRmForRsync(entryListDestination.at(indexDestination));
+ }
+ }
+ return;
+ }
+ #endif
+ if(mode==Ultracopier::Move)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+TransferThread::internalStringTostring(source)+", sizeEntryList: "+std::to_string(sizeEntryList));
+ emit addToMovePath(source,destination,sizeEntryList);
+ }
+ else// if(keepDate or keep permition, perfer alwasy send it)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"source: "+TransferThread::internalStringTostring(source)+", sizeEntryList: "+std::to_string(sizeEntryList));
+ emit addToKeepAttributePath(source,destination,sizeEntryList);
+ }
+}
+
+//set if need check if the destination exists
+void ScanFileOrFolder::setCheckDestinationFolderExists(const bool checkDestinationFolderExists)
+{
+ this->checkDestinationExists=checkDestinationFolderExists;
+}
+
+void ScanFileOrFolder::setRenamingRules(const std::string &firstRenamingRule, const std::string &otherRenamingRule)
+{
+ this->firstRenamingRule=firstRenamingRule;
+ this->otherRenamingRule=otherRenamingRule;
+}
+
+void ScanFileOrFolder::setMoveTheWholeFolder(const bool &moveTheWholeFolder)
+{
+ this->moveTheWholeFolder=moveTheWholeFolder;
+}
+
+void ScanFileOrFolder::setFollowTheStrictOrder(const bool &order)
+{
+ this->copyListOrder=order;
+}
+
+#ifdef ULTRACOPIER_PLUGIN_RSYNC
+/// \brief set rsync
+void ScanFileOrFolder::setRsync(const bool rsync)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"set rsync: "+std::to_string(rsync));
+ this->rsync=rsync;
+}
+#endif
+
+void ScanFileOrFolder::set_updateMount()
+{
+ driveManagement.tryUpdate();
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.h b/plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.h
new file mode 100755
index 0000000..f74d355
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.h
@@ -0,0 +1,118 @@
+/** \file scanFileOrFolder.h
+\brief Thread changed to list recursively the folder
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include <QThread>
+#include <QFileInfo>
+#include <QDir>
+#include <QSemaphore>
+#include <QEventLoop>
+#include <QCoreApplication>
+#include <QMutexLocker>
+#include <regex>
+#include <string>
+#include <vector>
+
+#include "Environment.h"
+#include "DriveManagement.h"
+#include "TransferThread.h"
+
+#ifndef SCANFILEORFOLDER_H
+#define SCANFILEORFOLDER_H
+
+#ifdef WIDESTRING
+#define INTERNALTYPEPATH std::wstring
+#else
+#define INTERNALTYPEPATH std::string
+#endif
+
+/// \brief Thread changed to list recursively the folder
+class ScanFileOrFolder : public QThread
+{
+ Q_OBJECT
+public:
+ explicit ScanFileOrFolder(const Ultracopier::CopyMode &mode);
+ ~ScanFileOrFolder();
+ /// \brief to the a folder listing
+ void stop();
+ /// \brief to get if is finished
+ bool isFinished() const;
+ /// \brief set action if Folder are same or exists
+ void setFolderExistsAction(const FolderExistsAction &action, const std::string &newName=std::string());
+ /// \brief set action if error
+ void setFolderErrorAction(const FileErrorAction &action);
+ /// \brief set if need check if the destination exists
+ void setCheckDestinationFolderExists(const bool checkDestinationFolderExists);
+ void setRenamingRules(const std::string &firstRenamingRule,const std::string &otherRenamingRule);
+ void setMoveTheWholeFolder(const bool &moveTheWholeFolder);
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ void setRsync(const bool rsync);
+ #endif
+signals:
+ void fileTransfer(const INTERNALTYPEPATH &source,const INTERNALTYPEPATH &destination,const Ultracopier::CopyMode &mode) const;
+ void fileTransferWithInode(const INTERNALTYPEPATH &source,const INTERNALTYPEPATH &destination,const Ultracopier::CopyMode &mode,const TransferThread::dirent_uc &inode) const;
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,const std::string &fonction,const std::string &text,const std::string &file,const int &ligne) const;
+ void folderAlreadyExists(const INTERNALTYPEPATH &source,const INTERNALTYPEPATH &destination,const bool &isSame) const;
+ void errorOnFolder(const INTERNALTYPEPATH &fileInfo,const std::string &errorString,const ErrorType &errorType=ErrorType_FolderWithRety) const;
+ void finishedTheListing() const;
+
+ void newFolderListing(const std::string &path) const;
+ void addToMkPath(const INTERNALTYPEPATH& source,const INTERNALTYPEPATH& destination, const int& inode) const;
+ void addToMovePath(const INTERNALTYPEPATH& source,const INTERNALTYPEPATH& destination, const int& inodeToRemove) const;
+ void addToKeepAttributePath(const INTERNALTYPEPATH& source,const INTERNALTYPEPATH& destination, const int& inodeToRemove) const;
+ void addToRealMove(const INTERNALTYPEPATH& source,const INTERNALTYPEPATH& destination) const;
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ void addToRmForRsync(const INTERNALTYPEPATH& destination) const;
+ #endif
+public slots:
+ void addToList(const std::vector<INTERNALTYPEPATH>& sources,const INTERNALTYPEPATH& destination);
+ void setFilters(const std::vector<Filters_rules> &include,const std::vector<Filters_rules> &exclude);
+ void setFollowTheStrictOrder(const bool &order);
+ void set_updateMount();
+protected:
+ void run();
+private:
+ DriveManagement driveManagement;
+ bool moveTheWholeFolder;
+ std::vector<INTERNALTYPEPATH> sources;
+ INTERNALTYPEPATH destination;
+ volatile bool stopIt;
+ void listFolder(INTERNALTYPEPATH source, INTERNALTYPEPATH destination);
+ #ifdef Q_OS_UNIX
+ INTERNALTYPEPATH resolvDestination(const INTERNALTYPEPATH &destination);
+ #endif
+ volatile bool stopped;
+ QSemaphore waitOneAction;
+ FolderExistsAction folderExistsAction;
+ FileErrorAction fileErrorAction;
+ volatile bool checkDestinationExists;
+ INTERNALTYPEPATH newName;
+ bool copyListOrder;
+ std::regex folder_isolation;
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ bool rsync;
+ #endif
+ Ultracopier::CopyMode mode;
+ std::vector<Filters_rules> include,exclude;
+ std::vector<Filters_rules> include_send,exclude_send;
+ bool reloadTheNewFilters;
+ bool haveFilters;
+ QMutex filtersMutex;
+ std::string firstRenamingRule;
+ std::string otherRenamingRule;
+ //std::vector<std::string> blackList;
+ /** Parse the multiple wildcard source, it allow resolv multiple wildcard with Qt into their path
+ * The string: /toto/f*a/yy*a/toto.mp3
+ * Will give: /toto/f1a/yy*a/toto.mp3, /toto/f2a/yy*a/toto.mp3
+ * Will give: /toto/f2a/yy1a/toto.mp3, /toto/f2a/yy2a/toto.mp3
+ */
+ std::vector<INTERNALTYPEPATH> parseWildcardSources(const std::vector<INTERNALTYPEPATH> &sources) const;
+
+ static INTERNALTYPEPATH text_slash;
+ static INTERNALTYPEPATH text_antislash;
+ static INTERNALTYPEPATH text_dot;
+};
+
+#endif // SCANFILEORFOLDER_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition.h b/plugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition.h
new file mode 100755
index 0000000..c1758f4
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition.h
@@ -0,0 +1 @@
+#include "../../../StructEnumDefinition.h"
diff --git a/plugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition_CopyEngine.h b/plugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition_CopyEngine.h
new file mode 100755
index 0000000..5898e5a
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition_CopyEngine.h
@@ -0,0 +1,118 @@
+/** \file StructEnumDefinition_CopyEngine.h
+\brief Define the structure and enumeration used in the copy engine
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include <string>
+#include <regex>
+
+#ifndef STRUCTDEF_COPYENGINE_H
+#define STRUCTDEF_COPYENGINE_H
+
+/// \brief Define action if file exists
+enum FileExistsAction
+{
+ FileExists_NotSet=0,
+ FileExists_Cancel=1,
+ FileExists_Skip=2,
+ FileExists_Overwrite=3,
+ FileExists_OverwriteIfNotSameMdate=4,
+ FileExists_OverwriteIfNewer=5,
+ FileExists_OverwriteIfOlder=6,
+ FileExists_OverwriteIfNotSameSize=7,
+ FileExists_OverwriteIfNotSameSizeAndDate=8,
+ FileExists_Rename=9
+};
+
+/// \brief Define action if file error
+enum FileErrorAction
+{
+ FileError_NotSet=1,
+ FileError_Cancel=2,
+ FileError_Skip=3,
+ FileError_Retry=4,
+ FileError_PutToEndOfTheList=5
+};
+
+/// \brief to have the transfer status
+enum TransferStat
+{
+ TransferStat_Idle=0,
+ TransferStat_PreOperation=1,
+ TransferStat_WaitForTheTransfer=2,
+ TransferStat_Transfer=3,
+ TransferStat_PostTransfer=5,
+ TransferStat_PostOperation=6
+};
+
+/// \brief Define overwrite mode
+/*enum OverwriteMode
+{
+ OverwriteMode_None,
+ OverwriteMode_Overwrite,
+ OverwriteMode_OverwriteIfNewer,
+ OverwriteMode_OverwriteIfNotSameModificationDate
+};*/
+
+/// \brief Define action if file exists
+enum FolderExistsAction
+{
+ FolderExists_NotSet=0,
+ FolderExists_Cancel=1,
+ FolderExists_Merge=2,
+ FolderExists_Skip=3,
+ FolderExists_Rename=4
+};
+
+enum ErrorType
+{
+ ErrorType_Normal=0,
+ ErrorType_Folder=1,
+ ErrorType_FolderWithRety=2,
+ ErrorType_Rights=3
+};
+
+enum SearchType
+{
+ SearchType_rawText=0,
+ SearchType_simpleRegex=1,
+ SearchType_perlRegex=2
+};
+
+enum ApplyOn
+{
+ ApplyOn_file=0,
+ ApplyOn_fileAndFolder=1,
+ ApplyOn_folder=2
+};
+
+/** to store into different way the filter rules to be exported */
+struct Filters_rules
+{
+ std::string search_text;
+ SearchType search_type;
+ ApplyOn apply_on;
+ bool need_match_all;
+ std::regex regex;
+};
+
+/// \brief get action type
+enum ActionType
+{
+ ActionType_MkPath=1,
+ ActionType_MovePath=2,
+ ActionType_RealMove=3,
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ ActionType_RmSync=4,
+ #endif
+ ActionType_SyncDate=5
+};
+
+struct Diskspace
+{
+ std::string drive;
+ uint64_t requiredSpace;
+ uint64_t freeSpace;
+};
+
+#endif // STRUCTDEF_COPYENGINE_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp b/plugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp
new file mode 100755
index 0000000..9cbad5a
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp
@@ -0,0 +1,1547 @@
+//presume bug linked as multple paralelle inode to resume after "overwrite"
+//then do overwrite node function to not re-set the file name
+
+#include "TransferThread.h"
+#include <string>
+#include <dirent.h>
+#include <limits.h>
+#ifdef WIDESTRING
+#include <locale>
+//#include <codecvt>
+#endif
+
+#ifdef Q_OS_WIN32
+#include <accctrl.h>
+#include <aclapi.h>
+#endif
+
+#include "../../../cpp11addition.h"
+
+TransferThread::TransferThread() :
+ mode(Ultracopier::CopyMode::Copy),
+ transfer_stat (TransferStat_Idle),
+ doRightTransfer (false),
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ rsync (false),
+ #endif
+ keepDate (false),
+ mkFullPath (false),
+ stopIt (false),
+ fileExistsAction (FileExists_NotSet),
+ alwaysDoFileExistsAction (FileExists_NotSet),
+ needSkip (false),
+ needRemove (false),
+ deletePartiallyTransferredFiles (true),
+ renameTheOriginalDestination (false),
+ writeError (false),
+ readError (false),
+ havePermission (false),
+ haveTransferTime (false)
+{
+ id=0;
+ renameRegex=std::regex("^(.*)(\\.[a-zA-Z0-9]+)$");
+ #ifdef Q_OS_WIN32
+ regRead=std::regex("^[a-zA-Z]:");
+ #endif
+ transferSize = 0;//external set by ListThread
+
+ #ifndef Q_OS_UNIX
+ PSecurityD=NULL;
+ dacl=NULL;
+ #endif
+ #ifdef Q_OS_Win32
+ stopItWin=0;
+ #endif
+ //if not QThread
+ run();
+}
+
+TransferThread::~TransferThread()
+{
+ #ifdef Q_OS_WIN32
+ stopItWin=1;
+ #endif
+ stopIt=true;
+ //else cash without this disconnect
+ //disconnect(&readThread);
+ //disconnect(&writeThread);
+ #ifndef Q_OS_UNIX
+ if(PSecurityD!=NULL)
+ {
+ free(PSecurityD);
+ PSecurityD=NULL;
+ }
+ if(dacl!=NULL)
+ {
+ //free(dacl);
+ dacl=NULL;
+ }
+ #endif
+}
+
+void TransferThread::run()
+{
+ moveToThread(this);
+
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+QStringLiteral("] start: ")+QString::number((qint64)QThread::currentThreadId())));
+ transfer_stat = TransferStat_Idle;
+ stopIt = false;
+ fileExistsAction = FileExists_NotSet;
+ alwaysDoFileExistsAction= FileExists_NotSet;
+
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(!connect(&driveManagement,&DriveManagement::debugInformation,this, &TransferThread::debugInformation, Qt::QueuedConnection))
+ abort();
+ #endif
+}
+
+TransferStat TransferThread::getStat() const
+{
+ return transfer_stat;
+}
+
+#ifdef WIDESTRING
+INTERNALTYPEPATH TransferThread::stringToInternalString(const std::string& utf8)
+{
+ /* buggy on MXE
+ std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> converter;
+ return converter.from_bytes(utf8);*/
+ return QString::fromUtf8(utf8.data(),utf8.size()).toStdWString();
+ //return widen(utf8);
+}
+
+std::string TransferThread::internalStringTostring(const INTERNALTYPEPATH& utf16)
+{
+ /* buggy on MXE
+ std::wstring_convert<std::codecvt_utf8<wchar_t>> conv1;
+ return conv1.to_bytes(utf16);*/
+ const QByteArray &data=QString::fromStdWString(utf16).toUtf8();
+ return std::string(data.constData(),data.size());
+ //return narrow(utf16);
+}
+#else
+std::string TransferThread::stringToInternalString(const std::string& utf8)
+{
+ return utf8;
+}
+
+std::string TransferThread::internalStringTostring(const std::string& utf16)
+{
+ return utf16;
+}
+#endif
+
+bool TransferThread::setFiles(const INTERNALTYPEPATH& source, const int64_t &size, const INTERNALTYPEPATH& destination, const Ultracopier::CopyMode &mode)
+{
+ if(transfer_stat!=TransferStat_Idle)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] already used, source: ")+
+ TransferThread::internalStringTostring(source)+", destination: "+TransferThread::internalStringTostring(destination));
+ return false;
+ }
+ //to prevent multiple file alocation into ListThread::doNewActions_inode_manipulation()
+ transfer_stat = TransferStat_PreOperation;
+ //emit pushStat(stat,transferId);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start, source: "+TransferThread::internalStringTostring(source)+", destination: "+TransferThread::internalStringTostring(destination));
+ this->source = source;
+ this->destination = destination;
+ this->mode = mode;
+ this->size = size;
+ stopIt = false;
+ #ifdef Q_OS_WIN32
+ stopItWin=0;
+ #endif
+ fileExistsAction = FileExists_NotSet;
+ canStartTransfer = false;
+ sended_state_preOperationStopped= false;
+ fileContentError = false;
+ writeError = false;
+ readError = false;
+ haveTransferTime = false;
+ canStartTransfer = false;
+ resetExtraVariable();
+ emit internalStartPreOperation();
+ startTransferTime.restart();
+ return true;
+}
+
+void TransferThread::setFileRename(const std::string &nameForRename)
+{
+ if(transfer_stat!=TransferStat_PreOperation)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] already used, source: ")+
+ TransferThread::internalStringTostring(source)+(", destination: ")+TransferThread::internalStringTostring(destination));
+ return;
+ }
+ if(QString::fromStdString(nameForRename).contains(QRegularExpression(QStringLiteral("[/\\\\\\*]"))))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] can't use this kind of name, internal error"));
+ emit errorOnFile(destination,tr("Try rename with using special characters").toStdString());
+ return;
+ }
+ #ifdef WIDESTRING
+ std::string::size_type n=destination.rfind(L'/');
+ #else
+ std::string::size_type n=destination.rfind('/');
+ #endif
+ #ifdef Q_OS_WIN32
+ const std::wstring::size_type n2=destination.rfind(L'\\');
+ if(n2>n && (n2!=std::wstring::npos || n==std::wstring::npos))
+ n=n2;
+ #endif
+ #ifdef WIDESTRING
+ if(n != std::wstring::npos)
+ #else
+ if(n != std::string::npos)
+ #endif
+ {
+ INTERNALTYPEPATH destinationPath=destination.substr(0,n);//+1
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] nameForRename: "+nameForRename+", destinationPath: "+internalStringTostring(destinationPath));
+ if(stringEndsWith(destinationPath,'/')
+ #ifdef Q_OS_WIN32
+ || stringEndsWith(destinationPath,'\\')
+ #endif
+ )
+ destination=destinationPath+TransferThread::stringToInternalString(nameForRename);
+ else
+ destination=destinationPath+TransferThread::stringToInternalString("/")+TransferThread::stringToInternalString(nameForRename);
+ }
+ else
+ destination=TransferThread::stringToInternalString(nameForRename);
+
+ /*why all this code?
+ if(!renameTheOriginalDestination)
+ destination=destination+TransferThread::stringToInternalString("/")+TransferThread::stringToInternalString(nameForRename);
+ else
+ {
+ //INTERNALTYPEPATH tempDestination=destination;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"["+std::to_string(id)+"] rename "+TransferThread::internalStringTostring(destination)+
+ ": to: "+TransferThread::internalStringTostring(destination)+"/"+nameForRename);
+ if(!rename(destination,(destination+TransferThread::stringToInternalString("/")+TransferThread::stringToInternalString(nameForRename))))
+ {
+ if(!is_file(destination))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] source not exists "+TransferThread::internalStringTostring(destination)+
+ ": destination: "+TransferThread::internalStringTostring(destination)+", error: "+std::to_string(errno));
+ emit errorOnFile(destination,tr("File not found").toStdString());
+ return;
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to do real move "+TransferThread::internalStringTostring(destination)+
+ ": "+TransferThread::internalStringTostring(destination)+", error: "+std::to_string(errno));
+ emit errorOnFile(destination,"errno: "+std::string(strerror(errno)));
+ return;
+ }
+ if(source==destination)
+ source=destination+TransferThread::stringToInternalString("/")+TransferThread::stringToInternalString(nameForRename);
+ destination=tempDestination;
+ }*/
+ fileExistsAction = FileExists_NotSet;
+ resetExtraVariable();
+ emit internalStartPreOperation();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] destination is: "+TransferThread::internalStringTostring(destination));
+}
+
+bool TransferThread::rename(const INTERNALTYPEPATH &source, const INTERNALTYPEPATH &destination)
+{
+ #ifdef Q_OS_WIN32
+ return MoveFileExW(
+ TransferThread::toFinalPath(source).c_str(),
+ TransferThread::toFinalPath(destination).c_str(),
+ MOVEFILE_REPLACE_EXISTING);
+ #else
+ return ::rename(TransferThread::internalStringTostring(source).c_str(),
+ TransferThread::internalStringTostring(destination).c_str())==0;
+ #endif
+}
+
+void TransferThread::setAlwaysFileExistsAction(const FileExistsAction &action)
+{
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+QStringLiteral("] action to do always: ")+QString::number(action)));
+ alwaysDoFileExistsAction=action;
+}
+
+void TransferThread::resetExtraVariable()
+{
+ sended_state_preOperationStopped=false;
+ writeError = false;
+ readError = false;
+ needRemove = false;
+ needSkip = false;
+ retry = false;
+ havePermission = false;
+}
+
+bool TransferThread::isSame()
+{
+ //check if source and destination is not the same
+ //source.absoluteFilePath()==destination.absoluteFilePath() not work is source don't exists
+ if(source==destination)
+ {
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(!is_file(destination))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start source: "+TransferThread::internalStringTostring(source)+" not exists");
+ if(is_symlink(source))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start source: "+TransferThread::internalStringTostring(source)+" isSymLink");
+ if(is_symlink(destination))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start destination: "+TransferThread::internalStringTostring(destination)+" isSymLink");
+ #endif
+ if(fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_Skip)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] is same but skip");
+ transfer_stat=TransferStat_Idle;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transfer_stat=TransferStat_Idle");
+ emit postOperationStopped();
+ //quit
+ return true;
+ }
+ if(checkAlwaysRename())
+ return false;
+ emit fileAlreadyExists(source,destination,true);
+ return true;
+ }
+ return false;
+}
+
+bool TransferThread::destinationExists()
+{
+ //check if destination exists
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] "+QStringLiteral("overwrite: %1, alwaysDoFileExistsAction: %2, readError: %3, writeError: %4")
+ .arg(fileExistsAction)
+ .arg(alwaysDoFileExistsAction)
+ .arg(readError)
+ .arg(writeError)
+ .toStdString()
+ );
+ if(alwaysDoFileExistsAction==FileExists_Overwrite || readError || writeError
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ || rsync
+ #endif
+ )
+ return false;
+
+ bool destinationExists=false;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] time to first FS access");
+ destinationExists=is_file(destination);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] finish first FS access: "+std::to_string(destinationExists));
+ if(destinationExists)
+ {
+ if(fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_Skip)
+ {
+ transfer_stat=TransferStat_Idle;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transfer_stat=TransferStat_Idle");
+ emit postOperationStopped();
+ //quit
+ return true;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] FS access");
+ if(checkAlwaysRename())
+ return false;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] FS access");
+ if(is_file(source))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] FS access");
+ if(fileExistsAction==FileExists_OverwriteIfNewer || (fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_OverwriteIfNewer))
+ {
+ const int64_t &sm=readFileMDateTime(source);
+ const int64_t &sd=readFileMDateTime(destination);
+ if(sm==-1)
+ {
+ #ifndef Q_OS_WIN32
+ const int e=errno;
+ emit errorOnFile(source,"Unable to read modification time: "+std::string(strerror(e))+" ("+std::to_string(e)+")");
+ #else
+ emit errorOnFile(source,"Unable to read modification time: "+GetLastErrorStdStr());
+ #endif
+ return true;
+ }
+ if(sd==-1)
+ {
+ #ifndef Q_OS_WIN32
+ const int e=errno;
+ emit errorOnFile(destination,"Unable to read modification time: "+std::string(strerror(e))+" ("+std::to_string(e)+")");
+ #else
+ emit errorOnFile(destination,"Unable to read modification time: "+GetLastErrorStdStr());
+ #endif
+ return true;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] readFileMDateTime(source): "+std::to_string(sm));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] readFileMDateTime(destination): "+std::to_string(sd));
+ if(sm>sd || sm==-1 || sd==-1)
+ return false;
+ else
+ {
+ transfer_stat=TransferStat_Idle;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transfer_stat=TransferStat_Idle;");
+ emit postOperationStopped();
+ return true;
+ }
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] FS access");
+ if(fileExistsAction==FileExists_OverwriteIfOlder || (fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_OverwriteIfOlder))
+ {
+ const int64_t &sm=readFileMDateTime(source);
+ const int64_t &sd=readFileMDateTime(destination);
+ if(sm==-1)
+ {
+ #ifndef Q_OS_WIN32
+ const int e=errno;
+ emit errorOnFile(source,"Unable to read modification time: "+std::string(strerror(e))+" ("+std::to_string(e)+")");
+ #else
+ emit errorOnFile(source,"Unable to read modification time: "+GetLastErrorStdStr());
+ #endif
+ return true;
+ }
+ if(sd==-1)
+ {
+ #ifndef Q_OS_WIN32
+ const int e=errno;
+ emit errorOnFile(destination,"Unable to read modification time: "+std::string(strerror(e))+" ("+std::to_string(e)+")");
+ #else
+ emit errorOnFile(destination,"Unable to read modification time: "+GetLastErrorStdStr());
+ #endif
+ return true;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] readFileMDateTime(source): "+std::to_string(sm));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] readFileMDateTime(destination): "+std::to_string(sd));
+ if(sm<sd/* || sm==-1 || sd==-1*/)
+ return false;
+ else
+ {
+ transfer_stat=TransferStat_Idle;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transfer_stat=TransferStat_Idle;");
+ emit postOperationStopped();
+ return true;
+ }
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] FS access");
+ if(fileExistsAction==FileExists_OverwriteIfNotSameMdate || (fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_OverwriteIfNotSameMdate))
+ {
+ const int64_t &sm=readFileMDateTime(source);
+ const int64_t &sd=readFileMDateTime(destination);
+ if(sm==-1)
+ {
+ #ifndef Q_OS_WIN32
+ const int e=errno;
+ emit errorOnFile(source,"Unable to read modification time: "+std::string(strerror(e))+" ("+std::to_string(e)+")");
+ #else
+ emit errorOnFile(source,"Unable to read modification time: "+GetLastErrorStdStr());
+ #endif
+ return true;
+ }
+ if(sd==-1)
+ {
+ #ifndef Q_OS_WIN32
+ const int e=errno;
+ emit errorOnFile(destination,"Unable to read modification time: "+std::string(strerror(e))+" ("+std::to_string(e)+")");
+ #else
+ emit errorOnFile(destination,"Unable to read modification time: "+GetLastErrorStdStr());
+ #endif
+ return true;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] readFileMDateTime(source): "+std::to_string(sm));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] readFileMDateTime(destination): "+std::to_string(sd));
+ if(sm!=sd || sm==-1 || sd==-1)
+ return false;
+ else
+ {
+ transfer_stat=TransferStat_Idle;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transfer_stat=TransferStat_Idle;");
+ emit postOperationStopped();
+ return true;
+ }
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] FS access");
+ if(fileExistsAction==FileExists_OverwriteIfNotSameSize || (fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_OverwriteIfNotSameMdate))
+ {
+ if(file_stat_size(source)!=file_stat_size(destination))
+ return false;
+ else
+ {
+ transfer_stat=TransferStat_Idle;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transfer_stat=TransferStat_Idle;");
+ emit postOperationStopped();
+ return true;
+ }
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] FS access");
+ if(fileExistsAction==FileExists_OverwriteIfNotSameSizeAndDate || (fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_OverwriteIfNotSameMdate))
+ {
+ const int64_t &sm=readFileMDateTime(source);
+ const int64_t &sd=readFileMDateTime(destination);
+ if(sm==-1)
+ {
+ #ifndef Q_OS_WIN32
+ const int e=errno;
+ emit errorOnFile(source,"Unable to read modification time: "+std::string(strerror(e))+" ("+std::to_string(e)+")");
+ #else
+ emit errorOnFile(source,"Unable to read modification time: "+GetLastErrorStdStr());
+ #endif
+ return true;
+ }
+ if(sd==-1)
+ {
+ #ifndef Q_OS_WIN32
+ const int e=errno;
+ emit errorOnFile(destination,"Unable to read modification time: "+std::string(strerror(e))+" ("+std::to_string(e)+")");
+ #else
+ emit errorOnFile(destination,"Unable to read modification time: "+GetLastErrorStdStr());
+ #endif
+ return true;
+ }
+ if(sm!=sd || file_stat_size(source)!=file_stat_size(destination))
+ return false;
+ else
+ {
+ transfer_stat=TransferStat_Idle;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transfer_stat=TransferStat_Idle;");
+ emit postOperationStopped();
+ return true;
+ }
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] FS access");
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] FS access");
+ if(fileExistsAction!=FileExists_NotSet)
+ {
+ transfer_stat=TransferStat_Idle;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transfer_stat=TransferStat_Idle;");
+ emit postOperationStopped();
+ return true;
+ }
+ }
+ if(fileExistsAction==FileExists_NotSet)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] FS access");
+ emit fileAlreadyExists(source,destination,false);
+ return true;
+ }
+ }
+ return false;
+}
+
+/** \example
+ * /dir1/dir2/file -> file
+ * /file -> file
+ * /dir1/dir2/ -> dir2
+ * /dir1/ -> dir1
+ * / -> root */
+#ifdef Q_OS_WIN32
+std::string TransferThread::resolvedName(std::string inode)
+#else
+std::string TransferThread::resolvedName(const std::string &inode)
+#endif
+{
+ #ifdef Q_OS_WIN32
+ stringreplaceAll(inode,"\\","/");
+ #endif
+ const std::string::size_type &lastPos=inode.rfind('/');
+ if(lastPos == std::string::npos || (lastPos==0 && inode.size()==1))
+ return "root";
+ if((lastPos+1)!=inode.size())
+ return inode.substr(lastPos+1);
+ if(inode.size()==1)
+ return "root";
+ const std::string::size_type &previousLastPos=inode.rfind('/',inode.size()-2);
+ if((lastPos-2)==previousLastPos || previousLastPos == std::string::npos)
+ return "root";
+ return inode.substr(previousLastPos+1,lastPos-previousLastPos-1);
+}
+
+#ifdef Q_OS_WIN32
+std::wstring TransferThread::resolvedName(std::wstring inode)
+#else
+std::wstring TransferThread::resolvedName(const std::wstring &inode)
+#endif
+{
+ #ifdef Q_OS_WIN32
+ stringreplaceAll(inode,L"\\",L"/");
+ #endif
+ const std::wstring::size_type &lastPos=inode.rfind(L'/');
+ if(lastPos == std::wstring::npos || (lastPos==0 && inode.size()==1))
+ return L"root";
+ if((lastPos+1)!=inode.size())
+ return inode.substr(lastPos+1);
+ if(inode.size()==1)
+ return L"root";
+ const std::wstring::size_type &previousLastPos=inode.rfind(L'/',inode.size()-2);
+ if((lastPos-2)==previousLastPos || previousLastPos == std::wstring::npos)
+ return L"root";
+ return inode.substr(previousLastPos+1,lastPos-previousLastPos-1);
+}
+
+INTERNALTYPEPATH TransferThread::getSourcePath() const
+{
+ return source;
+}
+
+INTERNALTYPEPATH TransferThread::getDestinationPath() const
+{
+ return destination;
+}
+
+Ultracopier::CopyMode TransferThread::getMode() const
+{
+ return mode;
+}
+
+//return true if has been renamed
+bool TransferThread::checkAlwaysRename()
+{
+ if(alwaysDoFileExistsAction==FileExists_Rename)
+ {
+ INTERNALTYPEPATH newDestination=destination;
+ std::string fileName=resolvedName(TransferThread::internalStringTostring(newDestination));
+ std::string suffix;
+ std::string newFileName;
+ //resolv the suffix
+ if(std::regex_match(fileName,renameRegex))
+ {
+ suffix=fileName;
+ suffix=std::regex_replace(suffix,renameRegex,"$2");
+ fileName=std::regex_replace(fileName,renameRegex,"$1");
+ }
+ //resolv the new name
+ int num=1;
+ do
+ {
+ if(num==1)
+ {
+ if(firstRenamingRule.empty())
+ newFileName=tr("%name% - copy%suffix%").toStdString();
+ else
+ newFileName=firstRenamingRule;
+ }
+ else
+ {
+ if(otherRenamingRule.empty())
+ newFileName=tr("%name% - copy (%number%)%suffix%").toStdString();
+ else
+ newFileName=otherRenamingRule;
+ stringreplaceAll(newFileName,"%number%",std::to_string(num));
+ }
+ stringreplaceAll(newFileName,"%name%",fileName);
+ stringreplaceAll(newFileName,"%suffix%",suffix);
+ newDestination=FSabsolutePath(newDestination);
+ if(!stringEndsWith(newDestination,'/')
+ #ifdef Q_OS_WIN32
+ && !stringEndsWith(destination,'\\')
+ #endif
+ )
+ newDestination+=TransferThread::stringToInternalString("/");
+ newDestination+=TransferThread::stringToInternalString(newFileName);
+ num++;
+ }
+ while(is_file(newDestination));
+ if(!renameTheOriginalDestination)
+ destination=newDestination;
+ else
+ {
+ if(rename(destination.c_str(),newDestination.c_str())!=0)
+ {
+ if(!is_file(destination))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] source not exists "+TransferThread::internalStringTostring(destination)+
+ ": destination: "+TransferThread::internalStringTostring(newDestination)+", error: "+std::to_string(errno));
+ emit errorOnFile(destination,tr("File not found").toStdString());
+ readError=true;
+ return true;
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to do real move "+TransferThread::internalStringTostring(destination)+
+ ": "+TransferThread::internalStringTostring(newDestination)+", error: "+std::to_string(errno));
+ readError=true;
+ emit errorOnFile(destination,std::string(strerror(errno))+", errno: "+std::string(strerror(errno)));
+ return true;
+ }
+ }
+ return true;
+ }
+ return false;
+}
+
+/// \warning not check if path have double //, if have do bug return failed
+/// \warning check mkpath() call should not exists because only existing dest is allowed now
+#ifdef Q_OS_UNIX
+bool TransferThread::mkpath(const INTERNALTYPEPATH &path, const mode_t &mode)
+#else
+bool TransferThread::mkpath(const INTERNALTYPEPATH &path)
+#endif
+{
+ #ifdef Q_OS_WIN32
+ if(!mkdir(path))
+ if(errno==EEXIST)
+ return true;
+
+ printf("%i",errno);
+ #ifndef WIDESTRING
+ #error if windows, WIDESTRING need be enabled
+ #endif
+ //use reverse method to performance, more complex to code but less system call/fs call
+ std::wstring::size_type previouspos=path.size();
+ std::wstring::size_type lastpos=std::string::npos;
+
+ const wchar_t *pathC=path.c_str();
+ wchar_t pathCedit[32000];
+ wcscpy(pathCedit,pathC);
+ std::vector<std::wstring::size_type> pathSplit;
+ pathSplit.push_back(path.size());
+ do
+ {
+ lastpos=path.rfind(L'/',previouspos-1);
+ if(lastpos == std::wstring::npos)
+ return false;
+
+ while(pathC[lastpos-1]==L'/')
+ if(lastpos>0)
+ lastpos--;
+ else
+ return false;
+
+ //buggy case?
+ #ifdef Q_OS_UNIX
+ if(lastpos<2)
+ return false;
+ #else
+ if(lastpos<4)
+ return false;
+ #endif
+
+ pathCedit[lastpos]=L'\0';
+ previouspos=lastpos;
+
+ errno=0;
+ if(!mkdir(pathCedit))
+ if(errno!=EEXIST && errno!=ENOENT)
+ return false;
+ //here errno can be: EEXIST, ENOENT, 0
+ if(errno==ENOENT)
+ pathSplit.push_back(lastpos);
+ } while(lastpos>0 && errno==ENOENT);
+
+ do
+ {
+ wcscpy(pathCedit,pathC);
+ lastpos=pathSplit.back();
+ pathSplit.pop_back();
+ pathCedit[lastpos]=L'\0';
+ #ifdef Q_OS_UNIX
+ if(mkdir(pathCedit, mode)==-1)
+ #else
+ if(!mkdir(pathCedit))
+ #endif
+ if(errno!=EEXIST)
+ return false;
+ } while(!pathSplit.empty());
+ return true;
+ #else
+ char pathC[PATH_MAX];
+ strcpy(pathC,TransferThread::internalStringTostring(path).c_str());
+ if(!mkdir(path))
+ if(errno==EEXIST)
+ return true;
+
+ printf("%i",errno);
+ //use reverse method to performance, more complex to code but less system call/fs call
+ std::string::size_type previouspos=path.size();
+ std::string::size_type lastpos=std::string::npos;
+
+ char pathCedit[PATH_MAX];
+ strcpy(pathCedit,pathC);
+ std::vector<std::string::size_type> pathSplit;
+ pathSplit.push_back(path.size());
+ do
+ {
+ lastpos=path.rfind('/',previouspos-1);
+ if(lastpos == std::string::npos)
+ return false;
+
+ while(pathC[lastpos-1]=='/')
+ if(lastpos>0)
+ lastpos--;
+ else
+ return false;
+
+ //buggy case?
+ #ifdef Q_OS_UNIX
+ if(lastpos<2)
+ return false;
+ #else
+ if(lastpos<4)
+ return false;
+ #endif
+
+ pathCedit[lastpos]='\0';
+ previouspos=lastpos;
+
+ errno=0;
+ #ifdef Q_OS_UNIX
+ if(::mkdir(pathCedit, mode)==-1)
+ #else
+ if(::mkdir(pathCedit)==-1)
+ #endif
+ if(errno!=EEXIST && errno!=ENOENT)
+ return false;
+ //here errno can be: EEXIST, ENOENT, 0
+ if(errno==ENOENT)
+ pathSplit.push_back(lastpos);
+ } while(lastpos>0 && errno==ENOENT);
+
+ do
+ {
+ strcpy(pathCedit,pathC);
+ lastpos=pathSplit.back();
+ pathSplit.pop_back();
+ pathCedit[lastpos]='\0';
+ #ifdef Q_OS_UNIX
+ if(::mkdir(pathCedit, mode)==-1)
+ #else
+ if(::mkdir(pathCedit)==-1)
+ #endif
+ if(errno!=EEXIST)
+ return false;
+ } while(!pathSplit.empty());
+ return true;
+ #endif
+}
+
+#ifdef Q_OS_UNIX
+bool TransferThread::mkdir(const INTERNALTYPEPATH &file_path, const mode_t &mode)
+#else
+bool TransferThread::mkdir(const INTERNALTYPEPATH &file_path)
+#endif
+{
+#ifdef Q_OS_WIN32
+ const bool r = CreateDirectory(TransferThread::toFinalPath(file_path).c_str(),NULL);
+ const DWORD &t=GetLastError();
+ if(!r)
+ {
+ if(t==183/*is_dir(file_path) performance impact*/)
+ errno=EEXIST;
+ else if(t==3/*is_dir(file_path) performance impact*/)
+ errno=ENOENT;
+ else
+ errno=t;
+ }
+ return r;
+#else
+ #ifdef Q_OS_UNIX
+ return ::mkdir(TransferThread::internalStringTostring(file_path).c_str(),mode)==0;
+ #else
+ return ::mkdir(TransferThread::internalStringTostring(file_path).c_str())==0;
+ #endif
+#endif
+}
+
+bool TransferThread::canBeMovedDirectly() const
+{
+ if(mode!=Ultracopier::Move)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] mode!=Ultracopier::Move");
+ return false;
+ }
+ return is_symlink(source) || driveManagement.isSameDrive(
+ TransferThread::internalStringTostring(destination),
+ TransferThread::internalStringTostring(source)
+ );
+}
+
+bool TransferThread::canBeCopiedDirectly() const
+{
+ return is_symlink(source);
+}
+
+//set the copy info and options before runing
+void TransferThread::setRightTransfer(const bool doRightTransfer)
+{
+ this->doRightTransfer=doRightTransfer;
+}
+
+/// \brief set buffer
+void TransferThread::setBuffer(const bool buffer)
+{
+ Q_UNUSED(buffer);
+}
+
+/*void TransferThread::setBufferSize(const int parallelBuffer,const int serialBuffer)
+{
+ writeThread->setBufferSize(const int parallelBuffer,const int serialBuffer);
+}*/
+
+//set keep date
+void TransferThread::setKeepDate(const bool keepDate)
+{
+ this->keepDate=keepDate;
+}
+
+bool TransferThread::doFilePostOperation()
+{
+ //do operation needed by copy
+ //set the time if no write thread used
+
+ if(/*not implied by is_symlink, exist can be false because symlink dest not exists*/
+ !exists(destination) && !is_symlink(destination))
+ {
+ if(!stopIt)
+ if(/*true when the destination have been remove but not the symlink:*/!is_symlink(source))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Unable to change the date: File not found");
+ emit errorOnFile(destination,tr("Unable to change the date").toStdString()+": "+tr("File not found").toStdString());
+ return false;
+ }
+ }
+ else
+ {
+ if(doRightTransfer)
+ {
+ //should be never used but...
+ /*source.refresh();
+ if(source.exists())*/
+ if(havePermission)
+ {
+ if(!writeDestinationFilePermissions(destination))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Unable to set the destination file permission");
+ //emit errorOnFile(destination,tr("Unable to set the destination file permission"));
+ //return false;
+ }
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Try doRightTransfer when source not exists");
+ }
+ //date at end because previous change can touch the file
+ if(doTheDateTransfer)
+ {
+ if(!writeDestinationFileDateTime(destination))
+ {
+ if(!is_file(destination))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Unable to change the date (is not a file)");
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Unable to change the date");
+ /* error with virtual folder under windows */
+ #ifndef Q_OS_WIN32
+ if(keepDate)
+ {
+ emit errorOnFile(destination,tr("Unable to change the date").toStdString());
+ return false;
+ }
+ #endif
+ }
+ /*else -> need be done at source m time read
+ {
+ #ifndef Q_OS_WIN32
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] read the destination time: "+destination.lastModified().toString().toStdString());
+ if(destination.lastModified()<ULTRACOPIER_PLUGIN_MINIMALYEAR_TIMESTAMPS)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] read the destination time lower than min time: "+destination.lastModified().toString().toStdString());
+ if(keepDate)
+ {
+ emit errorOnFile(destination,tr("Unable to change the date").toStdString());
+ return false;
+ }
+ }
+ #endif
+ }*/
+ }
+
+ }
+ if(stopIt)
+ return false;
+
+ return true;
+}
+
+//////////////////////////////////////////////////////////////////
+///////////////////////// Normal event ///////////////////////////
+//////////////////////////////////////////////////////////////////
+
+int64_t TransferThread::readFileMDateTime(const INTERNALTYPEPATH &source)
+{
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"readFileDateTime("+source+")");
+ /** Why not do it with Qt? Because it not support setModificationTime(), and get the time with Qt, that's mean use local time where in C is UTC time */
+ #ifdef Q_OS_UNIX
+ struct stat info;
+ if(stat(TransferThread::internalStringTostring(source).c_str(),&info)!=0)
+ return -1;
+ #ifdef Q_OS_MAC
+ return info.st_mtimespec.tv_sec;
+ #else
+ return info.st_mtim.tv_sec;
+ #endif
+ #else
+ #ifdef Q_OS_WIN32
+ HANDLE hFileSouce = CreateFileW(TransferThread::toFinalPath(source).c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);
+ if(hFileSouce == INVALID_HANDLE_VALUE)
+ return -1;
+ FILETIME ftCreate, ftAccess, ftWrite;
+ if(!GetFileTime(hFileSouce, &ftCreate, &ftAccess, &ftWrite))
+ {
+ CloseHandle(hFileSouce);
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to get the file time: "+TransferThread::GetLastErrorStdStr());
+ return -1;
+ }
+ CloseHandle(hFileSouce);
+ const int64_t UNIX_TIME_START = 0x019DB1DED53E8000; //January 1, 1970 (start of Unix epoch) in "ticks"
+ const int64_t TICKS_PER_SECOND = 10000000; //a tick is 100ns
+ LARGE_INTEGER li;
+ li.LowPart = ftWrite.dwLowDateTime;
+ li.HighPart = ftWrite.dwHighDateTime;
+ return (li.QuadPart - UNIX_TIME_START) / TICKS_PER_SECOND;
+ #else
+ return -1;
+ #endif
+ #endif
+ return -1;
+}
+
+//fonction to read the file date time
+bool TransferThread::readSourceFileDateTime(const INTERNALTYPEPATH &source)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] readFileDateTime("+TransferThread::internalStringTostring(source)+")");
+ /** Why not do it with Qt? Because it not support setModificationTime(), and get the time with Qt, that's mean use local time where in C is UTC time */
+ #ifdef Q_OS_UNIX
+ struct stat info;
+ if(stat(TransferThread::internalStringTostring(source).c_str(),&info)!=0)
+ return false;
+ #ifdef Q_OS_MAC
+ time_t ctime=info.st_ctimespec.tv_sec;
+ time_t actime=info.st_atimespec.tv_sec;
+ time_t modtime=info.st_mtimespec.tv_sec;
+ //this function avalaible on unix and mingw
+ butime.actime=actime;
+ butime.modtime=modtime;
+ #else
+ time_t ctime=info.st_ctim.tv_sec;
+ time_t actime=info.st_atim.tv_sec;
+ time_t modtime=info.st_mtim.tv_sec;
+ //this function avalaible on unix and mingw
+ butime.actime=actime;
+ butime.modtime=modtime;
+ #endif
+ if((uint64_t)modtime<ULTRACOPIER_PLUGIN_MINIMALYEAR_TIMESTAMPS)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] the sources is older to copy the time: "+TransferThread::internalStringTostring(source));
+ return false;
+ }
+ Q_UNUSED(ctime);
+ return true;
+ #else
+ #ifdef Q_OS_WIN32
+ HANDLE hFileSouce = CreateFileW(TransferThread::toFinalPath(source).c_str(), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_READONLY, NULL);
+ if(hFileSouce == INVALID_HANDLE_VALUE)
+ {
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] open failed to read: "+QString::fromWCharArray(filePath).toStdString()+", error: "+TransferThread::GetLastErrorStdStr());
+ return false;
+ }
+ FILETIME ftCreate, ftAccess, ftWrite;
+ if(!GetFileTime(hFileSouce, &ftCreate, &ftAccess, &ftWrite))
+ {
+ CloseHandle(hFileSouce);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to get the file time");
+ return false;
+ }
+ this->ftCreate=ftCreate;
+ this->ftAccess=ftAccess;
+ this->ftWrite=ftWrite;
+ CloseHandle(hFileSouce);
+ const uint64_t modtime=(uint64_t)ftWrite.dwLowDateTime + ((uint64_t)2^32 * (uint64_t)ftWrite.dwHighDateTime);
+ if(modtime<ULTRACOPIER_PLUGIN_MINIMALYEAR_TIMESTAMPS)
+ {
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] the sources is older to copy the time: "+source+": "+source.lastModified().toString().toStdString());
+ return false;
+ }
+ return true;
+ #else
+ return false;
+ #endif
+ #endif
+ return false;
+}
+
+bool TransferThread::writeDestinationFileDateTime(const INTERNALTYPEPATH &destination)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] writeFileDateTime("+TransferThread::internalStringTostring(destination)+")");
+ /** Why not do it with Qt? Because it not support setModificationTime(), and get the time with Qt, that's mean use local time where in C is UTC time */
+ #ifdef Q_OS_UNIX
+ return utime(TransferThread::internalStringTostring(destination).c_str(),&butime)==0;
+ #else
+ #ifdef Q_OS_WIN32
+ HANDLE hFileDestination = CreateFileW(TransferThread::toFinalPath(destination).c_str(), GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
+ if(hFileDestination == INVALID_HANDLE_VALUE)
+ {
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] open failed to write: "+QString::fromWCharArray(filePath).toStdString()+", error: "+TransferThread::GetLastErrorStdStr());
+ return false;
+ }
+ FILETIME ftCreate, ftAccess, ftWrite;
+ ftCreate=this->ftCreate;
+ ftAccess=this->ftAccess;
+ ftWrite=this->ftWrite;
+ if(!SetFileTime(hFileDestination, &ftCreate, &ftAccess, &ftWrite))
+ {
+ CloseHandle(hFileDestination);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to set the file time");
+ return false;
+ }
+ CloseHandle(hFileDestination);
+ return true;
+ #else
+ return false;
+ #endif
+ #endif
+ return false;
+}
+
+bool TransferThread::readSourceFilePermissions(const INTERNALTYPEPATH &source)
+{
+ #ifdef Q_OS_UNIX
+ if(stat(TransferThread::internalStringTostring(source).c_str(), &permissions)!=0)
+ return false;
+ else
+ return true;
+ #else
+ HANDLE hFile = CreateFileW(source.c_str(), GENERIC_READ ,
+ FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
+ if (hFile == INVALID_HANDLE_VALUE) {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] CreateFile() failed. Error: INVALID_HANDLE_VALUE: "+TransferThread::GetLastErrorStdStr());
+ return false;
+ }
+ DWORD lasterror = GetSecurityInfo(hFile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION,
+ NULL, NULL, &dacl, NULL, &PSecurityD);
+ if (lasterror != ERROR_SUCCESS) {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] GetSecurityInfo() failed. Error"+std::to_string(lasterror));
+ return false;
+ }
+ CloseHandle(hFile);
+ return true;
+ #endif
+}
+
+bool TransferThread::writeDestinationFilePermissions(const INTERNALTYPEPATH &destination)
+{
+ #ifdef Q_OS_UNIX
+ if(chmod(TransferThread::internalStringTostring(destination).c_str(), permissions.st_mode)!=0)
+ return false;
+ if(chown(TransferThread::internalStringTostring(destination).c_str(), permissions.st_uid, permissions.st_gid)!=0)
+ return false;
+ return true;
+ #else
+ HANDLE hFile = CreateFileW(destination.c_str(),READ_CONTROL | WRITE_OWNER | WRITE_DAC | ACCESS_SYSTEM_SECURITY,0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
+ if (hFile == INVALID_HANDLE_VALUE) {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] CreateFile() failed. Error: INVALID_HANDLE_VALUE: "+TransferThread::GetLastErrorStdStr());
+ return false;
+ }
+ DWORD lasterror = SetSecurityInfo(hFile, SE_FILE_OBJECT, DACL_SECURITY_INFORMATION , NULL, NULL, dacl, NULL);
+ if (lasterror != ERROR_SUCCESS) {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] SetSecurityInfo() failed. Error"+std::to_string(lasterror));
+ return false;
+ }
+ CloseHandle(hFile);
+ if(PSecurityD!=NULL)
+ {
+ //free(PSecurityD);//crash on some NAS, it's why is commented, http://forum-ultracopier.first-world.info/viewtopic.php?f=8&t=903&p=3689#p3689
+ PSecurityD=NULL;
+ }
+ if(dacl!=NULL)
+ {
+ //free(dacl);
+ dacl=NULL;
+ }
+ return true;
+ #endif
+}
+
+//retry after error
+void TransferThread::putAtBottom()
+{
+ emit tryPutAtBottom();
+}
+
+#ifdef ULTRACOPIER_PLUGIN_RSYNC
+/// \brief set rsync
+void TransferThread::setRsync(const bool rsync)
+{
+ this->rsync=rsync;
+}
+#endif
+
+#ifdef ULTRACOPIER_PLUGIN_DEBUG
+//to set the id
+void TransferThread::setId(int id)
+{
+ this->id=id;
+}
+#endif
+
+void TransferThread::setRenamingRules(const std::string &firstRenamingRule, const std::string &otherRenamingRule)
+{
+ this->firstRenamingRule=firstRenamingRule;
+ this->otherRenamingRule=otherRenamingRule;
+}
+
+void TransferThread::setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles)
+{
+ this->deletePartiallyTransferredFiles=deletePartiallyTransferredFiles;
+}
+
+void TransferThread::setRenameTheOriginalDestination(const bool &renameTheOriginalDestination)
+{
+ this->renameTheOriginalDestination=renameTheOriginalDestination;
+}
+
+void TransferThread::set_updateMount()
+{
+ driveManagement.tryUpdate();
+}
+
+bool TransferThread::is_symlink(const INTERNALTYPEPATH &filename)
+{
+ #ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA fileInfo;
+ BOOL r = GetFileAttributesExW(TransferThread::toFinalPath(filename).c_str(), GetFileExInfoStandard, &fileInfo);
+ if(r != FALSE)
+ {
+ return fileInfo.dwFileAttributes != INVALID_FILE_ATTRIBUTES &&
+ (fileInfo.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT);
+ }
+ else
+ return false;
+ #else
+ return is_symlink(TransferThread::internalStringTostring(filename).c_str());
+ #endif
+}
+
+bool TransferThread::is_symlink(const char * const filename)
+{
+ #ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA fileInfo;
+ BOOL r = GetFileAttributesExA(TransferThread::toFinalPath(filename).c_str(), GetFileExInfoStandard, &fileInfo);
+ if(r != FALSE)
+ {
+ return fileInfo.dwFileAttributes != INVALID_FILE_ATTRIBUTES &&
+ (fileInfo.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT);
+ }
+ else
+ return false;
+ #else
+ struct stat p_statbuf;
+ if (lstat(filename, &p_statbuf) < 0)
+ //if error or file not exists, considere as regular file
+ return false;
+ if (S_ISLNK(p_statbuf.st_mode))
+ return true;
+ #endif
+ return false;
+}
+
+bool TransferThread::is_file(const INTERNALTYPEPATH &filename)
+{
+ #ifdef Q_OS_WIN32
+ DWORD dwAttrib = GetFileAttributesW(TransferThread::toFinalPath(filename).c_str());
+ return (dwAttrib != INVALID_FILE_ATTRIBUTES &&
+ (dwAttrib & FILE_ATTRIBUTE_NORMAL || dwAttrib & FILE_ATTRIBUTE_ARCHIVE)
+ );
+ #else
+ return is_file(TransferThread::internalStringTostring(filename).c_str());
+ #endif
+}
+
+bool TransferThread::is_file(const char * const filename)
+{
+ #ifdef Q_OS_WIN32
+ DWORD dwAttrib = GetFileAttributesA(TransferThread::toFinalPath(filename).c_str());
+ return (dwAttrib != INVALID_FILE_ATTRIBUTES &&
+ (dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
+ #else
+ struct stat p_statbuf;
+ if (lstat(filename, &p_statbuf) < 0)
+ //if error or file not exists, considere as regular file
+ return false;
+ if (S_ISREG(p_statbuf.st_mode))
+ return true;
+ return false;
+ #endif
+}
+
+bool TransferThread::is_dir(const INTERNALTYPEPATH &filename)
+{
+ #ifdef Q_OS_WIN32
+ DWORD dwAttrib = GetFileAttributesW(TransferThread::toFinalPath(filename).c_str());
+ return (dwAttrib != INVALID_FILE_ATTRIBUTES &&
+ (dwAttrib & FILE_ATTRIBUTE_DIRECTORY) &&
+ !(dwAttrib & FILE_ATTRIBUTE_REPARSE_POINT));
+ #else
+ return is_dir(TransferThread::internalStringTostring(filename).c_str());
+ #endif
+}
+
+bool TransferThread::is_dir(const char * const filename)
+{
+ #ifdef Q_OS_WIN32
+ DWORD dwAttrib = GetFileAttributesA(TransferThread::toFinalPath(filename).c_str());
+ return (dwAttrib != INVALID_FILE_ATTRIBUTES &&
+ (dwAttrib & FILE_ATTRIBUTE_DIRECTORY) &&
+ !(dwAttrib & FILE_ATTRIBUTE_REPARSE_POINT));
+ #else
+ struct stat p_statbuf;
+ if (lstat(filename, &p_statbuf) < 0)
+ //if error or file not exists, considere as regular file
+ return false;
+ if (S_ISDIR(p_statbuf.st_mode))
+ return true;
+ return false;
+ #endif
+}
+
+bool TransferThread::exists(const INTERNALTYPEPATH &filename)
+{
+ #ifdef Q_OS_WIN32
+ DWORD dwAttrib = GetFileAttributesW(TransferThread::toFinalPath(filename).c_str());
+ return dwAttrib != INVALID_FILE_ATTRIBUTES;
+ #else
+ return exists(TransferThread::internalStringTostring(filename).c_str());
+ #endif
+}
+
+bool TransferThread::exists(const char * const filename)
+{
+ #ifdef Q_OS_WIN32
+ DWORD dwAttrib = GetFileAttributesA(TransferThread::toFinalPath(filename).c_str());
+ return dwAttrib != INVALID_FILE_ATTRIBUTES;
+ #else
+ struct stat p_statbuf;
+ if (lstat(filename, &p_statbuf) < 0)
+ //if error or file not exists, considere as regular file
+ return false;
+ #endif
+ return true;
+}
+
+int64_t TransferThread::file_stat_size(const INTERNALTYPEPATH &filename)
+{
+ #ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA fileInfo;
+ BOOL r = GetFileAttributesExW(TransferThread::toFinalPath(filename).c_str(), GetFileExInfoStandard, &fileInfo);
+ if(r == FALSE)
+ return -1;
+ int64_t size=fileInfo.nFileSizeHigh;
+ size<<=32;
+ size|=fileInfo.nFileSizeLow;
+ return size;
+ #else
+ return file_stat_size(TransferThread::internalStringTostring(filename).c_str());
+ #endif
+}
+
+int64_t TransferThread::file_stat_size(const char * const filename)
+{
+ #ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA fileInfo;
+ BOOL r = GetFileAttributesExA(TransferThread::toFinalPath(filename).c_str(), GetFileExInfoStandard, &fileInfo);
+ if(r == FALSE)
+ return -1;
+ int64_t size=fileInfo.nFileSizeHigh;
+ size<<=32;
+ size|=fileInfo.nFileSizeLow;
+ return size;
+ #else
+ struct stat p_statbuf;
+ if (stat(filename, &p_statbuf) < 0)
+ //if error or file not exists, considere as regular file
+ return -1;
+ if (lstat(filename, &p_statbuf) < 0)
+ //if error or file not exists, considere as regular file
+ return -1;
+ return p_statbuf.st_size;
+ #endif
+}
+
+bool TransferThread::entryInfoList(const INTERNALTYPEPATH &path,std::vector<INTERNALTYPEPATH> &list)
+{
+ std::vector<dirent_uc> listTemp;
+ if(!TransferThread::entryInfoList(path,listTemp))
+ return false;
+ for(const dirent_uc &u : listTemp)
+ list.push_back(u.d_name);
+ return true;
+}
+
+bool TransferThread::rmdir(const INTERNALTYPEPATH &path)
+{
+ #ifdef Q_OS_WIN32
+ return RemoveDirectoryW(TransferThread::toFinalPath(path).c_str());
+ #else
+ return ::rmdir(TransferThread::internalStringTostring(path).c_str())==0;
+ #endif
+}
+
+#ifdef Q_OS_UNIX
+bool TransferThread::entryInfoList(const INTERNALTYPEPATH &path,std::vector<dirent_uc> &list)
+{
+ DIR *dp;
+ struct dirent *ep;
+ dp=opendir(TransferThread::internalStringTostring(path).c_str());
+ if(dp!=NULL)
+ {
+ do {
+ ep=readdir(dp);
+ if(ep!=NULL)
+ {
+ const std::string name(ep->d_name);
+ if(name!="." && name!="..")
+ {
+ dirent_uc tempValue;
+ #if defined(__HAIKU__)
+ struct stat sp;
+ memset(&sp,0,sizeof(sp));
+ if(stat((TransferThread::internalStringTostring(path)+"/"+name).c_str(), &sp)==0)
+ tempValue.isFolder=S_ISDIR(sp.st_mode);
+ else
+ return false;
+ #else
+ tempValue.isFolder=ep->d_type==DT_DIR;
+ #endif
+ tempValue.d_name=TransferThread::stringToInternalString(ep->d_name);
+ list.push_back(tempValue);
+ }
+ }
+ } while(ep!=NULL);
+ (void) closedir(dp);
+ return true;
+ }
+ return false;
+}
+#else
+bool TransferThread::entryInfoList(const INTERNALTYPEPATH &path,std::vector<dirent_uc> &list)
+{
+ HANDLE hFind = NULL;
+ #ifdef WIDESTRING
+ WIN32_FIND_DATAW fdFile;
+ if((hFind = FindFirstFileW((TransferThread::toFinalPath(path)+L"\\*").c_str(), &fdFile)) == INVALID_HANDLE_VALUE)
+ #else
+ WIN32_FIND_DATAA fdFile;
+ char finalpath[MAX_PATH];
+ strcpy(finalpath,path.c_str());
+ strcat(finalpath,"\\*");
+ if((hFind = FindFirstFileW(finalpath, &fdFile)) == INVALID_HANDLE_VALUE)
+ #endif
+ return false;
+ do
+ {
+ #ifdef WIDESTRING
+ if(wcscmp(fdFile.cFileName, L".")!=0 && wcscmp(fdFile.cFileName, L"..")!=0)
+ #else
+ if(strcmp(fdFile.cFileName, ".")!=0 && strcmp(fdFile.cFileName, "..")!=0)
+ #endif
+ {
+ dirent_uc tempValue;
+ tempValue.isFolder=
+ (fdFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
+ !(fdFile.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)
+ ;
+ tempValue.d_name=fdFile.cFileName;
+ tempValue.size=fdFile.nFileSizeHigh;
+ tempValue.size<<=32;
+ tempValue.size|=fdFile.nFileSizeLow;
+ list.push_back(tempValue);
+ }
+ }
+ while(FindNextFileW(hFind, &fdFile));
+ FindClose(hFind);
+ return true;
+}
+#endif
+
+void TransferThread::setMkFullPath(const bool mkFullPath)
+{
+ this->mkFullPath=mkFullPath;
+}
+
+/*int TransferThread::fseeko64(FILE *__stream, uint64_t __off, int __whence)
+{
+ #if defined(__HAIKU__) || defined(Q_OS_MAC) || defined(ANDROID) || defined(__ANDROID_API__)
+ return ::fseeko(__stream,__off,__whence);
+ #else
+ return ::fseeko64(__stream,__off,__whence);
+ #endif
+}
+
+int TransferThread::ftruncate64(int __fd, uint64_t __length)
+{
+ #if defined(__HAIKU__) || defined(Q_OS_MAC) || defined(ANDROID) || defined(__ANDROID_API__)
+ return ::ftruncate(__fd,__length);
+ #else
+ //return ::ftruncate64(__fd,__length);
+ return ::ftruncate(__fd,__length);
+ #endif
+}*/
+
+int64_t TransferThread::transferTime() const
+{
+ return startTransferTime.elapsed();
+}
+
+#ifdef Q_OS_WIN32
+std::wstring TransferThread::toFinalPath(std::wstring path)
+{
+ if(path.size()==2 && path.at(1)==L':')
+ path+=L"\\";
+ stringreplaceAll(path,L"/",L"\\");
+ std::wstring pathW;
+ if(path.size()>2 && path.substr(0,2)==L"\\\\")//nas
+ pathW=L"\\\\?\\UNC\\"+path.substr(2);
+ else
+ pathW=L"\\\\?\\"+path;
+ return pathW;
+}
+
+std::string TransferThread::toFinalPath(std::string path)
+{
+ if(path.size()==2 && path.at(1)==':')
+ path+="\\";
+ stringreplaceAll(path,"/","\\");
+ std::string pathW;
+ if(path.size()>2 && path.substr(0,2)=="\\\\")//nas
+ pathW="\\\\?\\UNC\\"+path.substr(2);
+ else
+ pathW="\\\\?\\"+path;
+ return pathW;
+}
+
+bool TransferThread::unlink(const std::wstring &path)
+{
+ return DeleteFileW(TransferThread::toFinalPath(path).c_str()) || RemoveDirectoryW(TransferThread::toFinalPath(path).c_str());
+}
+
+std::string TransferThread::GetLastErrorStdStr()
+{
+ DWORD error = GetLastError();
+ if (error)
+ {
+ LPVOID lpMsgBuf;
+ DWORD bufLen = FormatMessageA(
+ FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS,
+ NULL,
+ error,
+ MAKELANGID(LANG_SYSTEM_DEFAULT, SUBLANG_DEFAULT),
+ (LPSTR) &lpMsgBuf,
+ 0, NULL );
+ if (bufLen)
+ {
+ std::string result((char *)lpMsgBuf, (int)bufLen);
+ LocalFree(lpMsgBuf);
+ return result+" ("+std::to_string(error)+")";
+ }
+ return "1: "+std::to_string(error);
+ }
+ return "2: "+std::to_string(error);
+}
+#else
+bool TransferThread::unlink(const INTERNALTYPEPATH &path)
+{
+ return ::unlink(internalStringTostring(path).c_str())==0;
+}
+#endif
diff --git a/plugins/CopyEngine/Ultracopier-Spec/TransferThread.h b/plugins/CopyEngine/Ultracopier-Spec/TransferThread.h
new file mode 100755
index 0000000..42db854
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/TransferThread.h
@@ -0,0 +1,265 @@
+/** \file TransferThread.h
+\brief Thread changed to manage the inode operation, the signals, canceling, pre and post operations
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include <QObject>
+#include <QTime>
+#include <QThread>
+
+#include <regex>
+#include <vector>
+#include <string>
+#include <utility>
+#include <dirent.h>
+#include <atomic>
+
+#ifdef WIDESTRING
+#define INTERNALTYPEPATH std::wstring
+#define INTERNALTYPECHAR wchar_t
+#else
+#define INTERNALTYPEPATH std::string
+#define INTERNALTYPECHAR char
+#endif
+
+//defore the next define
+#include "CopyEngineUltracopier-SpecVariable.h"
+
+#ifdef Q_OS_UNIX
+ #include <utime.h>
+ #include <time.h>
+ #include <unistd.h>
+ #include <sys/stat.h>
+#endif
+#ifdef Q_OS_WIN32
+ #ifdef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY
+ #include <utime.h>
+ #include <time.h>
+ #include <unistd.h>
+ #include <sys/stat.h>
+ #endif
+#endif
+
+#ifdef Q_OS_WIN32
+#include <windows.h>
+#endif
+
+#include "Environment.h"
+#include "DriveManagement.h"
+#include "StructEnumDefinition_CopyEngine.h"
+
+#ifndef TRANSFERTHREAD_H
+#define TRANSFERTHREAD_H
+
+/// \brief Thread changed to manage the inode operation, the signals, canceling, pre and post operations
+class TransferThread : public QThread
+{
+ Q_OBJECT
+public:
+ explicit TransferThread();
+ ~TransferThread();
+ /// \brief get transfer stat
+ TransferStat getStat() const;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ /// \brief to set the id
+ void setId(int id);
+ #endif
+ /// \brief get the transfer time in ms
+ int64_t transferTime() const;
+ /// \brief to store the transfer id
+ std::atomic<uint64_t> transferId;
+ /// \brief to store the transfer size
+ uint64_t transferSize;
+
+ //not copied size, ...
+ #ifdef Q_OS_WIN32
+ static std::string resolvedName(std::string inode);
+ static std::wstring resolvedName(std::wstring inode);
+ #else
+ static std::string resolvedName(const std::string &inode);
+ static std::wstring resolvedName(const std::wstring &inode);
+ #endif
+ INTERNALTYPEPATH getSourcePath() const;
+ INTERNALTYPEPATH getDestinationPath() const;
+ Ultracopier::CopyMode getMode() const;
+ // \warning check mkpath() call should not exists because only existing dest is allowed now
+ #ifdef Q_OS_UNIX
+ static bool mkpath(const INTERNALTYPEPATH &file_path, const mode_t &mode=0755);
+ static bool mkdir(const INTERNALTYPEPATH &file_path, const mode_t &mode=0755);
+ #else
+ static bool mkpath(const INTERNALTYPEPATH &file_path);
+ static bool mkdir(const INTERNALTYPEPATH &file_path);
+ #endif
+ #ifdef WIDESTRING
+ static INTERNALTYPEPATH stringToInternalString(const std::string& utf8);
+ static std::string internalStringTostring(const INTERNALTYPEPATH& utf16);
+ #else
+ static std::string stringToInternalString(const std::string& utf8);
+ static std::string internalStringTostring(const std::string& utf16);
+ #endif
+ #ifdef Q_OS_WIN32
+ static std::wstring toFinalPath(std::wstring path);
+ static std::string toFinalPath(std::string path);
+ static bool unlink(const std::wstring &path);
+ static std::string GetLastErrorStdStr();
+ #else
+ static bool unlink(const INTERNALTYPEPATH &path);//return true if sucess
+ #endif
+
+ static int64_t readFileMDateTime(const INTERNALTYPEPATH &source);
+ static bool is_symlink(const char * const filename);
+ static bool is_symlink(const INTERNALTYPEPATH &filename);
+ static bool is_file(const char * const filename);
+ static bool is_file(const INTERNALTYPEPATH &filename);
+ static bool is_dir(const char * const filename);
+ static bool is_dir(const INTERNALTYPEPATH &filename);
+ static bool exists(const char * const filename);
+ static bool exists(const INTERNALTYPEPATH &filename);
+ static int64_t file_stat_size(const INTERNALTYPEPATH &filename);
+ static int64_t file_stat_size(const char * const filename);
+ static bool entryInfoList(const INTERNALTYPEPATH &path, std::vector<INTERNALTYPEPATH> &list);
+ static bool rmdir(const INTERNALTYPEPATH &path);
+ struct dirent_uc
+ {
+ #ifdef Q_OS_WIN32
+ int64_t size;
+ #endif
+ INTERNALTYPEPATH d_name;
+ bool isFolder;
+ };
+ static bool entryInfoList(const INTERNALTYPEPATH &path, std::vector<dirent_uc> &list);
+ void setMkFullPath(const bool mkFullPath);
+ /*static int fseeko64(FILE *__stream, uint64_t __off, int __whence);
+ static int ftruncate64(int __fd, uint64_t __length);*/
+ static bool rename(const INTERNALTYPEPATH &source, const INTERNALTYPEPATH &destination);
+protected:
+ void run();
+ virtual void resetExtraVariable();
+ bool isSame();
+ bool destinationExists();
+
+ //different pre-operation
+ bool checkAlwaysRename();///< return true if has been renamed
+ bool canBeMovedDirectly() const;
+ bool canBeCopiedDirectly() const;
+
+ //fonction to edit the file date time
+ bool readSourceFileDateTime(const INTERNALTYPEPATH &source);
+ bool writeDestinationFileDateTime(const INTERNALTYPEPATH &destination);
+ bool readSourceFilePermissions(const INTERNALTYPEPATH &source);
+ bool writeDestinationFilePermissions(const INTERNALTYPEPATH &destination);
+signals:
+ //internal signal
+ void internalStartPostOperation() const;
+ void internalStartPreOperation() const;
+ //force into the right thread
+ void internalTryStartTheTransfer() const;
+ //to send state
+ void preOperationStopped() const;
+ void checkIfItCanBeResumed() const;
+ //void transferStarted();//not sended (and not used then)
+ void readStopped() const;
+ void writeStopped() const;
+ void postOperationStopped() const;
+ //get dialog
+ void fileAlreadyExists(const INTERNALTYPEPATH &info,const INTERNALTYPEPATH &info2,const bool &isSame) const;
+ void errorOnFile(const INTERNALTYPEPATH &info,const std::string &string,const ErrorType &errorType=ErrorType_Normal) const;
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,std::string fonction,std::string text,std::string file,int ligne) const;
+ void tryPutAtBottom() const;
+ /// \brief update the transfer stat
+ void pushStat(const TransferStat &stat,const uint64_t &pos) const;
+public slots:
+ /// \brief to set files to transfer
+ virtual bool setFiles(const INTERNALTYPEPATH& source,const int64_t &size,const INTERNALTYPEPATH& destination,const Ultracopier::CopyMode &mode);
+ /// \brief to set the new name of the destination
+ void setFileRename(const std::string &nameForRename);
+ /// \brief to start the transfer of data
+ void setAlwaysFileExistsAction(const FileExistsAction &action);
+ /// \brief set the copy info and options before runing
+ void setRightTransfer(const bool doRightTransfer);
+ /// \brief set buffer
+ virtual void setBuffer(const bool buffer);
+ /// \brief set keep date
+ void setKeepDate(const bool keepDate);
+ /// \brief put the current file at bottom
+ void putAtBottom();
+
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ void setRsync(const bool rsync);
+ #endif
+
+ void setRenamingRules(const std::string &firstRenamingRule,const std::string &otherRenamingRule);
+
+ void setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles);
+ void setRenameTheOriginalDestination(const bool &renameTheOriginalDestination);
+ void set_updateMount();
+protected:
+ enum MoveReturn
+ {
+ MoveReturn_skip=0,
+ MoveReturn_moved=1,
+ MoveReturn_error=2
+ };
+
+ Ultracopier::CopyMode mode;
+ std::atomic<TransferStat> transfer_stat;
+ bool doRightTransfer;
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ bool rsync;
+ #endif
+ bool keepDate;
+ bool mkFullPath;
+ volatile bool stopIt;
+ #ifdef Q_OS_WIN32
+ int stopItWin;
+ #endif
+ DriveManagement driveManagement;
+ volatile bool canStartTransfer;
+ bool retry;
+ INTERNALTYPEPATH source;
+ INTERNALTYPEPATH destination;
+ int64_t size;
+ FileExistsAction fileExistsAction;
+ FileExistsAction alwaysDoFileExistsAction;
+ bool needSkip,needRemove;
+ int id;
+ bool deletePartiallyTransferredFiles;
+ std::string firstRenamingRule;
+ std::string otherRenamingRule;
+ //error management
+ bool renameTheOriginalDestination;
+ bool fileContentError;
+ bool doTheDateTransfer;
+ int parallelizeIfSmallerThan;
+ //error management
+ bool writeError;
+ bool readError;
+ std::regex renameRegex;
+ #ifdef Q_OS_UNIX
+ utimbuf butime;
+ #else
+ #ifdef Q_OS_WIN32
+ FILETIME ftCreate, ftAccess, ftWrite;
+ std::regex regRead;
+ #else
+ #error Not unix, not windows, fix this
+ #endif
+ #endif
+ #ifdef Q_OS_UNIX
+ struct stat permissions;
+ #else
+ PSECURITY_DESCRIPTOR PSecurityD;
+ PACL dacl;
+ #endif
+ bool havePermission;
+ //to send state
+ bool sended_state_preOperationStopped;
+ //different post-operation
+ bool doFilePostOperation();
+protected:
+ QTime startTransferTime;
+ bool haveTransferTime;
+};
+
+#endif // TRANSFERTHREAD_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.cpp b/plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.cpp
new file mode 100755
index 0000000..d83e8ff
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.cpp
@@ -0,0 +1,883 @@
+#include "ReadThread.h"
+#include "../TransferThread.h"
+
+#ifdef Q_OS_LINUX
+#include <fcntl.h>
+#endif
+
+#ifdef Q_OS_UNIX
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <fcntl.h>
+#endif
+#include <iostream>
+
+ReadThread::ReadThread()
+{
+ start();
+ moveToThread(this);
+ stopIt=false;
+ putInPause=false;
+ blockSize=ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE*1024;
+ setObjectName(QStringLiteral("read"));
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ isInReadLoop=false;
+ tryStartRead=false;
+ lastGoodPosition=0;
+ isOpen.release();
+
+ #ifdef Q_OS_UNIX
+ from=-1;
+ #else
+ from=nullptr;
+ #endif
+}
+
+ReadThread::~ReadThread()
+{
+ stopIt=true;
+ //disconnect(this);//-> do into ~TransferThread()
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ waitNewClockForSpeed.release();
+ #endif
+ pauseMutex.release();
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ waitNewClockForSpeed.release();
+ #endif
+ pauseMutex.release();
+ //if(isOpen.available()<=0)
+ emit internalStartClose();
+ isOpen.acquire();
+ exit();
+ wait();
+}
+
+void ReadThread::run()
+{
+ if(!connect(this,&ReadThread::internalStartOpen, this,&ReadThread::internalOpenSlot, Qt::QueuedConnection))
+ abort();
+ if(!connect(this,&ReadThread::internalStartReopen, this,&ReadThread::internalReopen, Qt::QueuedConnection))
+ abort();
+ if(!connect(this,&ReadThread::internalStartRead, this,&ReadThread::internalRead, Qt::QueuedConnection))
+ abort();
+ if(!connect(this,&ReadThread::internalStartClose, this,&ReadThread::internalCloseSlot, Qt::QueuedConnection))
+ abort();
+ if(!connect(this,&ReadThread::checkIfIsWait, this,&ReadThread::isInWait, Qt::QueuedConnection))
+ abort();
+ exec();
+}
+
+void ReadThread::openRead(const INTERNALTYPEPATH &file, const Ultracopier::CopyMode &mode)
+{
+ if(!isRunning())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] the thread not running to open destination"+TransferThread::internalStringTostring(file));
+ errorString_internal=tr("Internal error, please report it!").toStdString();
+ emit error();
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] open source: "+TransferThread::internalStringTostring(file));
+ #ifdef Q_OS_UNIX
+ if(from>=0)
+ #else
+ if(from!=NULL)
+ #endif
+ {
+ if(file==this->file)
+ {
+ std::cerr << "["+std::to_string(id)+"] Try reopen already opened same file: " << TransferThread::internalStringTostring(file) << std::endl;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Try reopen already opened same file: "+TransferThread::internalStringTostring(file));
+ }
+ else
+ {
+ std::cerr << "["+std::to_string(id)+"] previous file is already open: "+TransferThread::internalStringTostring(this->file) << ", can't open " << TransferThread::internalStringTostring(file) << std::endl;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] previous file is already open: "+TransferThread::internalStringTostring(this->file));
+ }
+ internalCloseSlot();
+ /* try bypass the bug
+ return;//better than hard shutdown
+ abort();
+ emit internalStartClose();*/
+ isOpen.acquire();
+ isOpen.release();
+ }
+ if(isInReadLoop)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] previous file is already readding: "+TransferThread::internalStringTostring(file));
+ return;
+ }
+ if(tryStartRead)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] previous file is already try read: "+TransferThread::internalStringTostring(file));
+ return;
+ }
+ stopIt=false;
+ fakeMode=false;
+ lastGoodPosition=0;
+ this->file=file;
+ this->mode=mode;
+ emit internalStartOpen();
+}
+
+std::string ReadThread::errorString() const
+{
+ return errorString_internal;
+}
+
+void ReadThread::stop()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stop()");
+ stopIt=true;
+ pauseMutex.release();
+ pauseMutex.release();
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ waitNewClockForSpeed.release();
+ #endif
+ //if(isOpen.available()<=0 || from>=0)
+ emit internalStartClose();
+}
+
+void ReadThread::pause()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] try put read thread in pause");
+ if(stopIt)
+ return;
+ pauseMutex.tryAcquire(pauseMutex.available());
+ putInPause=true;
+}
+
+void ReadThread::resume()
+{
+ if(putInPause)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ putInPause=false;
+ stopIt=false;
+ }
+ else
+ return;
+ #ifdef Q_OS_UNIX
+ if(from<0)
+ #else
+ if(from==NULL)
+ #endif
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] file is not open");
+ return;
+ }
+ pauseMutex.release();
+}
+
+bool ReadThread::seek(const int64_t &position)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start with: "+std::to_string(position));
+ if((int64_t)position>size())
+ return false;
+
+ #ifdef Q_OS_UNIX
+ if(from<0)
+ abort();//internal failure
+ return lseek(from,position,SEEK_SET)==position;
+ #else
+ if(from==NULL)
+ abort();//internal failure
+ LARGE_INTEGER liSize;
+ liSize.QuadPart=position;
+ return SetFilePointerEx(from,liSize,NULL,FILE_BEGIN);
+ #endif
+}
+
+int64_t ReadThread::size() const
+{
+ #ifdef Q_OS_UNIX
+ struct stat st;
+ if(fstat(from, &st)==0)
+ return st.st_size;
+ else
+ {
+ struct stat source_statbuf;
+ #ifdef Q_OS_UNIX
+ if(lstat(TransferThread::internalStringTostring(file).c_str(), &source_statbuf)==0)
+ #else
+ if(stat(TransferThread::internalStringTostring(file).c_str(), &source_statbuf)==0)
+ #endif
+ return source_statbuf.st_size;
+ else
+ return -1;
+ }
+ #else
+ LARGE_INTEGER lpFileSize;
+ if(!GetFileSizeEx(from,&lpFileSize))
+ {
+ WIN32_FILE_ATTRIBUTE_DATA sourceW;
+ if(GetFileAttributesExW(file.c_str(),GetFileExInfoStandard,&sourceW))
+ {
+ uint64_t size=sourceW.nFileSizeHigh;
+ size<<=32;
+ size|=sourceW.nFileSizeLow;
+ return size;
+ }
+ else
+ return -1;
+ }
+ else
+ return lpFileSize.QuadPart;
+ #endif
+}
+
+void ReadThread::postOperation()
+{
+ emit internalStartClose();
+}
+
+bool ReadThread::internalOpenSlot()
+{
+ return internalOpen();
+}
+
+bool ReadThread::internalOpen(bool resetLastGoodPosition)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] internalOpen source: "+
+ TransferThread::internalStringTostring(file)+", open in write because move: "+std::to_string(mode==Ultracopier::Move));
+ if(stopIt)
+ {
+ emit closed();
+ return false;
+ }
+ putInPause=false;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=InodeOperation;
+ #endif
+ #ifdef Q_OS_UNIX
+ if(from>=0)
+ #else
+ if(from!=NULL)
+ #endif
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] this file is already open: "+TransferThread::internalStringTostring(file));
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ emit closed();
+ return false;
+ }
+ /*can have permision to remove but not write
+ * if(mode==Ultracopier::Move)
+ openMode=QIODevice::ReadWrite;*/
+ seekToZero=false;
+ #ifdef Q_OS_UNIX
+ from = ::open(TransferThread::internalStringTostring(file).c_str(), O_RDONLY);
+ #else
+ DWORD flags=FILE_ATTRIBUTE_NORMAL;
+ if(os_spec_flags)
+ flags|=FILE_FLAG_SEQUENTIAL_SCAN;
+ from=CreateFileW(file.c_str(),GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,flags,NULL);
+ #endif
+ #ifdef Q_OS_UNIX
+ if(from>=0)
+ #else
+ if(from!=INVALID_HANDLE_VALUE)
+ #endif
+ {
+ if(stopIt)
+ {
+ #ifdef Q_OS_UNIX
+ if(::close(from)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+std::to_string(errno));
+ from=-1;
+ #else
+ if(CloseHandle(from)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+TransferThread::GetLastErrorStdStr());
+ from=NULL;
+ #endif
+ this->file.clear();
+ emit closed();
+ return false;
+ }
+ pauseMutex.tryAcquire(pauseMutex.available());
+ #ifdef Q_OS_LINUX
+ if(os_spec_flags)
+ {
+ posix_fadvise(from, 0, 0, POSIX_FADV_WILLNEED);
+ posix_fadvise(from, 0, 0, POSIX_FADV_SEQUENTIAL);
+ posix_fadvise(from, 0, 0, POSIX_FADV_NOREUSE);
+ }
+ #endif
+ if(stopIt)
+ {
+ #ifdef Q_OS_UNIX
+ if(::close(from)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+std::to_string(errno));
+ from=-1;
+ #else
+ if(CloseHandle(from)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+TransferThread::GetLastErrorStdStr());
+ from=NULL;
+ #endif
+ this->file.clear();
+ emit closed();
+ return false;
+ }
+
+ //do one at same time
+ #ifdef Q_OS_UNIX
+ {
+ struct stat st;
+ fstat(from, &st);
+ size_at_open=st.st_size;
+ #ifdef Q_OS_MAC
+ mtime_at_open=st.st_mtimespec.tv_sec;
+ #else
+ mtime_at_open=st.st_mtim.tv_sec;
+ #endif
+ }
+ #else
+ {
+ LARGE_INTEGER lpFileSize;
+ GetFileSizeEx(from,&lpFileSize);
+ size_at_open=lpFileSize.QuadPart;
+ FILETIME LastWriteTime;
+ GetFileTime(from,NULL,NULL,&LastWriteTime);
+ mtime_at_open=LastWriteTime;
+ }
+ #endif
+
+ putInPause=false;
+ if(resetLastGoodPosition)
+ lastGoodPosition=0;
+ if(!seek(lastGoodPosition))
+ {
+ #ifdef Q_OS_WIN32
+ errorString_internal=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to seek after open: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal
+ );
+ #else
+ int t=errno;
+ errorString_internal=strerror(t);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to seek after open: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal+" ("+std::to_string(t)+")"
+ );
+ #endif
+
+ #ifdef Q_OS_UNIX
+ if(::close(from)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+std::to_string(errno));
+ from=-1;
+ #else
+ if(CloseHandle(from)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+TransferThread::GetLastErrorStdStr());
+ from=NULL;
+ #endif
+ this->file.clear();
+
+ emit error();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ return false;
+ }
+ isOpen.acquire();
+ emit opened();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ return true;
+ }
+ else
+ {
+ #ifdef Q_OS_WIN32
+ from=NULL;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ DWORD e = GetLastError();
+ #endif
+ errorString_internal=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to open: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal+" ("+std::to_string(e)+")"
+ );
+ #else
+ int t=errno;
+ errorString_internal=strerror(t);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to open: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal+" ("+std::to_string(t)+")"
+ );
+ #endif
+
+ emit error();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ return false;
+ }
+}
+
+void ReadThread::internalRead()
+{
+ if(writeThread==nullptr)
+ abort();
+ isInReadLoop=true;
+ tryStartRead=false;
+ if(stopIt)
+ {
+ if(seekToZero &&
+ #ifdef Q_OS_WIN32
+ from!=NULL
+ #else
+ from>=0
+ #endif
+ )
+ {
+ stopIt=false;
+ lastGoodPosition=0;
+ seek(0);
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopIt == true, then quit");
+ isInReadLoop=false;
+ internalClose();
+ return;
+ }
+ }
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=InodeOperation;
+ #endif
+ int sizeReaden=0;
+ #ifdef Q_OS_WIN32
+ if(from==NULL)
+ #else
+ if(from<0)
+ #endif
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] is not open!");
+ isInReadLoop=false;
+ return;
+ }
+ char * data=NULL;
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ numberOfBlockCopied=0;
+ #endif
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start the copy");
+ emit readIsStarted();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ if(stopIt)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopIt == true, then quit");
+ isInReadLoop=false;
+ internalClose();
+ return;
+ }
+ do
+ {
+ //read one block
+ if(putInPause)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"["+std::to_string(id)+"] read put in pause");
+ if(stopIt)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopIt == true, then quit");
+ isInReadLoop=false;
+ internalClose();
+ return;
+ }
+ pauseMutex.acquire();
+ if(stopIt)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopIt == true, then quit");
+ isInReadLoop=false;
+ internalClose();
+ return;
+ }
+ }
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Read;
+ #endif
+ data=(char *)malloc(blockSize);
+ if(data==NULL)
+ {
+ errorString_internal="Out of memory";
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to read the source file: "+TransferThread::internalStringTostring(file)+
+ ", error: "+"Out of memory"
+ );
+ isInReadLoop=false;
+ emit error();
+ return;
+ }
+ #ifdef Q_OS_WIN32
+ DWORD lpNumberOfBytesRead=0;
+ const BOOL retRead=ReadFile(from,data,blockSize,
+ &lpNumberOfBytesRead,NULL);
+ sizeReaden=lpNumberOfBytesRead;
+ #else
+ sizeReaden=::read(from,data,blockSize);
+ #endif
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+
+ #ifdef Q_OS_WIN32
+ if(retRead==FALSE)
+ #else
+ if(sizeReaden<0)
+ #endif
+ {
+ #ifdef Q_OS_WIN32
+ errorString_internal=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to read the source file: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal
+ );
+ #else
+ int t=errno;
+ errorString_internal=tr("Unable to read the source file: ").toStdString()+strerror(t);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to read the source file: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal+" ("+std::to_string(t)+")"
+ );
+ #endif
+ isInReadLoop=false;
+ emit error();
+ return;
+ }
+ if(sizeReaden>0)
+ {
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=WaitWritePipe;
+ #endif
+ if(!writeThread->write(data,sizeReaden))//speed limitation here
+ {
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ if(!stopIt)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopped because the write is stopped: "+std::to_string(lastGoodPosition));
+ stopIt=true;
+ }
+ }
+
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+
+ if(stopIt)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopIt == true, then quit");
+ isInReadLoop=false;
+ internalClose();//need re-open the destination and then the source
+ return;
+ }
+ lastGoodPosition+=sizeReaden;
+ }
+ /*
+ if(lastGoodPosition>16*1024)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("[")+QString::number(id)+QStringLiteral("] ")+QStringLiteral("Test error in reading: %1 (%2)").arg(file.errorString()).arg(file.error()));
+ errorString_internal=QStringLiteral("Test error in reading: %1 (%2)").arg(file.errorString()).arg(file.error());
+ isInReadLoop=false;
+ emit error();
+ return;
+ }
+ */
+ }
+ while(sizeReaden>0 && !stopIt);
+ if(lastGoodPosition>size())
+ {
+ errorString_internal=tr("File truncated during the read, possible data change").toStdString();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Source truncated during the read");
+ isInReadLoop=false;
+ emit error();
+ return;
+ }
+ isInReadLoop=false;
+ if(stopIt)
+ {
+ stopIt=false;
+ return;
+ }
+ postOperation();
+ emit readIsStopped();//will product by signal connection writeThread->endIsDetected();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stop the read");
+}
+
+void ReadThread::startRead()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ if(tryStartRead)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] already in try start");
+ return;
+ }
+ if(isInReadLoop)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] double event dropped");
+ else
+ {
+ tryStartRead=true;
+ emit internalStartRead();
+ }
+}
+
+void ReadThread::internalCloseSlot()
+{
+ internalClose();
+}
+
+void ReadThread::internalClose(bool callByTheDestructor)
+{
+ /// \note never send signal here, because it's called by the destructor
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("[")+QString::number(id)+QStringLiteral("] start"));
+ bool closeTheFile=false;
+ if(!fakeMode)
+ {
+ #ifdef Q_OS_UNIX
+ if(from>=0)
+ #else
+ if(from!=NULL)
+ #endif
+ {
+ closeTheFile=true;
+ #ifdef Q_OS_UNIX
+ if(::close(from)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+std::to_string(errno));
+ from=-1;
+ #else
+ if(CloseHandle(from)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+TransferThread::GetLastErrorStdStr());
+ from=NULL;
+ #endif
+ this->file.clear();
+ isInReadLoop=false;
+ }
+ }
+ if(!callByTheDestructor)
+ emit closed();
+
+ /// \note always the last of this function
+ if(closeTheFile)
+ isOpen.release();
+}
+
+/** \brief set block size
+\param block the new block size in B
+\return Return true if succes */
+bool ReadThread::setBlockSize(const int blockSize)
+{
+ //can be smaller than min block size to do correct speed limitation
+ if(blockSize>1 && blockSize<ULTRACOPIER_PLUGIN_MAX_BLOCK_SIZE*1024)
+ {
+ this->blockSize=blockSize;
+ //set the new max speed because the timer have changed
+ return true;
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"block size out of range: "+std::to_string(blockSize));
+ return false;
+ }
+}
+
+#ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+/*! \brief Set the max speed
+\param tempMaxSpeed Set the max speed in KB/s, 0 for no limit */
+void ReadThread::setMultiForBigSpeed(const int &multiForBigSpeed)
+{
+ this->multiForBigSpeed=multiForBigSpeed;
+ waitNewClockForSpeed.release();
+}
+
+/// \brief For give timer every X ms
+void ReadThread::timeOfTheBlockCopyFinished()
+{
+ /* this is the old way to limit the speed, it product blocking
+ *if(waitNewClockForSpeed.available()<ULTRACOPIER_PLUGIN_NUMSEMSPEEDMANAGEMENT)
+ waitNewClockForSpeed.release();*/
+
+ //try this new way:
+ /* only if speed limited, else will accumulate waitNewClockForSpeed
+ * Disabled because: Stop call of this method when no speed limit
+ if(this->maxSpeed>0)*/
+ if(waitNewClockForSpeed.available()<=1)
+ waitNewClockForSpeed.release();
+}
+#endif
+
+/// \brief do the fake open
+void ReadThread::fakeOpen()
+{
+ fakeMode=true;
+ emit opened();
+}
+
+/// \brief do the fake writeIsStarted
+void ReadThread::fakeReadIsStarted()
+{
+ emit readIsStarted();
+}
+
+/// \brief do the fake writeIsStopped
+void ReadThread::fakeReadIsStopped()
+{
+ postOperation();
+ emit readIsStopped();
+}
+
+int64_t ReadThread::getLastGoodPosition() const
+{
+ /*if(lastGoodPosition>file.size())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,QStringLiteral("[")+QString::number(id)+QStringLiteral("] Bug, the lastGoodPosition is greater than the file size!"));
+ return file.size();
+ }
+ else*/
+ return lastGoodPosition;
+}
+
+//reopen after an error
+void ReadThread::reopen()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ if(isInReadLoop)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] try reopen where read is not finish");
+ return;
+ }
+ stopIt=true;
+ emit internalStartReopen();
+}
+
+bool ReadThread::internalReopen()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ stopIt=false;
+ #ifdef Q_OS_UNIX
+ if(from>=0)
+ #else
+ if(from!=NULL)
+ #endif
+ {
+ #ifdef Q_OS_UNIX
+ if(::close(from)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+std::to_string(errno));
+ from=-1;
+ #else
+ if(CloseHandle(from)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+TransferThread::GetLastErrorStdStr());
+ from=NULL;
+ #endif
+ this->file.clear();
+ isOpen.release();
+ }
+ int64_t temp_size=-1;
+ #ifdef Q_OS_UNIX
+ uint64_t temp_mtime=0;
+ {
+ struct stat st;
+ if(::stat(TransferThread::internalStringTostring(file).c_str(), &st)!=-1)
+ {
+ temp_size=st.st_size;
+ #ifdef Q_OS_MAC
+ temp_mtime=st.st_mtimespec.tv_sec;
+ #else
+ temp_mtime=st.st_mtim.tv_sec;
+ #endif
+ }
+ }
+ if(size_at_open!=temp_size || mtime_at_open!=temp_mtime)
+ #else
+ FILETIME temp_mtime;
+ {
+ LARGE_INTEGER FileSize;
+ GetFileSizeEx(from,&FileSize);
+ temp_size=FileSize.QuadPart;
+ GetFileTime(from,NULL,NULL,&temp_mtime);
+ }
+ if(size_at_open!=temp_size || mtime_at_open.dwLowDateTime!=temp_mtime.dwLowDateTime || mtime_at_open.dwHighDateTime!=temp_mtime.dwHighDateTime)
+ #endif
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] source file have changed since the last open, restart all");
+ //fix this function like the close function
+ if(internalOpen(true))
+ {
+ emit resumeAfterErrorByRestartAll();
+ return true;
+ }
+ else
+ return false;
+ }
+ else
+ {
+ //fix this function like the close function
+ if(internalOpen(false))
+ {
+ emit resumeAfterErrorByRestartAtTheLastPosition();
+ return true;
+ }
+ else
+ return false;
+ }
+ return false;
+}
+
+//set the write thread
+void ReadThread::setWriteThread(WriteThread * writeThread)
+{
+ this->writeThread=writeThread;
+}
+
+#ifdef ULTRACOPIER_PLUGIN_DEBUG
+//to set the id
+void ReadThread::setId(int id)
+{
+ this->id=id;
+}
+#endif
+
+void ReadThread::seekToZeroAndWait()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ stopIt=true;
+ seekToZero=true;
+ emit checkIfIsWait();
+}
+
+void ReadThread::isInWait()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ if(seekToZero)
+ {
+ stopIt=false;
+ seekToZero=false;
+ #ifdef Q_OS_UNIX
+ if(from>=0)
+ #else
+ if(from!=NULL)
+ #endif
+ {
+ lastGoodPosition=0;
+ seek(0);
+ }
+ else
+ internalOpen(true);
+ emit isSeekToZeroAndWait();
+ }
+}
+
+bool ReadThread::isReading() const
+{
+ return isInReadLoop;
+}
+
+void ReadThread::setOsSpecFlags(bool os_spec_flags)
+{
+ this->os_spec_flags=os_spec_flags;
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.h b/plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.h
new file mode 100755
index 0000000..4de0129
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.h
@@ -0,0 +1,163 @@
+/** \file ReadThread.h
+\brief Thread changed to open/close and read the source file
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef READTHREAD_H
+#define READTHREAD_H
+
+#include <QThread>
+#include <QByteArray>
+#include <QSemaphore>
+#include <QCryptographicHash>
+
+#ifdef Q_OS_WIN32
+#include <windows.h>
+#endif
+
+#include "WriteThread.h"
+#include "../Environment.h"
+#include "../StructEnumDefinition_CopyEngine.h"
+#include "../CopyEngineUltracopier-SpecVariable.h"
+
+#ifdef WIDESTRING
+#define INTERNALTYPEPATH std::wstring
+#define INTERNALTYPECHAR wchar_t
+#else
+#define INTERNALTYPEPATH std::string
+#define INTERNALTYPECHAR char
+#endif
+
+/// \brief Thread changed to open/close and read the source file
+class ReadThread : public QThread
+{
+ Q_OBJECT
+public:
+ explicit ReadThread();
+ ~ReadThread();
+protected:
+ void run();
+public:
+ /// \brief open with the name and copy mode
+ void openRead(const INTERNALTYPEPATH &file, const Ultracopier::CopyMode &mode);
+ /// \brief return the error string
+ std::string errorString() const;
+ //QByteArray read(qint64 position,qint64 maxSize);
+ /// \brief stop the copy
+ void stop();
+ /// \brief put the copy in pause
+ void pause();
+ /// \brief resume the copy
+ void resume();
+ /// \brief get the size of the source file
+ int64_t size() const;
+ /// \brief get the last good position
+ int64_t getLastGoodPosition() const;
+ /// \brief start the reading of the source file
+ void startRead();
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ /// \brief set the current max speed in KB/s
+ void setMultiForBigSpeed(const int &multiForBigSpeed);
+ #endif
+ /// \brief set block size in KB mostly for speed
+ bool setBlockSize(const int blockSize);
+ /// \brief reopen after an error
+ void reopen();
+ /// \brief set the write thread
+ void setWriteThread(WriteThread * writeThread);
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ /// \brief to set the id
+ void setId(int id);
+ /// \brief stat
+ enum ReadStat
+ {
+ Idle=0,
+ InodeOperation=1,
+ Read=2,
+ WaitWritePipe=3
+ };
+ ReadStat status;
+ #endif
+ /// \brief return if it's reading
+ bool isReading() const;
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ /// \brief executed at regular interval to do a speed throling
+ void timeOfTheBlockCopyFinished();
+ #endif
+ /// \brief do the fake open
+ void fakeOpen();
+ /// \brief do the fake readIsStarted
+ void fakeReadIsStarted();
+ /// \brief do the fake readIsStopped
+ void fakeReadIsStopped();
+
+ void setOsSpecFlags(bool os_spec_flags);
+public slots:
+ /// \brief to reset the copy, and put at the same state when it just open
+ void seekToZeroAndWait();
+ void postOperation();
+signals:
+ void error() const;
+ void opened() const;
+ void readIsStarted() const;
+ void readIsStopped() const;
+ void closed() const;
+ void isSeekToZeroAndWait() const;
+ void checkIfIsWait() const;
+ void resumeAfterErrorByRestartAll() const;
+ void resumeAfterErrorByRestartAtTheLastPosition() const;
+ // internal signals
+ void internalStartOpen() const;
+ void internalStartReopen() const;
+ void internalStartRead() const;
+ void internalStartClose() const;
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,std::string fonction,std::string text,std::string file,int ligne) const;
+
+private:
+ std::string errorString_internal;
+ volatile bool stopIt;
+ Ultracopier::CopyMode mode;
+ bool os_spec_flags;
+ int64_t lastGoodPosition;
+ volatile int blockSize;//in Bytes
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ QSemaphore waitNewClockForSpeed;
+ volatile int numberOfBlockCopied; ///< Multiple for count the number of block copied
+ volatile int multiForBigSpeed; ///< Multiple for count the number of block needed
+ #endif
+ WriteThread* writeThread;
+ int id;
+ QSemaphore isOpen;
+ QSemaphore pauseMutex;
+ volatile bool putInPause;
+ volatile bool isInReadLoop;
+ volatile bool seekToZero;
+ volatile bool tryStartRead;
+ int64_t size_at_open;
+ #ifdef Q_OS_UNIX
+ uint64_t mtime_at_open;
+ #else
+ FILETIME mtime_at_open;
+ #endif
+ bool fakeMode;
+ //internal function
+ bool seek(const int64_t &position);/// \todo search if is use full
+
+ #ifdef Q_OS_UNIX
+ int from;
+ #else
+ HANDLE from;
+ #endif
+ INTERNALTYPEPATH file;
+private slots:
+ bool internalOpen(bool resetLastGoodPosition=true);
+ bool internalOpenSlot();
+ bool internalReopen();
+ void internalRead();
+ void internalClose(bool callByTheDestructor=false);
+ void internalCloseSlot();
+ void isInWait();
+};
+
+#endif // READTHREAD_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp b/plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp
new file mode 100755
index 0000000..b5af928
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp
@@ -0,0 +1,1442 @@
+//presume bug linked as multple paralelle inode to resume after "overwrite"
+//then do overwrite node function to not re-set the file name
+
+#include "TransferThreadAsync.h"
+#include <string>
+#include <dirent.h>
+
+#ifdef Q_OS_WIN32
+#include <accctrl.h>
+#include <aclapi.h>
+#include <winbase.h>
+
+#define REPARSE_MOUNTPOINT_HEADER_SIZE 8
+
+typedef struct _REPARSE_DATA_BUFFER {
+ ULONG ReparseTag;
+ USHORT ReparseDataLength;
+ USHORT Reserved;
+ union {
+ struct {
+ USHORT SubstituteNameOffset;
+ USHORT SubstituteNameLength;
+ USHORT PrintNameOffset;
+ USHORT PrintNameLength;
+ ULONG Flags;
+ WCHAR PathBuffer[1];
+ } SymbolicLinkReparseBuffer;
+ struct {
+ USHORT SubstituteNameOffset;
+ USHORT SubstituteNameLength;
+ USHORT PrintNameOffset;
+ USHORT PrintNameLength;
+ WCHAR PathBuffer[1];
+ } MountPointReparseBuffer;
+ struct {
+ UCHAR DataBuffer[1];
+ } GenericReparseBuffer;
+ } DUMMYUNIONNAME;
+} REPARSE_DATA_BUFFER, *PREPARSE_DATA_BUFFER;
+
+/*memo> HANDLE hToken = NULL;
+TOKEN_PRIVILEGES tp;
+try {
+ if (!::OpenProcessToken(::GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) throw ::GetLastError();
+ if (!::LookupPrivilegeValue(NULL, SE_RESTORE_NAME, &tp.Privileges[0].Luid)) throw ::GetLastError();
+ tp.PrivilegeCount = 1;
+ tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
+ if (!::AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), NULL, NULL)) throw ::GetLastError();
+}
+catch (DWORD) {
+ ok=false;
+}
+if (hToken)
+ ::CloseHandle(hToken);*/
+#endif
+
+#include "../../../../cpp11addition.h"
+
+#ifndef Q_OS_WIN32
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#endif
+
+TransferThreadAsync::TransferThreadAsync() :
+ transferProgression(0)
+{
+ haveStartTime=false;
+ #ifndef Q_OS_UNIX
+ PSecurityD=NULL;
+ dacl=NULL;
+ #endif
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+QStringLiteral("] start: ")+QString::number((qint64)QThread::currentThreadId())));
+ //the error push
+ readThread.setWriteThread(&writeThread);
+
+ TransferThread::run();
+ if(!connect(this,&TransferThreadAsync::internalStartPostOperation, this, &TransferThreadAsync::doFilePostOperation, Qt::QueuedConnection))
+ abort();
+
+ //the thread change operation
+ if(!connect(this,&TransferThread::internalStartPreOperation, this, &TransferThreadAsync::preOperation, Qt::QueuedConnection))
+ abort();
+ if(!connect(this,&TransferThread::internalStartPostOperation, this, &TransferThreadAsync::postOperation, Qt::QueuedConnection))
+ abort();
+ if(!connect(this,&TransferThread::internalTryStartTheTransfer, this, &TransferThreadAsync::internalStartTheTransfer, Qt::QueuedConnection))
+ abort();
+
+ //the error push
+ if(!connect(&readThread,&ReadThread::error, this, &TransferThreadAsync::read_error, Qt::QueuedConnection))
+ abort();
+ if(!connect(&writeThread,&WriteThread::error, this, &TransferThreadAsync::write_error, Qt::QueuedConnection))
+ abort();
+ //the state change operation
+ if(!connect(&readThread,&ReadThread::readIsStopped, this, &TransferThreadAsync::read_readIsStopped, Qt::QueuedConnection))
+ abort();
+ if(!connect(&readThread,&ReadThread::readIsStopped, &writeThread, &WriteThread::endIsDetected, Qt::QueuedConnection))
+ abort();
+ if(!connect(&readThread,&ReadThread::closed, this, &TransferThreadAsync::read_closed, Qt::QueuedConnection))
+ abort();
+ if(!connect(&writeThread,&WriteThread::closed, this, &TransferThreadAsync::write_closed, Qt::QueuedConnection))
+ abort();
+
+ if(!connect(this, &TransferThreadAsync::openRead,&readThread,&ReadThread::openRead, Qt::QueuedConnection))
+ abort();
+ if(!connect(this, &TransferThreadAsync::openWrite,&writeThread,&WriteThread::openWrite, Qt::QueuedConnection))
+ abort();
+
+ //when both is ready, startRead()
+ if(!connect(&readThread,&ReadThread::opened, this, &TransferThreadAsync::read_opened, Qt::QueuedConnection))
+ abort();
+ if(!connect(&writeThread,&WriteThread::opened, this, &TransferThreadAsync::write_opened, Qt::QueuedConnection))
+ abort();
+
+ //error management
+/* if(!connect(&readThread,&ReadThread::isSeekToZeroAndWait, this, &TransferThreadAsync::readThreadIsSeekToZeroAndWait, Qt::QueuedConnection))
+ abort();
+ if(!connect(&readThread,&ReadThread::resumeAfterErrorByRestartAtTheLastPosition,this, &TransferThreadAsync::readThreadResumeAfterError, Qt::QueuedConnection))
+ abort();
+ if(!connect(&readThread,&ReadThread::resumeAfterErrorByRestartAll,&writeThread, &WriteThread::flushAndSeekToZero, Qt::QueuedConnection))
+ abort();
+ if(!connect(&writeThread,&WriteThread::flushedAndSeekedToZero, this, &TransferThread::readThreadResumeAfterError, Qt::QueuedConnection))
+ abort();*/
+
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(!connect(&readThread,&ReadThread::debugInformation, this, &TransferThreadAsync::debugInformation, Qt::QueuedConnection))
+ abort();
+ if(!connect(&writeThread,&WriteThread::debugInformation, this, &TransferThreadAsync::debugInformation, Qt::QueuedConnection))
+ abort();
+ if(!connect(&driveManagement,&DriveManagement::debugInformation,this, &TransferThreadAsync::debugInformation, Qt::QueuedConnection))
+ abort();
+ #endif
+
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start: "+std::to_string((int64_t)QThread::currentThreadId()));
+ start();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stop: "+std::to_string((int64_t)QThread::currentThreadId()));
+}
+
+TransferThreadAsync::~TransferThreadAsync()
+{
+ #ifdef Q_OS_WIN32
+ stopItWin=1;
+ #endif
+ stopIt=true;
+ readThread.stop();
+ readThread.exit();
+ readThread.wait();
+ writeThread.stop();
+ writeThread.exit();
+ writeThread.wait();
+ exit(0);
+ wait();
+ //else cash without this disconnect
+ //disconnect(&readThread);
+ //disconnect(&writeThread);
+ #ifndef Q_OS_UNIX
+ if(PSecurityD!=NULL)
+ {
+ //free(PSecurityD);
+ PSecurityD=NULL;
+ }
+ if(dacl!=NULL)
+ {
+ //free(dacl);
+ dacl=NULL;
+ }
+ #endif
+}
+
+void TransferThreadAsync::run()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start: "+std::to_string((int64_t)QThread::currentThreadId()));
+ moveToThread(this);
+ exec();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stop: "+std::to_string((int64_t)QThread::currentThreadId()));
+}
+
+void TransferThreadAsync::startTheTransfer()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+("] start"));
+ if(transferId==0)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] can't start transfert if transferId==0"));
+ return;
+ }
+ startTransferTime.restart();
+ haveTransferTime=true;
+ emit internalTryStartTheTransfer();
+}
+
+void TransferThreadAsync::internalStartTheTransfer()
+{
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(QThread::currentThread()!=this)
+ abort();
+ #endif
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+("] start"));
+ if(transfer_stat==TransferStat_Idle)
+ {
+ if(mode!=Ultracopier::Move)
+ {
+ /// \bug can pass here because in case of direct move on same media, it return to idle stat directly
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] can't start transfert at idle"));
+ }
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+("] start"));
+ if(transfer_stat==TransferStat_PostOperation)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] can't start transfert at PostOperation"));
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+("] start"));
+ if(transfer_stat==TransferStat_Transfer)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] can't start transfert at Transfer"));
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+("] start"));
+ if(canStartTransfer)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+("] canStartTransfer is already set to true"));
+ // call for second time, first time was not ready, if blocked in preop why?
+ //ifCanStartTransfer();
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+("] check how start the transfer"));
+ canStartTransfer=true;
+
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+("] start directly the transfer"));
+ ifCanStartTransfer();
+}
+
+bool TransferThreadAsync::setFiles(const INTERNALTYPEPATH& source, const int64_t &size, const INTERNALTYPEPATH& destination, const Ultracopier::CopyMode &mode)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start, source: "+TransferThread::internalStringTostring(source)+
+ ", destination: "+TransferThread::internalStringTostring(destination));
+ if(transfer_stat!=TransferStat_Idle)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] already used, source: ")+TransferThread::internalStringTostring(source)+
+ ", destination: "+TransferThread::internalStringTostring(destination));
+ return false;
+ }
+ if(!isRunning())
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] The current thread is not running");
+ if(!TransferThread::setFiles(source,size,destination,mode))
+ return false;
+ transferProgression=0;
+ //transferSize=0;//set by ListThread at currentTransferThread->transferSize=currentActionToDoTransfer.size; very important to do parallel small file
+ sended_state_readStopped=false;
+ readIsClosedVariable=false;
+ writeIsClosedVariable=false;
+ readIsOpenVariable=false;
+ writeIsOpenVariable=false;
+ realMove=false;
+ return true;
+}
+
+void TransferThreadAsync::resetExtraVariable()
+{
+ transferProgression=0;
+ readIsOpenVariable=false;
+ writeIsOpenVariable=false;
+ TransferThread::resetExtraVariable();
+}
+
+bool TransferThreadAsync::remainFileOpen() const
+{
+ return remainSourceOpen() || remainDestinationOpen();
+}
+
+bool TransferThreadAsync::remainSourceOpen() const
+{
+ return !readIsClosedVariable;
+}
+
+bool TransferThreadAsync::remainDestinationOpen() const
+{
+ return !writeIsClosedVariable;
+}
+
+void TransferThreadAsync::preOperation()
+{
+ if(transfer_stat!=TransferStat_PreOperation)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] already used, source: ")+
+ TransferThread::internalStringTostring(source)+", destination: "+TransferThread::internalStringTostring(destination)
+ +" transfer_stat: "+std::to_string(transfer_stat));
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start: source: "+
+ TransferThread::internalStringTostring(source)+", destination: "+TransferThread::internalStringTostring(destination));
+ haveStartTime=true;
+ needRemove=false;
+ if(isSame())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] is same "+
+ TransferThread::internalStringTostring(source)+" than "+TransferThread::internalStringTostring(destination));
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after is same");
+ /*Why this code?
+ if(readError)
+ {
+ readError=false;
+ return;
+ }*/
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] before destination exists");
+ if(destinationExists())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] destination exists: "+TransferThread::internalStringTostring(destination));
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after destination exists");
+ /*Why this code?
+ if(readError)
+ {
+ readError=false;
+ return;
+ }*/
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] before keep date");
+ #ifdef Q_OS_WIN32
+ doTheDateTransfer=!is_symlink(source);
+ #else
+ doTheDateTransfer=true;
+ #endif
+ if(doTheDateTransfer)
+ {
+ doTheDateTransfer=readSourceFileDateTime(source);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after keep date");
+ #ifdef Q_OS_MAC
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] read the source time: "+std::to_string(butime.modtime));
+ #endif
+ if(!doTheDateTransfer)
+ {
+ //will have the real error at source open
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] unable to read the source time: "+TransferThread::internalStringTostring(source));
+ if(keepDate)
+ {
+ emit errorOnFile(source,tr("Wrong modification date or unable to get it, you can disable time transfer to do it").toStdString());
+ return;
+ }
+ }
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] before perm");
+ if(doRightTransfer)
+ havePermission=readSourceFilePermissions(source);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after perm");
+ transfer_stat=TransferStat_WaitForTheTransfer;
+ ifCanStartTransfer();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] emit preOperationStopped()");
+ emit preOperationStopped();
+}
+
+void TransferThreadAsync::postOperation()
+{
+ doFilePostOperation();
+}
+
+#ifdef Q_OS_WIN32
+DWORD CALLBACK progressRoutine(
+ LARGE_INTEGER TotalFileSize,
+ LARGE_INTEGER TotalBytesTransferred,
+ LARGE_INTEGER StreamSize,
+ LARGE_INTEGER StreamBytesTransferred,
+ DWORD dwStreamNumber,
+ DWORD dwCallbackReason,
+ HANDLE hSourceFile,
+ HANDLE hDestinationFile,
+ LPVOID lpData
+)
+{
+ (void)TotalFileSize;
+ (void)TotalBytesTransferred;
+ (void)StreamSize;
+ (void)StreamBytesTransferred;
+ (void)dwStreamNumber;
+ (void)dwCallbackReason;
+ (void)hSourceFile;
+ (void)hDestinationFile;
+ (void)lpData;
+
+ static_cast<TransferThreadAsync *>(lpData)->setProgression(TotalBytesTransferred.QuadPart,TotalFileSize.QuadPart);
+ return PROGRESS_CONTINUE;
+}
+
+void TransferThreadAsync::setProgression(const uint64_t &pos, const uint64_t &size)
+{
+ if(transfer_stat==TransferStat_Transfer)
+ {
+ if(pos==size)
+ emit readStopped();
+ transferProgression=pos;
+ }
+}
+#endif
+
+/// \brief set buffer
+void TransferThreadAsync::setBuffer(const bool buffer)
+{
+ writeThread.buffer=buffer;
+}
+
+void TransferThreadAsync::ifCanStartTransfer()
+{
+ realMove=false;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start "+internalStringTostring(source)+"->"+internalStringTostring(destination));
+ if(transfer_stat!=TransferStat_WaitForTheTransfer /*wait preoperation*/ || !canStartTransfer/*wait start call*/)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"["+std::to_string(id)+
+ "] transfer_stat:"+std::to_string(transfer_stat)+
+ ", canStartTransfer: "+std::to_string(canStartTransfer));
+ //preOperationStopped();//tiger to seam maybe is can be started, maybe this generate a bug
+ return;
+ }
+ transfer_stat=TransferStat_Transfer;
+
+ #ifdef WIDESTRING
+ const size_t destinationIndex=destination.rfind(L'/');
+ if(destinationIndex!=std::string::npos && destinationIndex<destination.size())
+ {
+ const std::wstring &path=destination.substr(0,destinationIndex);
+ if(!is_dir(path))
+ if(!TransferThread::mkpath(path))
+ {
+ #ifdef Q_OS_WIN32
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Unable to create the destination folder: "+internalStringTostring(path)+" "+TransferThread::GetLastErrorStdStr());
+ emit errorOnFile(destination,tr("Unable to create the destination folder: ").toStdString()+TransferThread::GetLastErrorStdStr());
+ #else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Unable to create the destination folder: "+internalStringTostring(path)+" "+std::to_string(errno));
+ emit errorOnFile(destination,tr("Unable to create the destination folder, errno: %1").arg(QString::number(errno)).toStdString());
+ #endif
+ return;
+ }
+ }
+ #else
+ const size_t destinationIndex=destination.rfind('/');
+ if(destinationIndex!=std::string::npos && destinationIndex<destination.size())
+ {
+ const std::string &path=destination.substr(0,destinationIndex);
+ if(!is_dir(path))
+ if(!TransferThread::mkpath(path))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Unable to create the destination folder: "+path);
+ #ifdef Q_OS_WIN32
+ emit errorOnFile(destination,tr("Unable to create the destination folder: ")+TransferThread::GetLastErrorStdStr());
+ #else
+ emit errorOnFile(destination,tr("Unable to create the destination folder, errno: %1").arg(QString::number(errno)).toStdString());
+ #endif
+ return;
+ }
+ }
+ #endif
+
+ /* http://www.flexhex.com/docs/articles/hard-links.phtml
+ * Do here the smblink logic
+ * Under windows: BOOLEAN CreateSymbolicLinkA(
+ LPCSTR lpSymlinkFileName,
+ LPCSTR lpTargetFileName,
+ DWORD dwFlags
+ unix: int symlink(const char *target, const char *linkpath);
+);
+
+ */
+
+ emit pushStat(transfer_stat,transferId);
+ realMove=(mode==Ultracopier::Move && driveManagement.isSameDrive(
+ internalStringTostring(source),
+ internalStringTostring(destination)
+ ));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start copy");
+ needRemove=true;
+ bool successFull=false;
+ readError=false;
+ writeError=false;
+ if(realMove)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start real move");
+ successFull=TransferThread::rename(source,destination);
+ #ifdef Q_OS_UNIX
+ if(!successFull && errno==18)
+ {
+ //try full move
+ realMove=false;
+ openRead(source,mode);
+ openWrite(destination,0);
+ return;
+ }
+ #endif
+ }
+ else
+ {
+ #ifdef Q_OS_WIN32
+ bool isJunction=false;
+ bool isSymlink=false;
+ WIN32_FILE_ATTRIBUTE_DATA fileInfo;
+ BOOL r = GetFileAttributesExW(TransferThread::toFinalPath(source).c_str(), GetFileExInfoStandard, &fileInfo);
+ if(r != FALSE)
+ {
+ /*isJunction = fileInfo.dwFileAttributes != INVALID_FILE_ATTRIBUTES &&
+ (fileInfo.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT);*/
+ isSymlink = fileInfo.dwFileAttributes != INVALID_FILE_ATTRIBUTES &&
+ (fileInfo.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT);
+ }
+ if(isSymlink)
+ {
+ BYTE buf[MAXIMUM_REPARSE_DATA_BUFFER_SIZE];
+ REPARSE_DATA_BUFFER& ReparseBuffer = (REPARSE_DATA_BUFFER&)buf;
+ DWORD dwRet=0;
+ HANDLE hDir = ::CreateFile(TransferThread::toFinalPath(source).c_str(), GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS, NULL);
+ if (hDir != INVALID_HANDLE_VALUE)
+ {
+ BOOL ioc = ::DeviceIoControl(hDir, FSCTL_GET_REPARSE_POINT, NULL, 0, &ReparseBuffer,
+ MAXIMUM_REPARSE_DATA_BUFFER_SIZE, &dwRet, NULL);
+ ::CloseHandle(hDir);
+ if(ioc!=FALSE)
+ {
+ if(ReparseBuffer.ReparseTag == IO_REPARSE_TAG_MOUNT_POINT)
+ {
+ //printf("%S\n",ReparseBuffer.MountPointReparseBuffer.PathBuffer);
+ isJunction=true;
+ }
+ else
+ {
+ //printf("%S\n",ReparseBuffer.SymbolicLinkReparseBuffer.PathBuffer);
+ }
+ }
+ else
+ {
+ const std::string &strError=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stop copy in error: "+
+ GetLastErrorStdStr()+" "+TransferThread::internalStringTostring(source)+"->"+TransferThread::internalStringTostring(destination)+
+ " "+strError
+ );
+ readError=true;
+ writeError=false;
+ emit errorOnFile(source,strError);
+ return;
+ }
+ }
+ else
+ {
+ const std::string &strError=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stop copy in error: "+
+ GetLastErrorStdStr()+" "+TransferThread::internalStringTostring(source)+"->"+TransferThread::internalStringTostring(destination)+
+ " "+strError
+ );
+ readError=true;
+ writeError=false;
+ emit errorOnFile(source,strError);
+ return;
+ }
+ if(isJunction)//junction
+ {
+ std::wstring cleanPath(ReparseBuffer.MountPointReparseBuffer.PathBuffer);
+ if(cleanPath.substr(0,4)==L"\\??\\")
+ cleanPath=cleanPath.substr(4);
+ successFull=TransferThreadAsync::mkJunction(
+ TransferThread::toFinalPath(destination).c_str(),
+ cleanPath.c_str()
+ );
+ if(successFull==FALSE)
+ {
+ const std::string &strError=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stop copy in error: "+
+ GetLastErrorStdStr()+" "+TransferThread::internalStringTostring(source)+"->"+TransferThread::internalStringTostring(destination)+
+ " "+strError
+ );
+ readError=true;
+ writeError=true;
+ emit errorOnFile(destination,strError);
+ }
+ }
+ else//symlink or symlinkD
+ {
+ successFull=CopyFileExW(TransferThread::toFinalPath(source).c_str(),TransferThread::toFinalPath(destination).c_str(),
+ (LPPROGRESS_ROUTINE)progressRoutine,this,&stopItWin,COPY_FILE_ALLOW_DECRYPTED_DESTINATION | 0x00000800);//0x00000800 is COPY_FILE_COPY_SYMLINK
+ if(successFull==FALSE)
+ {
+ const std::string &strError=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stop copy in error: "+
+ GetLastErrorStdStr()+" "+TransferThread::internalStringTostring(source)+"->"+TransferThread::internalStringTostring(destination)+
+ " "+strError
+ );
+ readError=true;
+ writeError=true;
+ emit errorOnFile(destination,strError);
+ }
+ }
+ }
+ else
+ #else
+ if(TransferThread::is_symlink(source))
+ {
+ realMove=true;
+ bool isFileOrSymlink=false;
+ {
+ struct stat p_statbuf;
+ if (lstat(TransferThread::internalStringTostring(destination).c_str(), &p_statbuf) < 0)
+ {}
+ else if (S_ISLNK(p_statbuf.st_mode))
+ isFileOrSymlink=true;
+ else if (S_ISREG(p_statbuf.st_mode))
+ isFileOrSymlink=true;
+ }
+ if(isFileOrSymlink)
+ if(!unlink(destination))
+ {
+ const int terr=errno;
+ if(terr!=2)
+ {
+ const std::string &strError=strerror(terr);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stop copy in error "+
+ TransferThread::internalStringTostring(source)+"->"+TransferThread::internalStringTostring(destination)+
+ " "+strError+"("+std::to_string(terr)+")"
+ );
+ readError=false;
+ writeError=true;
+ emit errorOnFile(destination,strError);
+ return;
+ }
+ }
+ char buf[PATH_MAX];
+ const ssize_t s=readlink(TransferThread::internalStringTostring(source).c_str(),buf,sizeof(buf));
+ buf[s]=0x00;
+ if(s<0)
+ {
+ const int terr=errno;
+ const std::string &strError=strerror(terr);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stop copy in error "+
+ TransferThread::internalStringTostring(source)+"->"+TransferThread::internalStringTostring(destination)+
+ " "+strError+"("+std::to_string(terr)+")"
+ );
+ readError=true;
+ writeError=false;
+ emit errorOnFile(source,strError);
+ return;
+ }
+ else
+ {
+ if(symlink(buf,TransferThread::internalStringTostring(destination).c_str())!=0)
+ {
+ const int terr=errno;
+ const std::string &strError=strerror(terr);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stop copy in error "+
+ buf+"->"+TransferThread::internalStringTostring(destination)+
+ " "+strError+"("+std::to_string(terr)+")"
+ );
+ readError=true;
+ writeError=false;
+ emit errorOnFile(destination,strError);
+ return;
+ }
+ }
+ successFull=true;
+ }
+ else
+ #endif
+ {
+ #ifdef Q_OS_WIN32
+ if(native_copy)
+ {
+ successFull=CopyFileExW(TransferThread::toFinalPath(source).c_str(),TransferThread::toFinalPath(destination).c_str(),
+ (LPPROGRESS_ROUTINE)progressRoutine,this,&stopItWin,COPY_FILE_ALLOW_DECRYPTED_DESTINATION | 0x00000800);//0x00000800 is COPY_FILE_COPY_SYMLINK
+ if(successFull==FALSE)
+ {
+ const std::string &strError=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stop copy in error: "+
+ GetLastErrorStdStr()+" "+TransferThread::internalStringTostring(source)+"->"+TransferThread::internalStringTostring(destination)+
+ " "+strError
+ );
+ readError=true;
+ writeError=true;
+ emit errorOnFile(destination,strError);
+ }
+ }
+ else
+ #endif
+ {
+ openRead(source,mode);
+ openWrite(destination,0);
+ return;
+ }
+ }
+ }
+ if(!successFull)
+ {
+ #ifdef Q_OS_WIN32
+ const std::string &strError=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stop copy in error: "+
+ GetLastErrorStdStr()+" "+TransferThread::internalStringTostring(source)+"->"+TransferThread::internalStringTostring(destination)+
+ " "+strError
+ );
+ #else
+ const int terr=errno;
+ const std::string &strError=strerror(terr);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stop copy in error "+
+ TransferThread::internalStringTostring(source)+"->"+TransferThread::internalStringTostring(destination)+
+ " "+strError+"("+std::to_string(terr)+")"
+ );
+ #endif
+ if(stopIt)
+ {
+ if(!source.empty())
+ if(exists(source) && source!=destination)
+ unlink(destination);
+ resetExtraVariable();
+ return;//and reset?
+ }
+ #ifdef Q_OS_WIN32
+ readError=true;
+ writeError=true;
+ emit errorOnFile(destination,strError);
+ #else
+ if(readError)
+ emit errorOnFile(source,strError);
+ else
+ emit errorOnFile(destination,strError);
+ #endif
+ return;
+ }
+ readIsClosedVariable=true;
+ writeIsClosedVariable=true;
+ checkIfAllIsClosedAndDoOperations();
+}
+
+void TransferThreadAsync::checkIfAllIsClosedAndDoOperations()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stop copy");
+ if((readError || writeError) && !needSkip && !stopIt)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] resolve error before progress");
+ return;
+ }
+ if(remainFileOpen())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] remainFileOpen()");
+ return;
+ }
+ if(!source.empty() && needRemove && (stopIt || needSkip))
+ if(is_file(source) && source!=destination)
+ unlink(destination);
+ transfer_stat=TransferStat_Idle;
+
+ transferSize=readThread.getLastGoodPosition();
+
+ if(mode==Ultracopier::Move && !realMove)
+ if(exists(destination))
+ if(!unlink(source))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] move and unable to remove: "+
+ TransferThread::internalStringTostring(source)+
+ #ifdef Q_OS_WIN32
+ GetLastErrorStdStr()
+ #else
+ strerror(errno)
+ #endif
+ );
+ transfer_stat=TransferStat_PostTransfer;
+ emit pushStat(transfer_stat,transferId);
+ transfer_stat=TransferStat_PostOperation;
+ emit pushStat(transfer_stat,transferId);
+ doFilePostOperation();
+
+ source.clear();
+ destination.clear();
+ resetExtraVariable();
+ //don't need remove because have correctly finish (it's not in: have started)
+ needRemove=false;
+ needSkip=false;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] emit postOperationStopped() transfer_stat=TransferStat_Idle");
+ transfer_stat=TransferStat_Idle;
+ emit postOperationStopped();
+}
+
+//stop the current copy
+void TransferThreadAsync::stop()
+{
+ #ifdef Q_OS_WIN32
+ stopItWin=1;
+ #endif
+ stopIt=true;
+ haveStartTime=false;
+ if(transfer_stat==TransferStat_Idle)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] transfer_stat==TransferStat_Idle");
+ return;
+ }
+ if(transfer_stat==TransferStat_PreOperation)
+ {
+ transfer_stat=TransferStat_Idle;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] transfer_stat==TransferStat_PreOperation");
+ return;
+ }
+ if(realMove)
+ {
+ if(readError || writeError)
+ transfer_stat=TransferStat_Idle;
+ return;
+ }
+ readThread.stop();
+ writeThread.stop();
+}
+
+//retry after error
+void TransferThreadAsync::retryAfterError()
+{
+ /// \warning skip the resetExtraVariable(); to be more exact and resolv some bug
+ if(transfer_stat==TransferStat_Idle)
+ {
+ if(transferId==0)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+
+ ("] seam have bug, source: ")+TransferThread::internalStringTostring(source)+", destination: "+TransferThread::internalStringTostring(destination));
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+
+ "] restart all, source: "+TransferThread::internalStringTostring(source)+", destination: "+TransferThread::internalStringTostring(destination));
+ readError=false;
+ //writeError=false;
+ emit internalStartPreOperation();
+ return;
+ }
+ //opening error
+ if(transfer_stat==TransferStat_PreOperation)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+
+ "] is not idle, source: "+TransferThread::internalStringTostring(source)+", destination: "+TransferThread::internalStringTostring(destination)+
+ ", stat: "+std::to_string(transfer_stat));
+ readError=false;
+ //writeError=false;
+ emit internalStartPreOperation();
+ //tryOpen();-> recheck all, because can be an error into isSame(), rename(), ...
+ return;
+ }
+ //data streaming error
+ if(transfer_stat!=TransferStat_PostOperation && transfer_stat!=TransferStat_Transfer && transfer_stat!=TransferStat_PostTransfer)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] is not in right stat, source: ")+
+ TransferThread::internalStringTostring(source)+", destination: "+TransferThread::internalStringTostring(destination)+", stat: "+std::to_string(transfer_stat));
+ return;
+ }
+ if(transfer_stat==TransferStat_PostOperation)
+ {
+ emit internalStartPostOperation();
+ return;
+ }
+ emit internalTryStartTheTransfer();
+}
+
+//skip the copy
+void TransferThreadAsync::skip()
+{
+ #ifdef Q_OS_WIN32
+ stopItWin=1;
+ #endif
+ stopIt=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start with stat: "+std::to_string(transfer_stat));
+ switch(static_cast<TransferStat>(transfer_stat))
+ {
+ case TransferStat_WaitForTheTransfer:
+ //needRemove=true;never put that's here, can product destruction of the file
+ case TransferStat_PreOperation:
+ if(needSkip)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] skip already in progress");
+ return;
+ }
+ needSkip=true;
+ //check if all is source and destination is closed
+ if(remainFileOpen())
+ {
+ if(remainSourceOpen())
+ readThread.stop();
+ if(remainDestinationOpen())
+ writeThread.stop();
+ }
+ else // wait nothing, just quit
+ {
+ transfer_stat=TransferStat_PostOperation;
+ emit internalStartPostOperation();
+ }
+ resetExtraVariable();
+ break;
+ case TransferStat_Transfer:
+ if(needSkip)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] skip already in progress");
+ return;
+ }
+ //needRemove=true;never put that's here, can product destruction of the file
+ needSkip=true;
+ if(realMove)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+
+ "] Do the direct FS fake close, realMove: "+std::to_string(realMove));
+ /*readThread.fakeReadIsStarted();
+ writeThread.fakeWriteIsStarted();
+ readThread.fakeReadIsStopped();
+ writeThread.fakeWriteIsStopped();*/
+ emit readStopped();
+ emit postOperationStopped();
+ transfer_stat=TransferStat_Idle;
+ emit pushStat(transfer_stat,transferId);
+ return;
+ }
+ writeThread.flushBuffer();
+ if(remainFileOpen())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] remainFileOpen");
+ if(remainSourceOpen())
+ readThread.stop();
+ if(remainDestinationOpen())
+ writeThread.stop();
+ }
+ else // wait nothing, just quit
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] wait nothing, just quit");
+ transfer_stat=TransferStat_PostOperation;
+ emit internalStartPostOperation();
+ }
+ if(!source.empty() && needRemove)
+ if(exists(source) && source!=destination)
+ unlink(destination);
+ break;
+ case TransferStat_PostTransfer:
+ if(needSkip)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] skip already in progress");
+ return;
+ }
+ //needRemove=true;never put that's here, can product destruction of the file
+ needSkip=true;
+ if(realMove)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] Do the direct FS fake close, realMove: "+std::to_string(realMove));
+ readThread.fakeReadIsStarted();
+ writeThread.fakeWriteIsStarted();
+ readThread.fakeReadIsStopped();
+ writeThread.fakeWriteIsStopped();
+ return;
+ }
+ writeThread.flushBuffer();
+ if(remainFileOpen())
+ {
+ if(remainSourceOpen())
+ readThread.stop();
+ if(remainDestinationOpen())
+ writeThread.stop();
+ }
+ else // wait nothing, just quit
+ {
+ transfer_stat=TransferStat_PostOperation;
+ emit internalStartPostOperation();
+ }
+ break;
+ case TransferStat_PostOperation:
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] can skip in this state: "+std::to_string(transfer_stat));
+ return;
+ }
+ //can be reset
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] transfer_stat=TransferStat_Idle");
+ transfer_stat=TransferStat_Idle;
+ //emit to manager with List Thread
+ emit postOperationStopped();
+}
+
+//return info about the copied size
+int64_t TransferThreadAsync::copiedSize()
+{
+ switch(static_cast<TransferStat>(transfer_stat))
+ {
+ case TransferStat_Transfer:
+ case TransferStat_PostOperation:
+ case TransferStat_PostTransfer:
+ return (readThread.getLastGoodPosition()+writeThread.getLastGoodPosition())/2;
+ default:
+ return 0;
+ }
+}
+
+//retry after error
+void TransferThreadAsync::putAtBottom()
+{
+ emit tryPutAtBottom();
+}
+
+#ifdef ULTRACOPIER_PLUGIN_RSYNC
+/// \brief set rsync
+void TransferThreadAsync::setRsync(const bool rsync)
+{
+ this->rsync=rsync;
+}
+#endif
+
+#ifdef ULTRACOPIER_PLUGIN_DEBUG
+//to set the id
+void TransferThreadAsync::setId(int id)
+{
+ TransferThread::setId(id);
+}
+
+char TransferThreadAsync::readingLetter() const
+{
+ switch(static_cast<TransferStat>(readThread.status))
+ {
+ case TransferStat_Idle:
+ return '_';
+ break;
+ case TransferStat_PreOperation:
+ return 'I';
+ break;
+ case TransferStat_WaitForTheTransfer:
+ return 'W';
+ break;
+ case TransferStat_Transfer:
+ return 'C';
+ break;
+ case TransferStat_PostTransfer:
+ return 'R';
+ break;
+ case TransferStat_PostOperation:
+ return 'P';
+ break;
+ default:
+ return '?';
+ }
+}
+
+char TransferThreadAsync::writingLetter() const
+{
+ switch(static_cast<TransferStat>(writeThread.status))
+ {
+ case TransferStat_Idle:
+ return '_';
+ break;
+ case TransferStat_PreOperation:
+ return 'I';
+ break;
+ case TransferStat_WaitForTheTransfer:
+ return 'W';
+ break;
+ case TransferStat_Transfer:
+ return 'C';
+ break;
+ case TransferStat_PostTransfer:
+ return 'R';
+ break;
+ case TransferStat_PostOperation:
+ return 'P';
+ break;
+ default:
+ return '?';
+ }
+}
+#endif
+
+//not copied size, ...
+uint64_t TransferThreadAsync::realByteTransfered() const
+{
+ const uint64_t &l=readThread.getLastGoodPosition();
+ switch(static_cast<TransferStat>(transfer_stat))
+ {
+ case TransferStat_Transfer:
+ case TransferStat_PostTransfer:
+ return l;
+ case TransferStat_PostOperation:
+ return l;
+ default:
+ return 0;
+ }
+}
+
+//first is read, second is write
+std::pair<uint64_t, uint64_t> TransferThreadAsync::progression() const
+{
+ std::pair<uint64_t,uint64_t> returnVar;
+ switch(static_cast<TransferStat>(transfer_stat))
+ {
+ case TransferStat_Transfer:
+ returnVar.first=readThread.getLastGoodPosition();
+ returnVar.second=writeThread.getLastGoodPosition();
+ /*if(returnVar.first<returnVar.second)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+QStringLiteral("] read is smaller than write"));*/
+ break;
+ case TransferStat_PostTransfer:
+ returnVar.first=transferSize;
+ returnVar.second=transferSize;
+ /*if(returnVar.first<returnVar.second)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+QStringLiteral("] read is smaller than write"));*/
+ break;
+ case TransferStat_PostOperation:
+ returnVar.first=transferSize;
+ returnVar.second=transferSize;
+ break;
+ default:
+ returnVar.first=0;
+ returnVar.second=0;
+ }
+ return returnVar;
+}
+
+void TransferThreadAsync::setFileExistsAction(const FileExistsAction &action)
+{
+ if(transfer_stat!=TransferStat_PreOperation)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] already used, source: ")+
+ TransferThread::internalStringTostring(source)+(", destination: ")+TransferThread::internalStringTostring(destination));
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+("] action: ")+std::to_string(action));
+ if(action!=FileExists_Rename)
+ fileExistsAction = action;
+ else
+ {
+ //always rename pass here
+ fileExistsAction = action;
+ alwaysDoFileExistsAction=action;
+ }
+ if(action==FileExists_Skip)
+ {
+ skip();
+ return;
+ }
+ resetExtraVariable();
+ emit internalStartPreOperation();
+}
+
+#ifndef Q_OS_WIN32
+/*bool TransferThreadAsync::copy(const char *from,const char *to)
+{
+ transferProgression=0;
+ int fd_to, fd_from;
+ char buf[4096];
+ ssize_t nread;
+ int saved_errno;
+
+ fd_from = open(from, O_RDONLY);
+ if (fd_from < 0)
+ {
+ readError=true;
+ return false;
+ }
+ #ifdef Q_OS_LINUX
+ posix_fadvise(fd_from, 0, 0, POSIX_FADV_WILLNEED);
+ posix_fadvise(fd_from, 0, 0, POSIX_FADV_SEQUENTIAL);
+ posix_fadvise(fd_from, 0, 0, POSIX_FADV_NOREUSE);
+ #endif
+
+ // | O_DSYNC slow down
+ // | O_SYNC slow down
+ // O_DIRECT Invalid argument
+ int flags=O_WRONLY | O_CREAT;
+ //if(!buffer) flags|=??;
+ fd_to = open(to, flags, 0666);
+ if (fd_to < 0)
+ {
+ writeError=true;
+ goto out_error;
+ }
+ #ifdef Q_OS_LINUX
+ posix_fadvise(fd_to, 0, 0, POSIX_FADV_WILLNEED);
+ posix_fadvise(fd_to, 0, 0, POSIX_FADV_SEQUENTIAL);
+ posix_fadvise(fd_to, 0, 0, POSIX_FADV_NOREUSE);
+ #endif
+
+ while (nread = read(fd_from, buf, sizeof buf), nread > 0)
+ {
+ if(stopIt)
+ {
+ close(fd_to);
+ close(fd_from);
+ return false;
+ }
+ char *out_ptr = buf;
+ ssize_t nwritten;
+
+ do {
+ nwritten = write(fd_to, out_ptr, nread);
+ if(stopIt)
+ {
+ close(fd_to);
+ close(fd_from);
+ return false;
+ }
+
+ if (nwritten >= 0)
+ {
+ nread -= nwritten;
+ out_ptr += nwritten;
+ transferProgression += nwritten;
+ }
+ else if (errno != EINTR)
+ {
+ writeError=true;
+ goto out_error;
+ }
+ } while (nread > 0);
+ }
+
+ if (nread == 0)
+ {
+ ftruncate(fd_to,transferProgression);
+ if (close(fd_to) < 0)
+ {
+ fd_to = -1;
+ readError=true;
+ goto out_error;
+ }
+ if (close(fd_from) < 0)
+ return -1;
+ if(stopIt)
+ return -1;
+
+ emit readStopped();
+ return true;
+ }
+
+ out_error:
+ saved_errno = errno;
+
+ close(fd_from);
+ if (fd_to >= 0)
+ close(fd_to);
+
+ errno = saved_errno;
+ return false;
+}*/
+#endif
+
+//implemente to connect async
+void TransferThreadAsync::read_error()
+{
+ if(readError)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] already in read error!");
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ fileContentError = true;
+ readError = true;
+ //writeIsReadyVariable = false;//wrong because write can be ready here
+ if(!writeError)//already display error for the write
+ emit errorOnFile(source,readThread.errorString());
+}
+
+void TransferThreadAsync::read_readIsStopped()
+{
+ if(realMove)
+ return;
+ if(!sended_state_readStopped)
+ {
+ sended_state_readStopped=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] emit readIsStopped()");
+ emit readStopped();
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] drop dual read stopped");
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ canStartTransfer=false;
+ //check here if need start checksuming or not
+ transfer_stat=TransferStat_PostTransfer;
+ emit pushStat(transfer_stat,transferId);
+}
+
+void TransferThreadAsync::read_closed()
+{
+ if(realMove)
+ return;
+ if(readIsClosedVariable)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] double event dropped"));
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ readIsClosedVariable=true;
+ checkIfAllIsClosedAndDoOperations();
+}
+
+void TransferThreadAsync::write_error()
+{
+ if(writeError)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] already in write error!");
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ fileContentError = true;
+ writeError = true;
+ if(!readError)//already display error for the read
+ emit errorOnFile(destination,writeThread.errorString());
+}
+
+void TransferThreadAsync::write_closed()
+{
+ if(realMove)
+ return;
+ if(writeIsClosedVariable)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] double event dropped");
+ return;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ writeIsClosedVariable=true;
+ if(stopIt && needRemove && source!=destination)
+ {
+ if(is_file(source))
+ unlink(destination);
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+("] try destroy the destination when the source don't exists"));
+ }
+ checkIfAllIsClosedAndDoOperations();
+}
+
+#ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+
+
+//set block size in Bytes for speed limitation
+bool TransferThreadAsync::setBlockSize(const unsigned int blockSize)
+{
+ bool read=readThread.setBlockSize(blockSize);
+ bool write=writeThread.setBlockSize(blockSize);
+ return (read && write);
+}
+
+//set the current max speed in KB/s
+void TransferThreadAsync::setMultiForBigSpeed(const int &multiForBigSpeed)
+{
+ readThread.setMultiForBigSpeed(multiForBigSpeed);
+ writeThread.setMultiForBigSpeed(multiForBigSpeed);
+}
+
+void TransferThreadAsync::timeOfTheBlockCopyFinished()
+{
+ readThread.timeOfTheBlockCopyFinished();
+ writeThread.timeOfTheBlockCopyFinished();
+}
+#endif
+
+//pause the copy
+void TransferThreadAsync::pause()
+{
+ //only pause/resume during the transfer of file data
+ //from transfer_stat!=TransferStat_Idle because it resume at wrong order
+ if(transfer_stat!=TransferStat_Transfer && transfer_stat!=TransferStat_PostTransfer)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] wrong stat to put in pause");
+ return;
+ }
+ haveStartTime=false;
+ readThread.pause();
+ writeThread.pause();
+}
+
+//resume the copy
+void TransferThreadAsync::resume()
+{
+ //only pause/resume during the transfer of file data
+ //from transfer_stat!=TransferStat_Idle because it resume at wrong order
+ if(transfer_stat!=TransferStat_Transfer && transfer_stat!=TransferStat_PostTransfer)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] wrong stat to put in pause");
+ return;
+ }
+ readThread.resume();
+ writeThread.resume();
+}
+
+//when both is ready, startRead()
+void TransferThreadAsync::read_opened()
+{
+ if(readIsOpenVariable)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] already readIsOpenVariable=true");
+ return;
+ }
+ readIsOpenVariable=true;
+ transferSize=readThread.size();
+ if(writeIsOpenVariable)
+ readThread.startRead();
+}
+
+void TransferThreadAsync::write_opened()
+{
+ if(writeIsOpenVariable)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] already writeIsOpenVariable=true");
+ return;
+ }
+ writeIsOpenVariable=true;
+ if(readIsOpenVariable)
+ readThread.startRead();
+}
+
+#ifdef Q_OS_WIN32
+bool TransferThreadAsync::mkJunction(LPCWSTR szJunction, LPCWSTR szPath)
+{
+ BYTE buf[sizeof(REPARSE_DATA_BUFFER) + MAX_PATH * sizeof(WCHAR)];
+ REPARSE_DATA_BUFFER& ReparseBuffer = (REPARSE_DATA_BUFFER&)buf;
+
+ if (!::CreateDirectoryW(szJunction, NULL))
+ return false;
+ HANDLE hDir = ::CreateFileW(szJunction, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS, NULL);
+ if (hDir == INVALID_HANDLE_VALUE)
+ return false;
+
+ memset(buf, 0, sizeof(buf));
+ ReparseBuffer.ReparseTag = IO_REPARSE_TAG_MOUNT_POINT;
+ int len = wcslen(szPath)+1;
+ ReparseBuffer.MountPointReparseBuffer.PrintNameOffset = (len--) * sizeof(WCHAR);
+ ReparseBuffer.MountPointReparseBuffer.SubstituteNameLength = len * sizeof(WCHAR);
+ ReparseBuffer.ReparseDataLength = ReparseBuffer.MountPointReparseBuffer.SubstituteNameLength + 12;
+ wcscpy(ReparseBuffer.MountPointReparseBuffer.PathBuffer, szPath);
+
+ DWORD dwRet;
+ if (!::DeviceIoControl(hDir, FSCTL_SET_REPARSE_POINT, &ReparseBuffer,
+ ReparseBuffer.ReparseDataLength+REPARSE_MOUNTPOINT_HEADER_SIZE, NULL, 0, &dwRet, NULL))
+ {
+ ::CloseHandle(hDir);
+ ::RemoveDirectoryW(szJunction);
+ return false;
+ }
+
+ ::CloseHandle(hDir);
+ return true;
+}
+#endif
+
+void TransferThreadAsync::setOsSpecFlags(bool os_spec_flags)
+{
+ readThread.setOsSpecFlags(os_spec_flags);
+ writeThread.setOsSpecFlags(os_spec_flags);
+}
+
+void TransferThreadAsync::setNativeCopy(bool native_copy)
+{
+ this->native_copy=native_copy;
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.h b/plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.h
new file mode 100755
index 0000000..83ddb91
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.h
@@ -0,0 +1,153 @@
+/** \file TransferThreadAsync.h
+\brief Thread changed to manage the inode operation, the signals, canceling, pre and post operations
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include <QObject>
+#include <QTime>
+
+#include <regex>
+#include <vector>
+#include <string>
+#include <utility>
+#include <dirent.h>
+
+//defore the next define
+#include "../CopyEngineUltracopier-SpecVariable.h"
+
+#include "ReadThread.h"
+#include "WriteThread.h"
+
+#ifdef Q_OS_UNIX
+ #include <utime.h>
+ #include <time.h>
+ #include <unistd.h>
+ #include <sys/stat.h>
+#endif
+#ifdef Q_OS_WIN32
+ #ifdef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY
+ #include <utime.h>
+ #include <time.h>
+ #include <unistd.h>
+ #include <sys/stat.h>
+ #endif
+#endif
+
+#ifdef Q_OS_WIN32
+#include <windows.h>
+#endif
+
+#include "../TransferThread.h"
+#include "../Environment.h"
+#include "../DriveManagement.h"
+#include "../StructEnumDefinition_CopyEngine.h"
+
+#ifndef TransferThreadAsync_H
+#define TransferThreadAsync_H
+
+/// \brief Thread changed to manage the inode operation, the signals, canceling, pre and post operations
+class TransferThreadAsync : public TransferThread
+{
+ Q_OBJECT
+public:
+ explicit TransferThreadAsync();
+ ~TransferThreadAsync();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ /// \brief to set the id
+ void setId(int id);
+ /// \brief get the reading letter
+ char readingLetter() const;
+ /// \brief get the writing letter
+ char writingLetter() const;
+ #endif
+
+ //not copied size, ...
+ uint64_t realByteTransfered() const;
+ std::pair<uint64_t, uint64_t> progression() const;
+ /** \brief to set the speed limitation
+ * -1 if not able, 0 if disabled */
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ //set block size in Bytes for speed limitation
+ bool setBlockSize(const unsigned int blockSize);
+ void setMultiForBigSpeed(const int &multiForBigSpeed);
+ void timeOfTheBlockCopyFinished();
+ void setOsSpecFlags(bool os_spec_flags);
+ void setNativeCopy(bool native_copy);
+ #endif
+ /// \brief pause the copy
+ void pause();
+ /// \brief resume the copy
+ void resume();
+
+ bool haveStartTime;
+ ReadThread readThread;
+ WriteThread writeThread;
+ bool native_copy;
+ void setBuffer(const bool buffer);
+
+ #ifdef Q_OS_WIN32
+ static bool mkJunction(LPCWSTR szJunction, LPCWSTR szPath);
+ #endif
+protected:
+ void run();
+private slots:
+ void preOperation();
+ void postOperation();
+ //force into the right thread
+ void internalStartTheTransfer();
+
+ //implemente to connect async
+ void read_error();
+ void read_readIsStopped();
+ void read_closed();
+ void write_error();
+ void write_closed();
+ void read_opened();
+ void write_opened();
+signals:
+ //internal signal
+ void internalStartResumeAfterErrorAndSeek() const;
+ void internalStartPostOperation() const;
+ //async due to tread conflict on from, if(from>=0) {do something, abort() -> on abort from =-1}
+ void openRead(const INTERNALTYPEPATH &file, const Ultracopier::CopyMode &mode);
+ //async due to tread conflict on to, if(to>=0) {do something, abort() -> on abort to =-1}
+ void openWrite(const INTERNALTYPEPATH &file,const uint64_t &startSize);
+public slots:
+ /// \brief to start the transfer of data
+ void startTheTransfer();
+ /// \brief stop the copy
+ void stop();
+ /// \brief skip the copy
+ void skip();
+ /// \brief retry after error
+ void retryAfterError();
+ /// \brief return info about the copied size
+ int64_t copiedSize();
+ /// \brief put the current file at bottom
+ void putAtBottom();
+ /// \brief to set files to transfer
+ bool setFiles(const INTERNALTYPEPATH &source, const int64_t &size, const INTERNALTYPEPATH &destination, const Ultracopier::CopyMode &mode);
+ /// \brief to set file exists action to do
+ void setFileExistsAction(const FileExistsAction &action);
+ #ifdef Q_OS_WIN32
+ void setProgression(const uint64_t &pos,const uint64_t &size);
+ #endif
+private:
+ //ready = open + ready to operation (no error to resolv)
+ bool transferIsReadyVariable;
+ uint64_t transferProgression;
+ bool sended_state_readStopped;
+ bool readIsClosedVariable;
+ bool writeIsClosedVariable;
+ bool readIsOpenVariable;
+ bool writeIsOpenVariable;
+ bool realMove;
+ bool remainFileOpen() const;
+ bool remainSourceOpen() const;
+ bool remainDestinationOpen() const;
+ void resetExtraVariable();
+ void ifCanStartTransfer();
+ void checkIfAllIsClosedAndDoOperations();
+};
+
+#endif // TransferThreadAsync_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.cpp b/plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.cpp
new file mode 100755
index 0000000..2d6748e
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.cpp
@@ -0,0 +1,1164 @@
+#include "WriteThread.h"
+
+#ifdef Q_OS_LINUX
+#include <fcntl.h>
+#endif
+#include "../TransferThread.h"
+
+#ifdef Q_OS_UNIX
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <fcntl.h>
+#endif
+
+unsigned int WriteThread::numberOfBlock=ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK;
+
+WriteThread::WriteThread()
+{
+ deletePartiallyTransferredFiles = true;
+ lastGoodPosition = 0;
+ stopIt = false;
+ isOpen.release();
+ moveToThread(this);
+ setObjectName(QStringLiteral("write"));
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status = Idle;
+ #endif
+ putInPause = false;
+ needRemoveTheFile = false;
+ start();
+
+ #ifdef Q_OS_UNIX
+ to=-1;
+ #else
+ to=nullptr;
+ #endif
+}
+
+WriteThread::~WriteThread()
+{
+ stopIt=true;
+ needRemoveTheFile=true;
+ pauseMutex.release();
+ writeFull.release();
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ waitNewClockForSpeed.release();
+ waitNewClockForSpeed2.release();
+ #endif
+ writeFull.release();
+ pauseMutex.release();
+ // useless because stopIt will close all thread, but if thread not runing run it
+ //endIsDetected();
+ emit internalStartClose();
+ isOpen.acquire();
+ if(!file.empty())
+ resumeNotStarted();
+ //disconnect(this);//-> do into ~TransferThread()
+ quit();
+ wait();
+}
+
+void WriteThread::run()
+{
+ if(!connect(this,&WriteThread::internalStartOpen, this,&WriteThread::internalOpen, Qt::QueuedConnection))
+ abort();
+ if(!connect(this,&WriteThread::internalStartReopen, this,&WriteThread::internalReopen, Qt::QueuedConnection))
+ abort();
+ if(!connect(this,&WriteThread::internalStartWrite, this,&WriteThread::internalWrite, Qt::QueuedConnection))
+ abort();
+ if(!connect(this,&WriteThread::internalStartClose, this,&WriteThread::internalCloseSlot, Qt::QueuedConnection))
+ abort();
+ if(!connect(this,&WriteThread::internalStartEndOfFile, this,&WriteThread::internalEndOfFile, Qt::QueuedConnection))
+ abort();
+ if(!connect(this,&WriteThread::internalStartFlushAndSeekToZero, this,&WriteThread::internalFlushAndSeekToZero, Qt::QueuedConnection))
+ abort();
+ exec();
+}
+
+//internal function
+bool WriteThread::seek(const int64_t &position)/// \todo search if is use full
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start with: "+std::to_string(position));
+ if((int64_t)position>size())
+ return false;
+
+ #ifdef Q_OS_UNIX
+ if(to<0)
+ abort();//internal failure
+ return lseek(to,position,SEEK_SET)==position;
+ #else
+ if(to==NULL)
+ abort();//internal failure
+ LARGE_INTEGER liSize;
+ liSize.QuadPart=position;
+ return SetFilePointerEx(to,liSize,NULL,FILE_BEGIN);
+ #endif
+}
+
+int64_t WriteThread::size() const
+{
+ #ifdef Q_OS_UNIX
+ struct stat st;
+ fstat(to, &st);
+ return st.st_size;
+ #else
+ LARGE_INTEGER lpFileSize;
+ if(!GetFileSizeEx(to,&lpFileSize))
+ return -1;
+ else
+ return lpFileSize.QuadPart;
+ #endif
+}
+
+bool WriteThread::internalOpen()
+{
+ //do a bug
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] internalOpen destination: "+TransferThread::internalStringTostring(file));
+ if(stopIt)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close because stopIt is at true");
+ emit closed();
+ return false;
+ }
+ #ifdef Q_OS_UNIX
+ if(to>=0)
+ #else
+ if(to!=NULL)
+ #endif
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] already open! destination: "+TransferThread::internalStringTostring(file));
+ return false;
+ }
+ if(file.empty())
+ {
+ errorString_internal=tr("Path resolution error (Empty path)").toStdString();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+"Unable to open: "+TransferThread::internalStringTostring(file)+", error: Empty path");
+ emit error();
+ return false;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] before the mutex");
+ //set to LISTBLOCKSIZE
+ while(writeFull.available()<(int)numberOfBlock)
+ writeFull.release();
+ if(writeFull.available()>(int)numberOfBlock)
+ writeFull.acquire(writeFull.available()-numberOfBlock);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after the mutex");
+ stopIt=false;
+ endDetected=false;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=InodeOperation;
+ #endif
+ //mkpath check if exists and return true if already exists
+ {
+ INTERNALTYPEPATH destination=file;
+ #ifdef WIDESTRING
+ const size_t destinationIndex=destination.rfind(L'/');
+ if(destinationIndex!=std::string::npos && destinationIndex<destination.size())
+ {
+ const std::wstring &path=destination.substr(0,destinationIndex);
+ if(!TransferThread::is_dir(path))
+ if(!TransferThread::mkpath(path))
+ {
+ #ifdef Q_OS_WIN32
+ errorString_internal=tr("Unable to create the destination folder: ").toStdString()+TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Unable create the folder: "+
+ TransferThread::internalStringTostring(destination)+", error: "+
+ errorString_internal);
+ emit error();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ return false;
+ #else
+ /// \todo do real folder error here
+ errorString_internal=tr("Unable to create the destination folder, errno: %1").arg(QString::number(errno)).toStdString();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+"Unable create the folder: "+
+ TransferThread::internalStringTostring(destination)+", error: "+
+ errorString_internal);
+ emit error();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ return false;
+ #endif
+ }
+ }
+ #else
+ const size_t destinationIndex=destination.rfind('/');
+ if(destinationIndex!=std::string::npos && destinationIndex<destination.size())
+ {
+ const std::string &path=destination.substr(0,destinationIndex);
+ if(!TransferThread::is_dir(path))
+ if(!TransferThread::mkpath(path))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Unable to create the destination folder: "+path);
+ #ifdef Q_OS_WIN32
+ errorString_internal=tr("Unable to create the destination folder: ")+TransferThread::GetLastErrorStdStr();
+ #else
+ errorString_internal=tr("Unable to create the destination folder, errno: %1").arg(QString::number(errno)).toStdString();
+ #endif
+ emit error();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ return false;
+ }
+ }
+ #endif
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after the mkpath");
+ if(stopIt)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close because stopIt is at true");
+ emit closed();
+ return false;
+ }
+ //try open it
+ {
+ QMutexLocker lock_mutex(writeFileListMutex);
+ #ifdef WIDESTRING
+ QString qtFile=QString::fromStdWString(file);
+ #else
+ QString qtFile=QString::fromStdString(file);
+ #endif
+ if(writeFileList->count(qtFile,this)==0)
+ {
+ writeFileList->insert(qtFile,this);
+ if(writeFileList->count(qtFile)>1)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] in waiting because same file is found");
+ return false;
+ }
+ }
+ }
+ bool fileWasExists=TransferThread::is_file(file);
+ #ifdef Q_OS_UNIX
+ // The last parameter (0755) does nothing. It is simply accepted for compatibility with the UNIX "open" function.
+ // Needed for major build compatibility
+ to = ::open(TransferThread::internalStringTostring(file).c_str(), O_WRONLY | O_CREAT, 0755);
+ #else
+ DWORD flags=FILE_ATTRIBUTE_NORMAL;
+ if(os_spec_flags)
+ flags|=FILE_FLAG_SEQUENTIAL_SCAN;
+ /*if(!buffer)
+ //FILE_FLAG_NO_BUFFERING Under Windows 10 do The parameter is incorrect. (87)
+ flags|=FILE_FLAG_NO_BUFFERING;//FILE_FLAG_WRITE_THROUGH |*/
+ to=CreateFileW(file.c_str(),GENERIC_WRITE,0,NULL,CREATE_ALWAYS,
+ flags,NULL);
+ #endif
+ #ifdef Q_OS_UNIX
+ if(to>=0)
+ #else
+ if(to!=INVALID_HANDLE_VALUE)
+ #endif
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after the open");
+ {
+ QMutexLocker lock_mutex(&accessList);
+ if(!theBlockList.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] General file corruption detected");
+ stopIt=true;
+ #ifdef Q_OS_UNIX
+ if(::close(to)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+std::to_string(errno));
+ to=-1;
+ #else
+ if(CloseHandle(to)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+TransferThread::GetLastErrorStdStr());
+ to=NULL;
+ #endif
+ resumeNotStarted();
+ this->file.clear();
+ return false;
+ }
+ }
+ pauseMutex.tryAcquire(pauseMutex.available());
+ #ifdef Q_OS_LINUX
+ if(os_spec_flags)
+ {
+ posix_fadvise(to, 0, 0, POSIX_FADV_NOREUSE);
+ posix_fadvise(to, 0, 0, POSIX_FADV_SEQUENTIAL);
+ }
+ #endif
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] after the pause mutex");
+ if(stopIt)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close because stopIt is at true");
+ #ifdef Q_OS_UNIX
+ if(::close(to)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+std::to_string(errno));
+ to=-1;
+ #else
+ if(CloseHandle(to)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+TransferThread::GetLastErrorStdStr());
+ to=NULL;
+ #endif
+ resumeNotStarted();
+ this->file.clear();
+ emit closed();
+ return false;
+ }
+ if(destTruncate(startSize)!=0)
+ {
+ #ifdef Q_OS_UNIX
+ if(::close(to)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+std::to_string(errno));
+ to=-1;
+ #else
+ if(CloseHandle(to)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+TransferThread::GetLastErrorStdStr());
+ to=NULL;
+ #endif
+ resumeNotStarted();
+ this->file.clear();
+ #ifdef Q_OS_WIN32
+ errorString_internal=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to seek after resize: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal
+ );
+ #else
+ int t=errno;
+ errorString_internal=strerror(t);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to seek after resize: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal+" ("+std::to_string(t)+")"
+ );
+ #endif
+ emit error();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ return false;
+ }
+ if(stopIt)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close because stopIt is at true");
+ #ifdef Q_OS_UNIX
+ if(::close(to)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+std::to_string(errno));
+ to=-1;
+ #else
+ if(CloseHandle(to)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+TransferThread::GetLastErrorStdStr());
+ to=NULL;
+ #endif
+ resumeNotStarted();
+ this->file.clear();
+ emit closed();
+ return false;
+ }
+ if(!seek(0))
+ {
+ #ifdef Q_OS_UNIX
+ if(::close(to)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+std::to_string(errno));
+ to=-1;
+ #else
+ if(CloseHandle(to)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+TransferThread::GetLastErrorStdStr());
+ to=NULL;
+ #endif
+ resumeNotStarted();
+ this->file.clear();
+ #ifdef Q_OS_WIN32
+ errorString_internal=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to seek after open: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal
+ );
+ #else
+ int t=errno;
+ errorString_internal=strerror(t);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to seek after open: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal+" ("+std::to_string(t)+")"
+ );
+ #endif
+ emit error();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ return false;
+ }
+ if(stopIt)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close because stopIt is at true");
+ #ifdef Q_OS_UNIX
+ if(::close(to)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+std::to_string(errno));
+ to=-1;
+ #else
+ if(CloseHandle(to)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+TransferThread::GetLastErrorStdStr());
+ to=NULL;
+ #endif
+ resumeNotStarted();
+ this->file.clear();
+ emit closed();
+ return false;
+ }
+ isOpen.acquire();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] emit opened()");
+ emit opened();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ needRemoveTheFile=false;
+ postOperationRequested=false;
+ return true;
+ }
+ else
+ {
+ #ifdef Q_OS_WIN32
+ errorString_internal=TransferThread::GetLastErrorStdStr();
+ #else
+ int t=errno;
+ #endif
+ if(!fileWasExists && TransferThread::is_file(file))
+ if(unlink(TransferThread::internalStringTostring(file).c_str())!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] file created but can't be removed");
+ if(stopIt)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close because stopIt is at true");
+ resumeNotStarted();
+ this->file.clear();
+ emit closed();
+ return false;
+ }
+ #ifdef Q_OS_WIN32
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to open: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal
+ );
+ #else
+ errorString_internal=strerror(t);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to open: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal+" ("+std::to_string(t)+")"
+ );
+ #endif
+ emit error();
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ return false;
+ }
+}
+
+void WriteThread::openWrite(const INTERNALTYPEPATH &file, const uint64_t &startSize)
+{
+ if(!isRunning())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] the thread not running to open destination: "+TransferThread::internalStringTostring(file)+", numberOfBlock: "+std::to_string(numberOfBlock));
+ errorString_internal=tr("Internal error, please report it!").toStdString();
+ emit error();
+ return;
+ }
+ #ifdef Q_OS_WIN32
+ if(to!=NULL)
+ #else
+ if(to>=0)
+ #endif
+ {
+ if(file==this->file)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] Try reopen already opened same file: "+TransferThread::internalStringTostring(file));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] previous file is already open: "+TransferThread::internalStringTostring(file));
+ //emit internalStartClose();
+ internalCloseSlot();
+ isOpen.acquire();
+ isOpen.release();
+ }
+ if(numberOfBlock<1 || (numberOfBlock>ULTRACOPIER_PLUGIN_MAX_PARALLEL_NUMBER_OF_BLOCK && numberOfBlock>ULTRACOPIER_PLUGIN_MAX_SEQUENTIAL_NUMBER_OF_BLOCK))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] numberOfBlock wrong, set to default");
+ this->numberOfBlock=ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK;
+ }
+ /*else
+ this->numberOfBlock=numberOfBlock;*/
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] "+"open destination: "+TransferThread::internalStringTostring(file));
+ stopIt=false;
+ fakeMode=false;
+ lastGoodPosition=0;
+ this->file=file;
+ this->startSize=startSize;
+ endDetected=false;
+ writeFullBlocked=false;
+ emit internalStartOpen();
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ numberOfBlockCopied=0;
+ #endif
+}
+
+void WriteThread::endIsDetected()
+{
+ if(endDetected)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] double event dropped");
+ return;
+ }
+ endDetected=true;
+ pauseMutex.release();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ emit internalStartEndOfFile();
+}
+
+std::string WriteThread::errorString() const
+{
+ return errorString_internal;
+}
+
+void WriteThread::stop()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stop()");
+ needRemoveTheFile=true;
+ stopIt=true;
+ if(isOpen.available()>0)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] isOpen.available()>0");
+
+ #ifdef Q_OS_WIN32
+ if(to!=NULL)
+ #else
+ if(to>=0)
+ #endif
+ {
+ #ifdef Q_OS_UNIX
+ if(::close(to)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+std::to_string(errno));
+ to=-1;
+ #else
+ if(CloseHandle(to)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+TransferThread::GetLastErrorStdStr());
+ to=NULL;
+ #endif
+ }
+
+ return;
+ }
+ writeFull.release();
+ pauseMutex.release();
+ pauseMutex.release();
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ waitNewClockForSpeed.release();
+ waitNewClockForSpeed2.release();
+ #endif
+ // useless because stopIt will close all thread, but if thread not runing run it
+ endIsDetected();
+ //for the stop for skip: void TransferThread::skip()
+ emit internalStartClose();
+}
+
+void WriteThread::flushBuffer()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ writeFull.release();
+ writeFull.acquire();
+ pauseMutex.release();
+ {
+ QMutexLocker lock_mutex(&accessList);
+ while(!theBlockList.empty())
+ {
+ free(theBlockList.front().data);
+ theBlockList.pop();
+ }
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] stop");
+}
+
+/// \brief buffer is empty
+bool WriteThread::bufferIsEmpty()
+{
+ bool returnVal;
+ {
+ QMutexLocker lock_mutex(&accessList);
+ returnVal=theBlockList.empty();
+ }
+ return returnVal;
+}
+
+void WriteThread::internalEndOfFile()
+{
+ if(!bufferIsEmpty())
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] buffer is not empty!");
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] writeIsStopped");
+ postOperation();
+ emit writeIsStopped();
+ }
+}
+
+#ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+/*! \brief Set the max speed
+\param tempMaxSpeed Set the max speed in KB/s, 0 for no limit */
+void WriteThread::setMultiForBigSpeed(const int &multiForBigSpeed)
+{
+ this->multiForBigSpeed=multiForBigSpeed;
+ waitNewClockForSpeed.release();
+ waitNewClockForSpeed2.release();
+}
+
+/// \brief For give timer every X ms
+void WriteThread::timeOfTheBlockCopyFinished()
+{
+ /* this is the old way to limit the speed, it product blocking
+ *if(waitNewClockForSpeed.available()<ULTRACOPIER_PLUGIN_NUMSEMSPEEDMANAGEMENT)
+ waitNewClockForSpeed.release();*/
+
+ //try this new way:
+ /* only if speed limited, else will accumulate waitNewClockForSpeed
+ * Disabled because: Stop call of this method when no speed limit
+ if(this->maxSpeed>0)*/
+ if(waitNewClockForSpeed.available()<=1)
+ waitNewClockForSpeed.release();
+ if(waitNewClockForSpeed2.available()<=1)
+ waitNewClockForSpeed2.release();
+}
+#endif
+
+void WriteThread::resumeNotStarted()
+{
+ QMutexLocker lock_mutex(writeFileListMutex);
+ #ifdef WIDESTRING
+ QString qtFile=QString::fromStdWString(file);
+ #else
+ QString qtFile=QString::fromStdString(file);
+ #endif
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(!writeFileList->contains(qtFile))
+ {
+ /*ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] file: \""+
+ TransferThread::internalStringTostring(file)+
+ "\" for similar inode is not located into the list of "+
+ std::to_string(writeFileList.size())+" items!");*/
+ return;
+ }
+ #endif
+ writeFileList->remove(qtFile,this);
+ if(writeFileList->contains(qtFile))
+ {
+ QList<WriteThread *> writeList=writeFileList->values(qtFile);
+ if(!writeList.isEmpty())
+ writeList.first()->reemitStartOpen();
+ return;
+ }
+}
+
+void WriteThread::pause()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] try put read thread in pause");
+ pauseMutex.tryAcquire(pauseMutex.available());
+ putInPause=true;
+ return;
+}
+
+void WriteThread::resume()
+{
+ if(putInPause)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ putInPause=false;
+ stopIt=false;
+ }
+ else
+ return;
+ #ifdef Q_OS_WIN32
+ if(to==NULL)
+ #else
+ if(to<0)
+ #endif
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] file is not open");
+ return;
+ }
+ pauseMutex.release();
+}
+
+void WriteThread::reemitStartOpen()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] start");
+ emit internalStartOpen();
+}
+
+void WriteThread::postOperation()
+{
+ if(postOperationRequested)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"["+std::to_string(id)+"] double event dropped");
+ return;
+ }
+ postOperationRequested=true;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ emit internalStartClose();
+}
+
+void WriteThread::internalCloseSlot()
+{
+ internalClose();
+}
+
+void WriteThread::internalClose(bool emitSignal)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] close for file: "+TransferThread::internalStringTostring(file));
+ /// \note never send signal here, because it's called by the destructor
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Close;
+ #endif
+ bool emit_closed=false;
+ if(!fakeMode)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] !fakeMode: "+TransferThread::internalStringTostring(file));
+ #ifdef Q_OS_WIN32
+ if(to!=NULL)
+ #else
+ if(to>=0)
+ #endif
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] to>=0: "+TransferThread::internalStringTostring(file));
+ if(!needRemoveTheFile)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] !needRemoveTheFile: "+TransferThread::internalStringTostring(file));
+ if(startSize!=lastGoodPosition)
+ if(destTruncate(lastGoodPosition)!=0)
+ {
+ if(emitSignal)
+ {
+ #ifdef Q_OS_WIN32
+ errorString_internal=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to resize: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal
+ );
+ #else
+ int t=errno;
+ errorString_internal=strerror(t);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to resize: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal+" ("+std::to_string(t)+")"
+ );
+ #endif
+ emit error();
+ }
+ else
+ needRemoveTheFile=true;
+ }
+ }
+ #ifdef Q_OS_UNIX
+ if(::close(to)!=0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+std::to_string(errno));
+ to=-1;
+ #else
+ if(CloseHandle(to)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] unable to close: "+TransferThread::GetLastErrorStdStr());
+ to=NULL;
+ #endif
+ this->file.clear();
+ if(needRemoveTheFile || stopIt)
+ {
+ if(deletePartiallyTransferredFiles)
+ {
+ if(unlink(TransferThread::internalStringTostring(file).c_str())!=0)
+ if(emitSignal)
+ {
+ #ifdef Q_OS_UNIX
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] unable to remove the destination file: "+std::to_string(errno));
+ #else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] unable to remove the destination file: "+TransferThread::GetLastErrorStdStr());
+ #endif
+ }
+ }
+ }
+ //here and not after, because the transferThread don't need try close if not open
+ if(emitSignal)
+ emit_closed=true;
+ }
+ }
+ else
+ {
+ //here and not after, because the transferThread don't need try close if not open
+
+ if(emitSignal)
+ emit_closed=true;
+ }
+ needRemoveTheFile=false;
+ resumeNotStarted();
+ this->file.clear();
+ if(emit_closed)
+ emit closed();
+
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+
+ /// \note always the last of this function
+ if(!fakeMode)
+ isOpen.release();
+}
+
+void WriteThread::internalReopen()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ INTERNALTYPEPATH tempFile=file;
+ internalClose(false);
+ flushBuffer();
+ stopIt=false;
+ lastGoodPosition=0;
+ file=tempFile;
+ if(internalOpen())
+ emit reopened();
+}
+
+void WriteThread::reopen()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] start");
+ stopIt=true;
+ endDetected=false;
+ emit internalStartReopen();
+}
+
+#ifdef ULTRACOPIER_PLUGIN_DEBUG
+//to set the id
+void WriteThread::setId(int id)
+{
+ this->id=id;
+}
+#endif
+
+/// \brief do the fake open
+void WriteThread::fakeOpen()
+{
+ fakeMode=true;
+ postOperationRequested=false;
+ emit opened();
+}
+
+/// \brief do the fake writeIsStarted
+void WriteThread::fakeWriteIsStarted()
+{
+ emit writeIsStarted();
+}
+
+/// \brief do the fake writeIsStopped
+void WriteThread::fakeWriteIsStopped()
+{
+ postOperation();
+ emit writeIsStopped();
+}
+
+/** \brief set block size
+\param block the new block size in B
+\return Return true if succes */
+bool WriteThread::setBlockSize(const int blockSize)
+{
+ //can be smaller than min block size to do correct speed limitation
+ if(blockSize>1 && blockSize<ULTRACOPIER_PLUGIN_MAX_BLOCK_SIZE*1024)
+ {
+ //this->blockSize=blockSize;
+ return true;
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"block size out of range: "+std::to_string(blockSize));
+ return false;
+ }
+}
+
+/// \brief get the last good position
+int64_t WriteThread::getLastGoodPosition() const
+{
+ return lastGoodPosition;
+}
+
+void WriteThread::flushAndSeekToZero()
+{
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"flushAndSeekToZero: "+std::to_string(blockSize));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"flushAndSeekToZero");
+ stopIt=true;
+ emit internalStartFlushAndSeekToZero();
+}
+
+void WriteThread::internalFlushAndSeekToZero()
+{
+ flushBuffer();
+ if(!seek(0))
+ {
+ #ifdef Q_OS_WIN32
+ errorString_internal=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to seek: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal
+ );
+ #else
+ int t=errno;
+ errorString_internal=strerror(t);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to seek: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal+" ("+std::to_string(t)+")"
+ );
+ #endif
+ emit error();
+ return;
+ }
+ stopIt=false;
+ emit flushedAndSeekedToZero();
+}
+
+void WriteThread::setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles)
+{
+ this->deletePartiallyTransferredFiles=deletePartiallyTransferredFiles;
+}
+
+bool WriteThread::write(char * data, const unsigned int size)
+{
+ if(stopIt)
+ return false;
+ bool atMax;
+ if(stopIt)
+ return false;
+ {
+ QMutexLocker lock_mutex(&accessList);
+ DataBlock d;
+ d.data=data;
+ d.size=size;
+ theBlockList.push(d);
+ atMax=(theBlockList.size()>=numberOfBlock);
+ }
+ emit internalStartWrite();
+ if(atMax)
+ {
+ writeFullBlocked=true;
+ writeFull.acquire();
+ writeFullBlocked=false;
+ }
+ if(stopIt)
+ return false;
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ //wait for limitation speed if stop not query
+ if(multiForBigSpeed>0)
+ {
+ numberOfBlockCopied2++;
+ if(numberOfBlockCopied2>=multiForBigSpeed)
+ {
+ numberOfBlockCopied2=0;
+ waitNewClockForSpeed2.acquire();
+ }
+ }
+ #endif
+ if(stopIt)
+ return false;
+ return true;
+}
+
+void WriteThread::internalWrite()
+{
+ bool haveBlock;
+ do
+ {
+ if(putInPause)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"["+std::to_string(id)+"] write put in pause");
+ if(stopIt)
+ return;
+ pauseMutex.acquire();
+ if(stopIt)
+ return;
+ }
+ if(stopIt)
+ {
+// ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] stopIt");
+ return;
+ }
+ if(stopIt)
+ return;
+ //read one block
+ {
+ QMutexLocker lock_mutex(&accessList);
+ if(theBlockList.empty())
+ haveBlock=false;
+ else
+ {
+ blockArray=theBlockList.front();
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ if(multiForBigSpeed>0)
+ {
+ theBlockList.pop();
+ //if remove one block
+ writeFull.release();
+ }
+ else
+ #endif
+ {
+ theBlockList.pop();
+ //if remove one block
+ writeFull.release();
+ }
+ haveBlock=true;
+ }
+ }
+ if(stopIt)
+ {
+ if(blockArray.data!=NULL)
+ {
+ free(blockArray.data);
+ blockArray.data=NULL;
+ }
+ return;
+ }
+ if(!haveBlock)
+ {
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] End detected of the file");
+ if(blockArray.data!=NULL)
+ {
+ free(blockArray.data);
+ blockArray.data=NULL;
+ }
+ return;
+ }
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ //wait for limitation speed if stop not query
+ if(multiForBigSpeed>0)
+ {
+ numberOfBlockCopied++;
+ if(writeFullBlocked)
+ {
+ if(numberOfBlockCopied>=(multiForBigSpeed*2))
+ {
+ numberOfBlockCopied=0;
+ waitNewClockForSpeed.acquire();
+ if(stopIt)
+ {
+ free(blockArray.data);
+ break;
+ }
+ }
+ }
+ else
+ {
+ if(numberOfBlockCopied>=multiForBigSpeed)
+ {
+ numberOfBlockCopied=0;
+ waitNewClockForSpeed.acquire();
+ if(stopIt)
+ {
+ if(blockArray.data!=NULL)
+ {
+ free(blockArray.data);
+ blockArray.data=NULL;
+ }
+ break;
+ }
+ }
+ }
+ }
+ #endif
+ if(stopIt)
+ {
+ if(blockArray.data!=NULL)
+ {
+ free(blockArray.data);
+ blockArray.data=NULL;
+ }
+ return;
+ }
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Write;
+ #endif
+
+ #ifdef Q_OS_WIN32
+ BOOL retRead=TRUE;
+ #endif
+ if(blockArray.size<=0)
+ bytesWriten=0;
+ else
+ {
+ #ifdef Q_OS_WIN32
+ DWORD lpNumberOfBytesWrite=0;
+ retRead=WriteFile(to,blockArray.data,blockArray.size,
+ &lpNumberOfBytesWrite,NULL);
+ bytesWriten=lpNumberOfBytesWrite;
+ #else
+ bytesWriten=::write(to,blockArray.data,blockArray.size);
+ #endif
+ }
+ if(blockArray.data!=NULL)
+ {
+ free(blockArray.data);
+ blockArray.data=NULL;
+ }
+
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ status=Idle;
+ #endif
+ //mutex for stream this data
+ if(lastGoodPosition==0)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"["+std::to_string(id)+"] emit writeIsStarted()");
+ emit writeIsStarted();
+ }
+ if(stopIt)
+ return;
+ #ifdef Q_OS_WIN32
+ if(retRead==FALSE)
+ #else
+ if(bytesWriten<0)
+ #endif
+ {
+ #ifdef Q_OS_WIN32
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ DWORD e = GetLastError();
+ #endif
+ errorString_internal=TransferThread::GetLastErrorStdStr();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to write: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal+" ("+std::to_string(e)+") to write "+std::to_string(blockArray.size)+"B at "+std::to_string(lastGoodPosition)+"B"
+ );
+ #else
+ int t=errno;
+ errorString_internal=strerror(t);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+
+ "Unable to write: "+TransferThread::internalStringTostring(file)+
+ ", error: "+errorString_internal+" ("+std::to_string(t)+") to write "+std::to_string(blockArray.size)+"B at "+std::to_string(lastGoodPosition)+"B"
+ );
+ #endif
+ stopIt=true;
+ emit error();
+ return;
+ }
+ if(bytesWriten!=blockArray.size)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"["+std::to_string(id)+"] "+QStringLiteral("Error in writing, bytesWriten: %1, blockArray.size(): %2").arg(bytesWriten).arg(blockArray.size).toStdString());
+ errorString_internal=QStringLiteral("Error in writing, bytesWriten: %1, blockArray.size(): %2").arg(bytesWriten).arg(blockArray.size).toStdString();
+ stopIt=true;
+ emit error();
+ return;
+ }
+ lastGoodPosition+=bytesWriten;
+ } while(true);
+}
+
+//return 0 if sucess
+int WriteThread::destTruncate(const uint64_t &startSize)
+{
+ #ifdef Q_OS_WIN32
+ if(to==NULL)
+ abort();
+ seek(startSize);
+ if(SetEndOfFile(to)!=0)
+ return 0;
+ else
+ return 1;
+ #else
+ if(to<0)
+ abort();
+ return ::ftruncate(to,startSize);
+ #endif
+}
+
+void WriteThread::setOsSpecFlags(bool os_spec_flags)
+{
+ this->os_spec_flags=os_spec_flags;
+}
diff --git a/plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.h b/plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.h
new file mode 100755
index 0000000..5e0b265
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.h
@@ -0,0 +1,181 @@
+/** \file WriteThread.h
+\brief Thread changed to open/close and write the destination file
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef WRITETHREAD_H
+#define WRITETHREAD_H
+
+#include <QThread>
+#include <QByteArray>
+#include <QMutex>
+#include <QSemaphore>
+#include <QCryptographicHash>
+#include <queue>
+
+#ifdef Q_OS_WIN32
+#include <windows.h>
+#endif
+
+#include "../Environment.h"
+#include "../StructEnumDefinition_CopyEngine.h"
+#include "../CopyEngineUltracopier-SpecVariable.h"
+
+#ifdef WIDESTRING
+#define INTERNALTYPEPATH std::wstring
+#define INTERNALTYPECHAR wchar_t
+#else
+#define INTERNALTYPEPATH std::string
+#define INTERNALTYPECHAR char
+#endif
+
+/// \brief Thread changed to open/close and write the destination file
+class WriteThread : public QThread
+{
+ Q_OBJECT
+public:
+ explicit WriteThread();
+ ~WriteThread();
+ //internal function
+ bool seek(const int64_t &position);/// \todo search if is use full
+ /// \brief get the size of the destination file
+ int64_t size() const;
+
+ //can't be static into WriteThread, linked by instance then by ListThread
+ QMultiHash<QString,WriteThread *> *writeFileList;
+ QMutex *writeFileListMutex;
+ bool buffer;
+ static unsigned int numberOfBlock;
+protected:
+ void run();
+public:
+ /// \brief open the destination to open it
+ void openWrite(const INTERNALTYPEPATH &file,const uint64_t &startSize);
+ /// \brief to return the error string
+ std::string errorString() const;
+ /// \brief to stop all
+ void stop();
+ /// \brief to write data
+ bool write(char *data, const unsigned int size);
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ /// \brief to set the id
+ void setId(int id);
+ /// \brief get the write stat
+ enum WriteStat
+ {
+ Idle=0,
+ InodeOperation=1,
+ Write=2,
+ Close=3,
+ Read=5
+ };
+ WriteStat status;
+ #endif
+ /// \brief do the fake open
+ void fakeOpen();
+ /// \brief do the fake writeIsStarted
+ void fakeWriteIsStarted();
+ /// \brief do the fake writeIsStopped
+ void fakeWriteIsStopped();
+ /// \brief set block size in KB mostly for speed
+ bool setBlockSize(const int blockSize);
+ /// \brief get the last good position
+ int64_t getLastGoodPosition() const;
+ /// \brief buffer is empty
+ bool bufferIsEmpty();
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ /// \brief set the current max speed in KB/s
+ void setMultiForBigSpeed(const int &multiForBigSpeed);
+ #endif
+ void pause();
+ void resume();
+ void reemitStartOpen();
+ //return 0 if sucess
+ int destTruncate(const uint64_t &startSize);
+ void setOsSpecFlags(bool os_spec_flags);
+public slots:
+ /// \brief start the operation
+ void postOperation();
+ /// \brief flush buffer
+ void flushBuffer();
+ /// \brief set the end is detected
+ void endIsDetected();
+ /// \brief reopen the file
+ void reopen();
+ /// \brief flush and seek to zero
+ void flushAndSeekToZero();
+ void setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles);
+ /// \brief executed at regular interval to do a speed throling
+ void timeOfTheBlockCopyFinished();
+
+ void resumeNotStarted();
+signals:
+ void error() const;
+ void opened() const;
+ void reopened() const;
+ void writeIsStarted() const;
+ void writeIsStopped() const;
+ void flushedAndSeekedToZero() const;
+ void closed() const;
+ //internal signals
+ void internalStartOpen() const;
+ void internalStartReopen() const;
+ void internalStartWrite() const;
+ void internalStartClose() const;
+ void internalStartEndOfFile() const;
+ void internalStartFlushAndSeekToZero() const;
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,const std::string &fonction,const std::string &text,const std::string &file,const int &ligne) const;
+private:
+ struct DataBlock
+ {
+ char * data;
+ unsigned int size;
+ };
+ std::string errorString_internal;
+ volatile bool stopIt;
+ volatile bool postOperationRequested;
+ bool os_spec_flags;
+ QMutex accessList; ///< For use the list
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ QSemaphore waitNewClockForSpeed,waitNewClockForSpeed2;
+ volatile int numberOfBlockCopied,numberOfBlockCopied2; ///< Multiple for count the number of block copied
+ volatile int multiplicatorForBigSpeed; ///< Multiple for count the number of block needed
+ volatile int MultiForBigSpeed;
+ #endif
+ QSemaphore writeFull;
+ volatile bool writeFullBlocked;
+ QSemaphore isOpen;
+ QSemaphore pauseMutex;
+ volatile bool putInPause;
+ std::queue<DataBlock> theBlockList; ///< Store the block list
+ uint64_t lastGoodPosition;
+ DataBlock blockArray; ///< temp data for block writing, the data
+ int64_t bytesWriten; ///< temp data for block writing, the bytes writen
+ int id;
+ volatile bool endDetected;
+ uint64_t startSize;
+ bool fakeMode;
+ bool needRemoveTheFile;
+ bool deletePartiallyTransferredFiles;
+ #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+ volatile int multiForBigSpeed; ///< Multiple for count the number of block needed
+ #endif
+
+ #ifdef Q_OS_UNIX
+ int to;
+ #else
+ HANDLE to;
+ #endif
+ INTERNALTYPEPATH file;
+private slots:
+ bool internalOpen();
+ void internalWrite();
+ void internalCloseSlot();
+ void internalClose(bool emitSignal=true);
+ void internalReopen();
+ void internalEndOfFile();
+ void internalFlushAndSeekToZero();
+};
+
+#endif // WRITETHREAD_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui b/plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui
new file mode 100755
index 0000000..e646a2d
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui
@@ -0,0 +1,602 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>copyEngineOptions</class>
+ <widget class="QWidget" name="copyEngineOptions">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>801</width>
+ <height>504</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QToolBox" name="toolBox">
+ <property name="currentIndex">
+ <number>2</number>
+ </property>
+ <widget class="QWidget" name="page_trasnfer">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>801</width>
+ <height>376</height>
+ </rect>
+ </property>
+ <attribute name="label">
+ <string>Transfer</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_5">
+ <item row="7" column="1">
+ <spacer name="verticalSpacer_6">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>278</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_18">
+ <property name="text">
+ <string>Move the whole folder</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QCheckBox" name="moveTheWholeFolder"/>
+ </item>
+ <item row="1" column="2">
+ <widget class="QCheckBox" name="keepDate"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Keep the file date</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string>Auto start</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="2">
+ <widget class="QCheckBox" name="checksum">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Transfer the file rights</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QCheckBox" name="doRightTransfer"/>
+ </item>
+ <item row="6" column="2">
+ <widget class="QCheckBox" name="autoStart">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Create full path if not exists</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_rsync">
+ <property name="text">
+ <string notr="true">Rsync</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="2">
+ <widget class="QCheckBox" name="mkpath">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <widget class="QCheckBox" name="rsync"/>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Checksum</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="page_error_collision">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>801</width>
+ <height>376</height>
+ </rect>
+ </property>
+ <attribute name="label">
+ <string>Error and collision</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_4">
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>When folder error</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="2">
+ <widget class="QCheckBox" name="checkBoxDestinationFolderExists"/>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_12">
+ <property name="text">
+ <string>When file error</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QComboBox" name="comboBoxFileError">
+ <item>
+ <property name="text">
+ <string notr="true">Ask</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Skip</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Put at the end</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_13">
+ <property name="text">
+ <string>When file collision</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QComboBox" name="comboBoxFileCollision">
+ <item>
+ <property name="text">
+ <string notr="true">Ask</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Skip</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Overwrite</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Overwrite if not same size and date</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Overwrite if newer</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Overwrite if older</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Rename</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Overwrite if not same size</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Overwrite if modification date differs</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QComboBox" name="comboBoxFolderError">
+ <item>
+ <property name="text">
+ <string notr="true">Ask</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Skip</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>When folder collision</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="2">
+ <widget class="QComboBox" name="comboBoxFolderCollision">
+ <item>
+ <property name="text">
+ <string notr="true">Ask</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Merge</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Skip</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Rename</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Check if destination folder exists</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="1">
+ <widget class="QPushButton" name="renamingRules">
+ <property name="text">
+ <string>Renaming rules</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="1">
+ <spacer name="verticalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>193</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="label_20">
+ <property name="text">
+ <string>Delete partially transferred files</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="2">
+ <widget class="QCheckBox" name="deletePartiallyTransferredFiles"/>
+ </item>
+ <item row="6" column="2">
+ <widget class="QCheckBox" name="renameTheOriginalDestination"/>
+ </item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="label_22">
+ <property name="text">
+ <string>Rename the original destination</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ <zorder>label_12</zorder>
+ <zorder>label_13</zorder>
+ <zorder>label_6</zorder>
+ <zorder>label_7</zorder>
+ <zorder>label_8</zorder>
+ <zorder>comboBoxFileError</zorder>
+ <zorder>comboBoxFileCollision</zorder>
+ <zorder>comboBoxFolderError</zorder>
+ <zorder>comboBoxFolderCollision</zorder>
+ <zorder>checkBoxDestinationFolderExists</zorder>
+ <zorder>renamingRules</zorder>
+ <zorder>label_20</zorder>
+ <zorder>deletePartiallyTransferredFiles</zorder>
+ <zorder>renameTheOriginalDestination</zorder>
+ <zorder>label_22</zorder>
+ </widget>
+ <widget class="QWidget" name="page_performance">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>801</width>
+ <height>376</height>
+ </rect>
+ </property>
+ <attribute name="label">
+ <string>Performance</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="inodeThreads">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>32</number>
+ </property>
+ <property name="value">
+ <number>16</number>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_21">
+ <property name="text">
+ <string>Inode threads</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QCheckBox" name="followTheStrictOrder"/>
+ </item>
+ <item row="3" column="1">
+ <widget class="QSpinBox" name="spinBox">
+ <property name="suffix">
+ <string>MB</string>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>1024</number>
+ </property>
+ <property name="value">
+ <number>300</number>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QSpinBox" name="spinBox_2">
+ <property name="suffix">
+ <string>MB</string>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>1024</number>
+ </property>
+ <property name="value">
+ <number>100</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QCheckBox" name="buffer">
+ <property name="toolTip">
+ <string>Uncheck this under Windows create problem</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>OS Buffer</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="1">
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>197</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_10">
+ <property name="text">
+ <string>Disable parallel transfer when are different devices</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_14">
+ <property name="text">
+ <string>Buffer for different device</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="label_15">
+ <property name="text">
+ <string>OS FLags</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_11">
+ <property name="text">
+ <string>Buffer for same device</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="label_16">
+ <property name="text">
+ <string>OS native copy (disable speed limitation)</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1">
+ <widget class="QCheckBox" name="os_spec_flags">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="1">
+ <widget class="QCheckBox" name="native_copy">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="page_misc">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>801</width>
+ <height>376</height>
+ </rect>
+ </property>
+ <attribute name="label">
+ <string>Misc</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_23">
+ <property name="text">
+ <string>Check the disk space</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QCheckBox" name="checkDiskSpace"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_24">
+ <property name="text">
+ <string>Use this folder when destination is not set</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLineEdit" name="defaultDestinationFolder"/>
+ </item>
+ <item>
+ <widget class="QPushButton" name="defaultDestinationFolderBrowse">
+ <property name="text">
+ <string>Browse</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="2" column="0">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>353</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="2" column="1">
+ <widget class="QPushButton" name="filters">
+ <property name="text">
+ <string>Filters</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>352</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="3" column="1">
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>159</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/copyEngineResources.qrc b/plugins/CopyEngine/Ultracopier-Spec/copyEngineResources.qrc
new file mode 100755
index 0000000..7ae0fdc
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/copyEngineResources.qrc
@@ -0,0 +1,8 @@
+<RCC>
+ <qresource prefix="/CopyEngine/Ultracopier-Spec">
+ <file>resources/add.png</file>
+ <file>resources/edit.png</file>
+ <file>resources/remove.png</file>
+ <file>resources/filter.png</file>
+ </qresource>
+</RCC>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/debugDialog.ui b/plugins/CopyEngine/Ultracopier-Spec/debugDialog.ui
new file mode 100755
index 0000000..5803f99
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/debugDialog.ui
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>debugDialog</class>
+ <widget class="QWidget" name="debugDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>665</width>
+ <height>392</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string notr="true">Monitor</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string notr="true">Transfer thread</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QListWidget" name="transferThreadList">
+ <property name="uniformItemSizes">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string notr="true">Transfer list</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QListWidget" name="tranferList">
+ <property name="uniformItemSizes">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_3">
+ <property name="title">
+ <string notr="true">Variables</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string notr="true">Active transfer:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QSpinBox" name="alreadyExistsQueue"/>
+ </item>
+ <item row="1" column="1">
+ <widget class="QSpinBox" name="spinBoxNumberOfInode">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ <property name="maximum">
+ <number>9999</number>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QSpinBox" name="spinBoxActiveTransfer">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ <property name="maximum">
+ <number>9999</number>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string notr="true">Number of inode manipuled:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QSpinBox" name="errorQueue"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string notr="true">alreadyExistsQueueItem:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string notr="true">errorQueueItem:</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/documentation.dox b/plugins/CopyEngine/Ultracopier-Spec/documentation.dox
new file mode 100755
index 0000000..5a0fbf6
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/documentation.dox
@@ -0,0 +1,39 @@
+/* -*- mode: C++ ; c-file-style: "stroustrup" -*- **/
+
+/*
+ This file contains NO source code, just some documentation for doxygen to
+ parse.
+*/
+
+/*!
+ \mainpage Copy engine
+
+ \section mainpage_overview Overview
+
+ The default copy engine for Ultracopier. Support file/folder, copy/move, ...\n
+ More informations on <a href="http://ultracopier-wiki.first-world.info/">the wiki of ultracopier</a>.
+
+ \section mainpage_platforms Platforms
+
+ This plugin might be usable in all environments where you find Qt 5, but Gcc is requiered for some part. You need qtsystem modules for QtSystemInfo\n
+ This plugin requires Qt 5.0 or newer. Tested on Qt 5.0.\n
+
+ \section mainpage_downloads Downloads
+
+ You can find the link on <a href="http://ultracopier.first-world.info/">Ultracopier</a> project page, via git, snapshot sources, ...
+
+ \section mainpage_algorithm Algorithm
+
+ Like say previously you will have more informations on the wiki.\n
+ Then file transfer is done via pipe mecamism system:\n
+ <ul>
+ <li>push at no blocking into table up to the table is full, after is blocked up to one entry is free</li>
+ <li>Other thread read the table up to have no more data, then is blocked</li>
+ </ul>
+ The transfer thread do listing of the folder, removing folder, make folder is one thread for each.\n
+ The transfer list, have thread pool to do the inode operation (open, close, set date, ...). Do all inode operation in parallele, but transfer the data as sequential.
+
+ \section license GPL Version 3
+ The code source is under GPL3. The image is extacted from Oxygen icon pack of KDE4.
+
+*/
diff --git a/plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui b/plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui
new file mode 100755
index 0000000..b603924
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui
@@ -0,0 +1,264 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>fileErrorDialog</class>
+ <widget class="QWidget" name="fileErrorDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>723</width>
+ <height>185</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Error with file</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>Error</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLabel" name="label_error">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QFormLayout" name="formLayout_2">
+ <property name="fieldGrowthPolicy">
+ <enum>QFormLayout::ExpandingFieldsGrow</enum>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_size">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Size</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="label_content_size">
+ <property name="text">
+ <string notr="true">0 KiB</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_modified">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Modified</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="label_content_modified">
+ <property name="text">
+ <string notr="true">Today</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_file_name">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>File name</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="label_content_file_name">
+ <property name="text">
+ <string notr="true">source.txt</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_file_destination">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Destination</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QLabel" name="label_content_file_destination">
+ <property name="text">
+ <string notr="true">../toto.txt</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_folder">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Folder</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QLabel" name="label_content_folder">
+ <property name="text">
+ <string notr="true">/folder/</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QCheckBox" name="checkBoxAlways">
+ <property name="text">
+ <string>&amp;Always perform this action</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Rights">
+ <property name="text">
+ <string>Try in with elevated privileges</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="PutToBottom">
+ <property name="text">
+ <string>Put to bottom</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Retry">
+ <property name="text">
+ <string>Retry</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Skip">
+ <property name="text">
+ <string>&amp;Skip</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Cancel">
+ <property name="text">
+ <string>&amp;Cancel</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>checkBoxAlways</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>Cancel</receiver>
+ <slot>setDisabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>112</x>
+ <y>131</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>438</x>
+ <y>142</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>checkBoxAlways</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>Retry</receiver>
+ <slot>setDisabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>155</x>
+ <y>131</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>309</x>
+ <y>134</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui b/plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui
new file mode 100755
index 0000000..2ca480b
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui
@@ -0,0 +1,428 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>fileExistsDialog</class>
+ <widget class="QWidget" name="fileExistsDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>615</width>
+ <height>222</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>The file exists</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>Source</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>Destination</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QFormLayout" name="formLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_source_size">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Size</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="label_content_source_size">
+ <property name="text">
+ <string notr="true">0 KiB</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_source_modified">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Modified</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="label_content_source_modified">
+ <property name="text">
+ <string notr="true">Today</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_source_file_name">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>File name</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="label_content_source_file_name">
+ <property name="text">
+ <string notr="true">source.txt</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Folder</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QLabel" name="label_content_source_folder">
+ <property name="text">
+ <string notr="true">/source/</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_4">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QFormLayout" name="formLayout">
+ <property name="fieldGrowthPolicy">
+ <enum>QFormLayout::ExpandingFieldsGrow</enum>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_destination_size">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Size</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="label_content_destination_size">
+ <property name="text">
+ <string notr="true">0 KiB</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_destination_modified">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Modified</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="label_content_destination_modified">
+ <property name="text">
+ <string notr="true">Today</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_destination_file_name">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>File name</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="label_content_destination_file_name">
+ <property name="text">
+ <string notr="true">destination.txt</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Folder</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QLabel" name="label_content_destination_folder">
+ <property name="text">
+ <string notr="true">/destination/</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QLineEdit" name="lineEditNewName">
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="placeholderText">
+ <string notr="true"/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="SuggestNewName">
+ <property name="text">
+ <string>Suggest new &amp;name</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QCheckBox" name="checkBoxAlways">
+ <property name="text">
+ <string>&amp;Always perform this action</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Rename">
+ <property name="text">
+ <string>&amp;Rename</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="Overwrite">
+ <property name="text">
+ <string>&amp;Overwrite</string>
+ </property>
+ <property name="popupMode">
+ <enum>QToolButton::MenuButtonPopup</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Skip">
+ <property name="text">
+ <string>&amp;Skip</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Cancel">
+ <property name="text">
+ <string>&amp;Cancel</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ <action name="actionOverwrite_if_newer">
+ <property name="text">
+ <string>Overwrite if newer</string>
+ </property>
+ </action>
+ <action name="actionOverwrite_if_not_same_modification_date">
+ <property name="text">
+ <string>Overwrite if modification date differs</string>
+ </property>
+ <property name="toolTip">
+ <string>Overwrite if modification date differs</string>
+ </property>
+ </action>
+ <action name="actionOverwrite_if_older">
+ <property name="text">
+ <string>Overwrite if older</string>
+ </property>
+ <property name="toolTip">
+ <string>Overwrite if older</string>
+ </property>
+ </action>
+ <action name="actionOverwrite_if_not_same_size">
+ <property name="text">
+ <string>Overwrite if not same size</string>
+ </property>
+ <property name="toolTip">
+ <string>Overwrite if not same size</string>
+ </property>
+ </action>
+ <action name="actionOverwrite_if_not_same_size_and_date">
+ <property name="text">
+ <string>Overwrite if not same size and date</string>
+ </property>
+ <property name="toolTip">
+ <string>Overwrite if not same size and date</string>
+ </property>
+ </action>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>checkBoxAlways</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>Cancel</receiver>
+ <slot>setDisabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>115</x>
+ <y>130</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>440</x>
+ <y>129</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>checkBoxAlways</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>lineEditNewName</receiver>
+ <slot>setDisabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>62</x>
+ <y>129</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>108</x>
+ <y>93</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>checkBoxAlways</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>SuggestNewName</receiver>
+ <slot>setDisabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>144</x>
+ <y>138</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>326</x>
+ <y>98</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui b/plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui
new file mode 100755
index 0000000..c019a63
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui
@@ -0,0 +1,214 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>fileIsSameDialog</class>
+ <widget class="QWidget" name="fileIsSameDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>411</width>
+ <height>142</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>The source and destination are same</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QFormLayout" name="formLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_size">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Size</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="label_content_size">
+ <property name="text">
+ <string notr="true">0 KiB</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::PlainText</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="label_content_modified">
+ <property name="text">
+ <string notr="true">Today</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::PlainText</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_file_name">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>File name</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="label_content_file_name">
+ <property name="text">
+ <string notr="true">source.txt</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::PlainText</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Folder</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QLabel" name="label_content_folder">
+ <property name="text">
+ <string notr="true">/toto/</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::PlainText</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_modified">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Modified</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QLineEdit" name="lineEditNewName">
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="placeholderText">
+ <string notr="true"/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="SuggestNewName">
+ <property name="text">
+ <string>Suggest new &amp;name</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QCheckBox" name="checkBoxAlways">
+ <property name="text">
+ <string>&amp;Always perform this action</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Rename">
+ <property name="text">
+ <string>&amp;Rename</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Skip">
+ <property name="text">
+ <string>&amp;Skip</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Cancel">
+ <property name="text">
+ <string>&amp;Cancel</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui b/plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui
new file mode 100755
index 0000000..440b5ca
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui
@@ -0,0 +1,309 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>folderExistsDialog</class>
+ <widget class="QDialog" name="folderExistsDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>476</width>
+ <height>140</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>The source and destination is identical</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QLabel" name="label_source">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>Source</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_destination">
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string>Destination</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QFormLayout" name="formLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_source_modified">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Modified</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="label_content_source_modified">
+ <property name="text">
+ <string notr="true">Today</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_source_folder_name">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Folder name</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="label_content_source_folder_name">
+ <property name="text">
+ <string notr="true">folder</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_source_folder">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Folder</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="label_content_source_folder">
+ <property name="text">
+ <string notr="true">/source/</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <layout class="QFormLayout" name="formLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_destination_modified">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Modified</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_destination_folder_name">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Folder name</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="label_content_destination_modified">
+ <property name="text">
+ <string notr="true">Today</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="label_content_destination_folder_name">
+ <property name="text">
+ <string notr="true">folder</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_destination_folder">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>Folder</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="label_content_destination_folder">
+ <property name="text">
+ <string notr="true">/destination/</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QLineEdit" name="lineEditNewName">
+ <property name="text">
+ <string notr="true"/>
+ </property>
+ <property name="placeholderText">
+ <string notr="true"/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="SuggestNewName">
+ <property name="text">
+ <string>Suggest new &amp;name</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QCheckBox" name="checkBoxAlways">
+ <property name="text">
+ <string>&amp;Always perform this action</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Rename">
+ <property name="text">
+ <string>&amp;Rename</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Merge">
+ <property name="text">
+ <string>Merge</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Skip">
+ <property name="text">
+ <string>Skip</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Cancel">
+ <property name="text">
+ <string>&amp;Cancel</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>checkBoxAlways</sender>
+ <signal>clicked(bool)</signal>
+ <receiver>lineEditNewName</receiver>
+ <slot>setDisabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>132</x>
+ <y>126</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>135</x>
+ <y>101</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>checkBoxAlways</sender>
+ <signal>clicked(bool)</signal>
+ <receiver>SuggestNewName</receiver>
+ <slot>setDisabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>113</x>
+ <y>129</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>304</x>
+ <y>100</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/informations.xml b/plugins/CopyEngine/Ultracopier-Spec/informations.xml
new file mode 100755
index 0000000..7281da3
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/informations.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package>
+ <title xml:lang="en"><![CDATA[Copy engine OS Specific of Ultracopier]]></title><!-- english is required -->
+ <title xml:lang="fr"><![CDATA[Moteur de copie spécifique à l'OS d'ultracopier]]></title>
+ <!-- What kind of plugin this is -->
+ <category>CopyEngine</category>
+ <!-- Who wrote this plugin -->
+ <author><![CDATA[BRULE Herman, alpha_one_x86 (alpha_one_x86@first-world.info)]]></author>
+ <!-- URL of page or site for this plugin (may provide additional information, bug reports, feature requests). -->
+ <website xml:lang="en"><![CDATA[http://ultracopier.first-world.info/]]></website><!-- not required -->
+ <website xml:lang="fr"><![CDATA[http://ultracopier-fr.first-world.info/]]></website><!-- not required -->
+ <!-- the date-time format should be in timestamps format -->
+ <pubDate>1287496800</pubDate>
+ <!-- the architecture code of this plugin, found PlatformMacro.h into ultracopier source -->
+ <architecture>windows-x86</architecture>
+ <!-- Detailed description -->
+ <description xml:lang="en"><![CDATA[Copy engine of Ultracopier, OS Specific, Posix for Unix, Win32API for windows]]></description>
+ <description xml:lang="fr"><![CDATA[Moteur de copie d'ultracopier, spécifique à l'OS, Posix pour Unix, Win32API pour windows]]></description>
+ <!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
+ <version>2.2.4.4</version>
+ <!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
+ <name>Ultracopier Spec</name>
+ <!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
+ <dependencies><![CDATA[
+ ]]></dependencies>
+</package>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/plugin.json b/plugins/CopyEngine/Ultracopier-Spec/plugin.json
new file mode 100755
index 0000000..9e26dfe
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/plugin.json
@@ -0,0 +1 @@
+{} \ No newline at end of file
diff --git a/plugins/CopyEngine/Ultracopier-Spec/ports.h b/plugins/CopyEngine/Ultracopier-Spec/ports.h
new file mode 100755
index 0000000..f888794
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/ports.h
@@ -0,0 +1,6 @@
+#if defined(PLATFORM_MAC) || defined(PLATFORM_HAIKU)
+ #define fseeko64 stat
+ #define ftruncate64 ftruncate
+ #define off64_t off_t
+ #define O_LARGEFILE 0
+#endif
diff --git a/plugins/CopyEngine/Ultracopier-Spec/resources/add.png b/plugins/CopyEngine/Ultracopier-Spec/resources/add.png
new file mode 100755
index 0000000..7932127
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/resources/add.png
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/resources/edit.png b/plugins/CopyEngine/Ultracopier-Spec/resources/edit.png
new file mode 100755
index 0000000..5464856
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/resources/edit.png
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/resources/filter.png b/plugins/CopyEngine/Ultracopier-Spec/resources/filter.png
new file mode 100755
index 0000000..9bb3164
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/resources/filter.png
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/resources/remove.png b/plugins/CopyEngine/Ultracopier-Spec/resources/remove.png
new file mode 100755
index 0000000..b711740
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/resources/remove.png
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/ja/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/ja/translation.ts
deleted file mode 100644
index 19bfabd..0000000
--- a/plugins/CopyEngine/Ultracopier/Languages/ja/translation.ts
+++ /dev/null
@@ -1,1291 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="26"/>
- <location filename="../../AvancedQFile.cpp" line="57"/>
- <location filename="../../AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngine</name>
- <message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
- <source>The engine is forced to move, you can&apos;t copy with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
- <source>The engine is forced to copy, you can&apos;t move with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Use the actual destination &quot;%1&quot;?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="732"/>
- <source>The mode has been forced previously. This is an internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine.cpp" line="1075"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngineFactory</name>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>DiskSpace</name>
- <message>
- <location filename="../../DiskSpace.ui" line="14"/>
- <source>Disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="24"/>
- <source>You need more space on this drive to finish this transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="49"/>
- <source>Continue</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="56"/>
- <source>Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.cpp" line="23"/>
- <source>Drives %1 have %2 available but need %3</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileErrorDialog</name>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="54"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="57"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileExistsDialog</name>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="137"/>
- <source>%name% - copy%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="144"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileIsSameDialog</name>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FilterRules</name>
- <message>
- <location filename="../../FilterRules.ui" line="17"/>
- <source>Filters dialog</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="33"/>
- <source>Search:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="43"/>
- <source>Search type:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="51"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="56"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="61"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="69"/>
- <source>Apply on:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="77"/>
- <source>File</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="82"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="87"/>
- <source>File and folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="95"/>
- <source>Whole string must match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string matches with the regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="102"/>
- <source>Checking</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="115"/>
- <source>Test string:</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Filters</name>
- <message>
- <location filename="../../Filters.ui" line="14"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="30"/>
- <source>Exclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="105"/>
- <source>None = Include all</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="93"/>
- <location filename="../../Filters.cpp" line="131"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="96"/>
- <location filename="../../Filters.cpp" line="134"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="99"/>
- <location filename="../../Filters.cpp" line="137"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="107"/>
- <location filename="../../Filters.cpp" line="145"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="110"/>
- <location filename="../../Filters.cpp" line="148"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="116"/>
- <location filename="../../Filters.cpp" line="154"/>
- <location filename="../../Filters.cpp" line="216"/>
- <location filename="../../Filters.cpp" line="255"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FolderExistsDialog</name>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="57"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
- <source>Unable do to move or copy item into wrong forced mode: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1510"/>
- <source>Problem reading file, or file-size is 0</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1517"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1526"/>
- <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1535"/>
- <source>The transfer list is in copy mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1541"/>
- <source>The transfer list is in move mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1604"/>
- <source>Some errors have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1612"/>
- <source>Unable to open the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>MkPath</name>
- <message>
- <location filename="../../MkPath.cpp" line="142"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="155"/>
- <source>The source folder don&apos;t exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="183"/>
- <source>Unable to temporary rename the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="206"/>
- <source>Unable to do the final real move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="233"/>
- <source>Unable to move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="93"/>
- <location filename="../../MkPath.cpp" line="276"/>
- <source>Unable to remove</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="59"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>RenamingRules</name>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="35"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="41"/>
- <source>%name% - copy%suffix%</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="57"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="67"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="51"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="43"/>
- <location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ScanFileOrFolder</name>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="338"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="345"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="401"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="408"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="244"/>
- <location filename="../../TransferThread.cpp" line="673"/>
- <location filename="../../TransferThread.cpp" line="745"/>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="346"/>
- <location filename="../../TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="421"/>
- <location filename="../../TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="711"/>
- <location filename="../../TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="751"/>
- <location filename="../../TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <location filename="../../TransferThread.cpp" line="1333"/>
- <location filename="../../TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="83"/>
- <source>Path resolution error (Empty path)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngineOptions</name>
- <message>
- <location filename="../../copyEngineOptions.ui" line="44"/>
- <source>Transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="53"/>
- <source>Move the whole folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="90"/>
- <location filename="../../copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="139"/>
- <source>Error and collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="145"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="155"/>
- <source>When file error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="181"/>
- <source>When file collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="343"/>
- <source>Control</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="414"/>
- <source>Performance</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="427"/>
- <location filename="../../copyEngineOptions.ui" line="440"/>
- <location filename="../../copyEngineOptions.ui" line="453"/>
- <location filename="../../copyEngineOptions.ui" line="490"/>
- <location filename="../../copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="589"/>
- <location filename="../../copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="618"/>
- <source>Misc</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="624"/>
- <source>Check the disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="634"/>
- <source>Use this folder when destination is not set</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="646"/>
- <source>Browse</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="668"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error with file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="59"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="76"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="93"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="110"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="127"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="173"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="193"/>
- <source>Try in with elevated privileges</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="200"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="207"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="214"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileExistsDialog</name>
- <message>
- <location filename="../../fileExistsDialog.ui" line="14"/>
- <source>The file exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="82"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="204"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="133"/>
- <location filename="../../fileExistsDialog.ui" line="221"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="277"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="346"/>
- <location filename="../../fileExistsDialog.ui" line="349"/>
- <source>Overwrite if modification date differs</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="308"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="341"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="354"/>
- <location filename="../../fileExistsDialog.ui" line="357"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="40"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="110"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="70"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>The source and destination are same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="90"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="159"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>The source and destination is identical</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="82"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="99"/>
- <location filename="../../folderExistsDialog.ui" line="160"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="116"/>
- <location filename="../../folderExistsDialog.ui" line="184"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="227"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="252"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="259"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="266"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins/CopyEngine/Ultracopier/Languages/nl/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/nl/translation.ts
deleted file mode 100644
index e17b3f2..0000000
--- a/plugins/CopyEngine/Ultracopier/Languages/nl/translation.ts
+++ /dev/null
@@ -1,1291 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="26"/>
- <location filename="../../AvancedQFile.cpp" line="57"/>
- <location filename="../../AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngine</name>
- <message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
- <source>The engine is forced to move, you can&apos;t copy with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
- <source>The engine is forced to copy, you can&apos;t move with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Use the actual destination &quot;%1&quot;?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="732"/>
- <source>The mode has been forced previously. This is an internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine.cpp" line="1075"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngineFactory</name>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>DiskSpace</name>
- <message>
- <location filename="../../DiskSpace.ui" line="14"/>
- <source>Disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="24"/>
- <source>You need more space on this drive to finish this transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="49"/>
- <source>Continue</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="56"/>
- <source>Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.cpp" line="23"/>
- <source>Drives %1 have %2 available but need %3</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileErrorDialog</name>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="54"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="57"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileExistsDialog</name>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="137"/>
- <source>%name% - copy%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="144"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileIsSameDialog</name>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FilterRules</name>
- <message>
- <location filename="../../FilterRules.ui" line="33"/>
- <source>Search:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="43"/>
- <source>Search type:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="51"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="56"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="61"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="69"/>
- <source>Apply on:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="77"/>
- <source>File</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="82"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="87"/>
- <source>File and folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string matches with the regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="102"/>
- <source>Checking</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="115"/>
- <source>Test string:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="17"/>
- <source>Filters dialog</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="95"/>
- <source>Whole string must match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Filters</name>
- <message>
- <location filename="../../Filters.ui" line="14"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="30"/>
- <source>Exclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="105"/>
- <source>None = Include all</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="93"/>
- <location filename="../../Filters.cpp" line="131"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="96"/>
- <location filename="../../Filters.cpp" line="134"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="99"/>
- <location filename="../../Filters.cpp" line="137"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="107"/>
- <location filename="../../Filters.cpp" line="145"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="110"/>
- <location filename="../../Filters.cpp" line="148"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="116"/>
- <location filename="../../Filters.cpp" line="154"/>
- <location filename="../../Filters.cpp" line="216"/>
- <location filename="../../Filters.cpp" line="255"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FolderExistsDialog</name>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="57"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
- <source>Unable do to move or copy item into wrong forced mode: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1510"/>
- <source>Problem reading file, or file-size is 0</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1517"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1526"/>
- <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1535"/>
- <source>The transfer list is in copy mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1541"/>
- <source>The transfer list is in move mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1604"/>
- <source>Some errors have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1612"/>
- <source>Unable to open the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>MkPath</name>
- <message>
- <location filename="../../MkPath.cpp" line="142"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="155"/>
- <source>The source folder don&apos;t exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="183"/>
- <source>Unable to temporary rename the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="206"/>
- <source>Unable to do the final real move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="233"/>
- <source>Unable to move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="93"/>
- <location filename="../../MkPath.cpp" line="276"/>
- <source>Unable to remove</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="59"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>RenamingRules</name>
- <message>
- <location filename="../../RenamingRules.ui" line="35"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="41"/>
- <source>%name% - copy%suffix%</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="57"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="67"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="51"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="43"/>
- <location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ScanFileOrFolder</name>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="338"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="345"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="401"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="408"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="244"/>
- <location filename="../../TransferThread.cpp" line="673"/>
- <location filename="../../TransferThread.cpp" line="745"/>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="346"/>
- <location filename="../../TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="421"/>
- <location filename="../../TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="711"/>
- <location filename="../../TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="751"/>
- <location filename="../../TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <location filename="../../TransferThread.cpp" line="1333"/>
- <location filename="../../TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="83"/>
- <source>Path resolution error (Empty path)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngineOptions</name>
- <message>
- <location filename="../../copyEngineOptions.ui" line="44"/>
- <source>Transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="53"/>
- <source>Move the whole folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="90"/>
- <location filename="../../copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="139"/>
- <source>Error and collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="145"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="155"/>
- <source>When file error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="181"/>
- <source>When file collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="343"/>
- <source>Control</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="414"/>
- <source>Performance</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="427"/>
- <location filename="../../copyEngineOptions.ui" line="440"/>
- <location filename="../../copyEngineOptions.ui" line="453"/>
- <location filename="../../copyEngineOptions.ui" line="490"/>
- <location filename="../../copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="589"/>
- <location filename="../../copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="618"/>
- <source>Misc</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="624"/>
- <source>Check the disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="634"/>
- <source>Use this folder when destination is not set</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="646"/>
- <source>Browse</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="668"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error with file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="59"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="76"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="93"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="110"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="127"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="173"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="193"/>
- <source>Try in with elevated privileges</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="200"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="207"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="214"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileExistsDialog</name>
- <message>
- <location filename="../../fileExistsDialog.ui" line="14"/>
- <source>The file exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="82"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="204"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="133"/>
- <location filename="../../fileExistsDialog.ui" line="221"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="277"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="346"/>
- <location filename="../../fileExistsDialog.ui" line="349"/>
- <source>Overwrite if modification date differs</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="308"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="341"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="354"/>
- <location filename="../../fileExistsDialog.ui" line="357"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="40"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="110"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="70"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>The source and destination are same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="90"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="159"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>The source and destination is identical</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="82"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="99"/>
- <location filename="../../folderExistsDialog.ui" line="160"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="116"/>
- <location filename="../../folderExistsDialog.ui" line="184"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="227"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="252"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="259"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="266"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins/CopyEngine/Ultracopier/Languages/no/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/no/translation.ts
deleted file mode 100644
index e17b3f2..0000000
--- a/plugins/CopyEngine/Ultracopier/Languages/no/translation.ts
+++ /dev/null
@@ -1,1291 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="26"/>
- <location filename="../../AvancedQFile.cpp" line="57"/>
- <location filename="../../AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngine</name>
- <message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
- <source>The engine is forced to move, you can&apos;t copy with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
- <source>The engine is forced to copy, you can&apos;t move with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Use the actual destination &quot;%1&quot;?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="732"/>
- <source>The mode has been forced previously. This is an internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine.cpp" line="1075"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngineFactory</name>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>DiskSpace</name>
- <message>
- <location filename="../../DiskSpace.ui" line="14"/>
- <source>Disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="24"/>
- <source>You need more space on this drive to finish this transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="49"/>
- <source>Continue</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="56"/>
- <source>Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.cpp" line="23"/>
- <source>Drives %1 have %2 available but need %3</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileErrorDialog</name>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="54"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="57"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileExistsDialog</name>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="137"/>
- <source>%name% - copy%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="144"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileIsSameDialog</name>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FilterRules</name>
- <message>
- <location filename="../../FilterRules.ui" line="33"/>
- <source>Search:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="43"/>
- <source>Search type:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="51"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="56"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="61"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="69"/>
- <source>Apply on:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="77"/>
- <source>File</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="82"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="87"/>
- <source>File and folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string matches with the regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="102"/>
- <source>Checking</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="115"/>
- <source>Test string:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="17"/>
- <source>Filters dialog</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="95"/>
- <source>Whole string must match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Filters</name>
- <message>
- <location filename="../../Filters.ui" line="14"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="30"/>
- <source>Exclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="105"/>
- <source>None = Include all</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="93"/>
- <location filename="../../Filters.cpp" line="131"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="96"/>
- <location filename="../../Filters.cpp" line="134"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="99"/>
- <location filename="../../Filters.cpp" line="137"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="107"/>
- <location filename="../../Filters.cpp" line="145"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="110"/>
- <location filename="../../Filters.cpp" line="148"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="116"/>
- <location filename="../../Filters.cpp" line="154"/>
- <location filename="../../Filters.cpp" line="216"/>
- <location filename="../../Filters.cpp" line="255"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FolderExistsDialog</name>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="57"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
- <source>Unable do to move or copy item into wrong forced mode: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1510"/>
- <source>Problem reading file, or file-size is 0</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1517"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1526"/>
- <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1535"/>
- <source>The transfer list is in copy mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1541"/>
- <source>The transfer list is in move mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1604"/>
- <source>Some errors have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1612"/>
- <source>Unable to open the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>MkPath</name>
- <message>
- <location filename="../../MkPath.cpp" line="142"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="155"/>
- <source>The source folder don&apos;t exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="183"/>
- <source>Unable to temporary rename the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="206"/>
- <source>Unable to do the final real move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="233"/>
- <source>Unable to move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="93"/>
- <location filename="../../MkPath.cpp" line="276"/>
- <source>Unable to remove</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="59"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>RenamingRules</name>
- <message>
- <location filename="../../RenamingRules.ui" line="35"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="41"/>
- <source>%name% - copy%suffix%</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="57"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="67"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="51"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="43"/>
- <location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ScanFileOrFolder</name>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="338"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="345"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="401"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="408"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="244"/>
- <location filename="../../TransferThread.cpp" line="673"/>
- <location filename="../../TransferThread.cpp" line="745"/>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="346"/>
- <location filename="../../TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="421"/>
- <location filename="../../TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="711"/>
- <location filename="../../TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="751"/>
- <location filename="../../TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <location filename="../../TransferThread.cpp" line="1333"/>
- <location filename="../../TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="83"/>
- <source>Path resolution error (Empty path)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngineOptions</name>
- <message>
- <location filename="../../copyEngineOptions.ui" line="44"/>
- <source>Transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="53"/>
- <source>Move the whole folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="90"/>
- <location filename="../../copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="139"/>
- <source>Error and collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="145"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="155"/>
- <source>When file error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="181"/>
- <source>When file collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="343"/>
- <source>Control</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="414"/>
- <source>Performance</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="427"/>
- <location filename="../../copyEngineOptions.ui" line="440"/>
- <location filename="../../copyEngineOptions.ui" line="453"/>
- <location filename="../../copyEngineOptions.ui" line="490"/>
- <location filename="../../copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="589"/>
- <location filename="../../copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="618"/>
- <source>Misc</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="624"/>
- <source>Check the disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="634"/>
- <source>Use this folder when destination is not set</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="646"/>
- <source>Browse</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="668"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error with file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="59"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="76"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="93"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="110"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="127"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="173"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="193"/>
- <source>Try in with elevated privileges</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="200"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="207"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="214"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileExistsDialog</name>
- <message>
- <location filename="../../fileExistsDialog.ui" line="14"/>
- <source>The file exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="82"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="204"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="133"/>
- <location filename="../../fileExistsDialog.ui" line="221"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="277"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="346"/>
- <location filename="../../fileExistsDialog.ui" line="349"/>
- <source>Overwrite if modification date differs</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="308"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="341"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="354"/>
- <location filename="../../fileExistsDialog.ui" line="357"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="40"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="110"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="70"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>The source and destination are same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="90"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="159"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>The source and destination is identical</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="82"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="99"/>
- <location filename="../../folderExistsDialog.ui" line="160"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="116"/>
- <location filename="../../folderExistsDialog.ui" line="184"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="227"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="252"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="259"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="266"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins/CopyEngine/Ultracopier/Languages/pl/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/pl/translation.ts
deleted file mode 100644
index e17b3f2..0000000
--- a/plugins/CopyEngine/Ultracopier/Languages/pl/translation.ts
+++ /dev/null
@@ -1,1291 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="26"/>
- <location filename="../../AvancedQFile.cpp" line="57"/>
- <location filename="../../AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngine</name>
- <message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
- <source>The engine is forced to move, you can&apos;t copy with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
- <source>The engine is forced to copy, you can&apos;t move with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Use the actual destination &quot;%1&quot;?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="732"/>
- <source>The mode has been forced previously. This is an internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine.cpp" line="1075"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngineFactory</name>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>DiskSpace</name>
- <message>
- <location filename="../../DiskSpace.ui" line="14"/>
- <source>Disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="24"/>
- <source>You need more space on this drive to finish this transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="49"/>
- <source>Continue</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="56"/>
- <source>Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.cpp" line="23"/>
- <source>Drives %1 have %2 available but need %3</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileErrorDialog</name>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="54"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="57"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileExistsDialog</name>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="137"/>
- <source>%name% - copy%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="144"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileIsSameDialog</name>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FilterRules</name>
- <message>
- <location filename="../../FilterRules.ui" line="33"/>
- <source>Search:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="43"/>
- <source>Search type:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="51"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="56"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="61"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="69"/>
- <source>Apply on:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="77"/>
- <source>File</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="82"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="87"/>
- <source>File and folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string matches with the regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="102"/>
- <source>Checking</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="115"/>
- <source>Test string:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="17"/>
- <source>Filters dialog</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="95"/>
- <source>Whole string must match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Filters</name>
- <message>
- <location filename="../../Filters.ui" line="14"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="30"/>
- <source>Exclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="105"/>
- <source>None = Include all</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="93"/>
- <location filename="../../Filters.cpp" line="131"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="96"/>
- <location filename="../../Filters.cpp" line="134"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="99"/>
- <location filename="../../Filters.cpp" line="137"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="107"/>
- <location filename="../../Filters.cpp" line="145"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="110"/>
- <location filename="../../Filters.cpp" line="148"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="116"/>
- <location filename="../../Filters.cpp" line="154"/>
- <location filename="../../Filters.cpp" line="216"/>
- <location filename="../../Filters.cpp" line="255"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FolderExistsDialog</name>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="57"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
- <source>Unable do to move or copy item into wrong forced mode: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1510"/>
- <source>Problem reading file, or file-size is 0</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1517"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1526"/>
- <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1535"/>
- <source>The transfer list is in copy mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1541"/>
- <source>The transfer list is in move mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1604"/>
- <source>Some errors have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1612"/>
- <source>Unable to open the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>MkPath</name>
- <message>
- <location filename="../../MkPath.cpp" line="142"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="155"/>
- <source>The source folder don&apos;t exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="183"/>
- <source>Unable to temporary rename the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="206"/>
- <source>Unable to do the final real move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="233"/>
- <source>Unable to move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="93"/>
- <location filename="../../MkPath.cpp" line="276"/>
- <source>Unable to remove</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="59"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>RenamingRules</name>
- <message>
- <location filename="../../RenamingRules.ui" line="35"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="41"/>
- <source>%name% - copy%suffix%</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="57"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="67"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="51"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="43"/>
- <location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ScanFileOrFolder</name>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="338"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="345"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="401"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="408"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="244"/>
- <location filename="../../TransferThread.cpp" line="673"/>
- <location filename="../../TransferThread.cpp" line="745"/>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="346"/>
- <location filename="../../TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="421"/>
- <location filename="../../TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="711"/>
- <location filename="../../TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="751"/>
- <location filename="../../TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <location filename="../../TransferThread.cpp" line="1333"/>
- <location filename="../../TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="83"/>
- <source>Path resolution error (Empty path)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngineOptions</name>
- <message>
- <location filename="../../copyEngineOptions.ui" line="44"/>
- <source>Transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="53"/>
- <source>Move the whole folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="90"/>
- <location filename="../../copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="139"/>
- <source>Error and collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="145"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="155"/>
- <source>When file error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="181"/>
- <source>When file collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="343"/>
- <source>Control</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="414"/>
- <source>Performance</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="427"/>
- <location filename="../../copyEngineOptions.ui" line="440"/>
- <location filename="../../copyEngineOptions.ui" line="453"/>
- <location filename="../../copyEngineOptions.ui" line="490"/>
- <location filename="../../copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="589"/>
- <location filename="../../copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="618"/>
- <source>Misc</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="624"/>
- <source>Check the disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="634"/>
- <source>Use this folder when destination is not set</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="646"/>
- <source>Browse</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="668"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error with file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="59"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="76"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="93"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="110"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="127"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="173"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="193"/>
- <source>Try in with elevated privileges</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="200"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="207"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="214"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileExistsDialog</name>
- <message>
- <location filename="../../fileExistsDialog.ui" line="14"/>
- <source>The file exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="82"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="204"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="133"/>
- <location filename="../../fileExistsDialog.ui" line="221"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="277"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="346"/>
- <location filename="../../fileExistsDialog.ui" line="349"/>
- <source>Overwrite if modification date differs</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="308"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="341"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="354"/>
- <location filename="../../fileExistsDialog.ui" line="357"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="40"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="110"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="70"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>The source and destination are same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="90"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="159"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>The source and destination is identical</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="82"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="99"/>
- <location filename="../../folderExistsDialog.ui" line="160"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="116"/>
- <location filename="../../folderExistsDialog.ui" line="184"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="227"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="252"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="259"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="266"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins/CopyEngine/Ultracopier/Languages/pt/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/pt/translation.ts
deleted file mode 100644
index e17b3f2..0000000
--- a/plugins/CopyEngine/Ultracopier/Languages/pt/translation.ts
+++ /dev/null
@@ -1,1291 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="26"/>
- <location filename="../../AvancedQFile.cpp" line="57"/>
- <location filename="../../AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngine</name>
- <message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
- <source>The engine is forced to move, you can&apos;t copy with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
- <source>The engine is forced to copy, you can&apos;t move with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Use the actual destination &quot;%1&quot;?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="732"/>
- <source>The mode has been forced previously. This is an internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine.cpp" line="1075"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngineFactory</name>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>DiskSpace</name>
- <message>
- <location filename="../../DiskSpace.ui" line="14"/>
- <source>Disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="24"/>
- <source>You need more space on this drive to finish this transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="49"/>
- <source>Continue</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="56"/>
- <source>Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.cpp" line="23"/>
- <source>Drives %1 have %2 available but need %3</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileErrorDialog</name>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="54"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="57"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileExistsDialog</name>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="137"/>
- <source>%name% - copy%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="144"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileIsSameDialog</name>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FilterRules</name>
- <message>
- <location filename="../../FilterRules.ui" line="33"/>
- <source>Search:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="43"/>
- <source>Search type:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="51"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="56"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="61"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="69"/>
- <source>Apply on:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="77"/>
- <source>File</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="82"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="87"/>
- <source>File and folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string matches with the regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="102"/>
- <source>Checking</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="115"/>
- <source>Test string:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="17"/>
- <source>Filters dialog</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="95"/>
- <source>Whole string must match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Filters</name>
- <message>
- <location filename="../../Filters.ui" line="14"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="30"/>
- <source>Exclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="105"/>
- <source>None = Include all</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="93"/>
- <location filename="../../Filters.cpp" line="131"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="96"/>
- <location filename="../../Filters.cpp" line="134"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="99"/>
- <location filename="../../Filters.cpp" line="137"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="107"/>
- <location filename="../../Filters.cpp" line="145"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="110"/>
- <location filename="../../Filters.cpp" line="148"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="116"/>
- <location filename="../../Filters.cpp" line="154"/>
- <location filename="../../Filters.cpp" line="216"/>
- <location filename="../../Filters.cpp" line="255"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FolderExistsDialog</name>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="57"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
- <source>Unable do to move or copy item into wrong forced mode: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1510"/>
- <source>Problem reading file, or file-size is 0</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1517"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1526"/>
- <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1535"/>
- <source>The transfer list is in copy mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1541"/>
- <source>The transfer list is in move mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1604"/>
- <source>Some errors have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1612"/>
- <source>Unable to open the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>MkPath</name>
- <message>
- <location filename="../../MkPath.cpp" line="142"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="155"/>
- <source>The source folder don&apos;t exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="183"/>
- <source>Unable to temporary rename the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="206"/>
- <source>Unable to do the final real move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="233"/>
- <source>Unable to move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="93"/>
- <location filename="../../MkPath.cpp" line="276"/>
- <source>Unable to remove</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="59"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>RenamingRules</name>
- <message>
- <location filename="../../RenamingRules.ui" line="35"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="41"/>
- <source>%name% - copy%suffix%</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="57"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="67"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="51"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="43"/>
- <location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ScanFileOrFolder</name>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="338"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="345"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="401"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="408"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="244"/>
- <location filename="../../TransferThread.cpp" line="673"/>
- <location filename="../../TransferThread.cpp" line="745"/>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="346"/>
- <location filename="../../TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="421"/>
- <location filename="../../TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="711"/>
- <location filename="../../TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="751"/>
- <location filename="../../TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <location filename="../../TransferThread.cpp" line="1333"/>
- <location filename="../../TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="83"/>
- <source>Path resolution error (Empty path)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngineOptions</name>
- <message>
- <location filename="../../copyEngineOptions.ui" line="44"/>
- <source>Transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="53"/>
- <source>Move the whole folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="90"/>
- <location filename="../../copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="139"/>
- <source>Error and collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="145"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="155"/>
- <source>When file error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="181"/>
- <source>When file collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="343"/>
- <source>Control</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="414"/>
- <source>Performance</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="427"/>
- <location filename="../../copyEngineOptions.ui" line="440"/>
- <location filename="../../copyEngineOptions.ui" line="453"/>
- <location filename="../../copyEngineOptions.ui" line="490"/>
- <location filename="../../copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="589"/>
- <location filename="../../copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="618"/>
- <source>Misc</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="624"/>
- <source>Check the disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="634"/>
- <source>Use this folder when destination is not set</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="646"/>
- <source>Browse</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="668"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error with file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="59"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="76"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="93"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="110"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="127"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="173"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="193"/>
- <source>Try in with elevated privileges</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="200"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="207"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="214"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileExistsDialog</name>
- <message>
- <location filename="../../fileExistsDialog.ui" line="14"/>
- <source>The file exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="82"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="204"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="133"/>
- <location filename="../../fileExistsDialog.ui" line="221"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="277"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="346"/>
- <location filename="../../fileExistsDialog.ui" line="349"/>
- <source>Overwrite if modification date differs</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="308"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="341"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="354"/>
- <location filename="../../fileExistsDialog.ui" line="357"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="40"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="110"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="70"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>The source and destination are same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="90"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="159"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>The source and destination is identical</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="82"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="99"/>
- <location filename="../../folderExistsDialog.ui" line="160"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="116"/>
- <location filename="../../folderExistsDialog.ui" line="184"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="227"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="252"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="259"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="266"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins/CopyEngine/Ultracopier/Languages/th/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/th/translation.ts
deleted file mode 100644
index e17b3f2..0000000
--- a/plugins/CopyEngine/Ultracopier/Languages/th/translation.ts
+++ /dev/null
@@ -1,1291 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="26"/>
- <location filename="../../AvancedQFile.cpp" line="57"/>
- <location filename="../../AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngine</name>
- <message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
- <source>The engine is forced to move, you can&apos;t copy with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
- <source>The engine is forced to copy, you can&apos;t move with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Use the actual destination &quot;%1&quot;?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="732"/>
- <source>The mode has been forced previously. This is an internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine.cpp" line="1075"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngineFactory</name>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>DiskSpace</name>
- <message>
- <location filename="../../DiskSpace.ui" line="14"/>
- <source>Disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="24"/>
- <source>You need more space on this drive to finish this transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="49"/>
- <source>Continue</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="56"/>
- <source>Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.cpp" line="23"/>
- <source>Drives %1 have %2 available but need %3</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileErrorDialog</name>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="54"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="57"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileExistsDialog</name>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="137"/>
- <source>%name% - copy%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="144"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileIsSameDialog</name>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FilterRules</name>
- <message>
- <location filename="../../FilterRules.ui" line="33"/>
- <source>Search:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="43"/>
- <source>Search type:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="51"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="56"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="61"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="69"/>
- <source>Apply on:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="77"/>
- <source>File</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="82"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="87"/>
- <source>File and folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string matches with the regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="102"/>
- <source>Checking</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="115"/>
- <source>Test string:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="17"/>
- <source>Filters dialog</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="95"/>
- <source>Whole string must match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Filters</name>
- <message>
- <location filename="../../Filters.ui" line="14"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="30"/>
- <source>Exclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="105"/>
- <source>None = Include all</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="93"/>
- <location filename="../../Filters.cpp" line="131"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="96"/>
- <location filename="../../Filters.cpp" line="134"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="99"/>
- <location filename="../../Filters.cpp" line="137"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="107"/>
- <location filename="../../Filters.cpp" line="145"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="110"/>
- <location filename="../../Filters.cpp" line="148"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="116"/>
- <location filename="../../Filters.cpp" line="154"/>
- <location filename="../../Filters.cpp" line="216"/>
- <location filename="../../Filters.cpp" line="255"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FolderExistsDialog</name>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="57"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
- <source>Unable do to move or copy item into wrong forced mode: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1510"/>
- <source>Problem reading file, or file-size is 0</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1517"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1526"/>
- <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1535"/>
- <source>The transfer list is in copy mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1541"/>
- <source>The transfer list is in move mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1604"/>
- <source>Some errors have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1612"/>
- <source>Unable to open the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>MkPath</name>
- <message>
- <location filename="../../MkPath.cpp" line="142"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="155"/>
- <source>The source folder don&apos;t exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="183"/>
- <source>Unable to temporary rename the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="206"/>
- <source>Unable to do the final real move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="233"/>
- <source>Unable to move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="93"/>
- <location filename="../../MkPath.cpp" line="276"/>
- <source>Unable to remove</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="59"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>RenamingRules</name>
- <message>
- <location filename="../../RenamingRules.ui" line="35"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="41"/>
- <source>%name% - copy%suffix%</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="57"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="67"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="51"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="43"/>
- <location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ScanFileOrFolder</name>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="338"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="345"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="401"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="408"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="244"/>
- <location filename="../../TransferThread.cpp" line="673"/>
- <location filename="../../TransferThread.cpp" line="745"/>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="346"/>
- <location filename="../../TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="421"/>
- <location filename="../../TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="711"/>
- <location filename="../../TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="751"/>
- <location filename="../../TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <location filename="../../TransferThread.cpp" line="1333"/>
- <location filename="../../TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="83"/>
- <source>Path resolution error (Empty path)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngineOptions</name>
- <message>
- <location filename="../../copyEngineOptions.ui" line="44"/>
- <source>Transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="53"/>
- <source>Move the whole folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="90"/>
- <location filename="../../copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="139"/>
- <source>Error and collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="145"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="155"/>
- <source>When file error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="181"/>
- <source>When file collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="343"/>
- <source>Control</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="414"/>
- <source>Performance</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="427"/>
- <location filename="../../copyEngineOptions.ui" line="440"/>
- <location filename="../../copyEngineOptions.ui" line="453"/>
- <location filename="../../copyEngineOptions.ui" line="490"/>
- <location filename="../../copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="589"/>
- <location filename="../../copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="618"/>
- <source>Misc</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="624"/>
- <source>Check the disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="634"/>
- <source>Use this folder when destination is not set</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="646"/>
- <source>Browse</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="668"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error with file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="59"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="76"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="93"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="110"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="127"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="173"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="193"/>
- <source>Try in with elevated privileges</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="200"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="207"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="214"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileExistsDialog</name>
- <message>
- <location filename="../../fileExistsDialog.ui" line="14"/>
- <source>The file exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="82"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="204"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="133"/>
- <location filename="../../fileExistsDialog.ui" line="221"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="277"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="346"/>
- <location filename="../../fileExistsDialog.ui" line="349"/>
- <source>Overwrite if modification date differs</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="308"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="341"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="354"/>
- <location filename="../../fileExistsDialog.ui" line="357"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="40"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="110"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="70"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>The source and destination are same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="90"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="159"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>The source and destination is identical</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="82"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="99"/>
- <location filename="../../folderExistsDialog.ui" line="160"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="116"/>
- <location filename="../../folderExistsDialog.ui" line="184"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="227"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="252"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="259"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="266"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins/CopyEngine/Ultracopier/Languages/tr/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/tr/translation.ts
deleted file mode 100644
index e17b3f2..0000000
--- a/plugins/CopyEngine/Ultracopier/Languages/tr/translation.ts
+++ /dev/null
@@ -1,1291 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="26"/>
- <location filename="../../AvancedQFile.cpp" line="57"/>
- <location filename="../../AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngine</name>
- <message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
- <source>The engine is forced to move, you can&apos;t copy with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
- <source>The engine is forced to copy, you can&apos;t move with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Use the actual destination &quot;%1&quot;?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="732"/>
- <source>The mode has been forced previously. This is an internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine.cpp" line="1075"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngineFactory</name>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>DiskSpace</name>
- <message>
- <location filename="../../DiskSpace.ui" line="14"/>
- <source>Disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="24"/>
- <source>You need more space on this drive to finish this transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="49"/>
- <source>Continue</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="56"/>
- <source>Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.cpp" line="23"/>
- <source>Drives %1 have %2 available but need %3</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileErrorDialog</name>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="54"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="57"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileExistsDialog</name>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="137"/>
- <source>%name% - copy%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="144"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileIsSameDialog</name>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FilterRules</name>
- <message>
- <location filename="../../FilterRules.ui" line="33"/>
- <source>Search:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="43"/>
- <source>Search type:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="51"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="56"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="61"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="69"/>
- <source>Apply on:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="77"/>
- <source>File</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="82"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="87"/>
- <source>File and folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string matches with the regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="102"/>
- <source>Checking</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="115"/>
- <source>Test string:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="17"/>
- <source>Filters dialog</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="95"/>
- <source>Whole string must match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Filters</name>
- <message>
- <location filename="../../Filters.ui" line="14"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="30"/>
- <source>Exclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="105"/>
- <source>None = Include all</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="93"/>
- <location filename="../../Filters.cpp" line="131"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="96"/>
- <location filename="../../Filters.cpp" line="134"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="99"/>
- <location filename="../../Filters.cpp" line="137"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="107"/>
- <location filename="../../Filters.cpp" line="145"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="110"/>
- <location filename="../../Filters.cpp" line="148"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="116"/>
- <location filename="../../Filters.cpp" line="154"/>
- <location filename="../../Filters.cpp" line="216"/>
- <location filename="../../Filters.cpp" line="255"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FolderExistsDialog</name>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="57"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
- <source>Unable do to move or copy item into wrong forced mode: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1510"/>
- <source>Problem reading file, or file-size is 0</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1517"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1526"/>
- <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1535"/>
- <source>The transfer list is in copy mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1541"/>
- <source>The transfer list is in move mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1604"/>
- <source>Some errors have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1612"/>
- <source>Unable to open the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>MkPath</name>
- <message>
- <location filename="../../MkPath.cpp" line="142"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="155"/>
- <source>The source folder don&apos;t exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="183"/>
- <source>Unable to temporary rename the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="206"/>
- <source>Unable to do the final real move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="233"/>
- <source>Unable to move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="93"/>
- <location filename="../../MkPath.cpp" line="276"/>
- <source>Unable to remove</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="59"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>RenamingRules</name>
- <message>
- <location filename="../../RenamingRules.ui" line="35"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="41"/>
- <source>%name% - copy%suffix%</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="57"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="67"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="51"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="43"/>
- <location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ScanFileOrFolder</name>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="338"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="345"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="401"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="408"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="244"/>
- <location filename="../../TransferThread.cpp" line="673"/>
- <location filename="../../TransferThread.cpp" line="745"/>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="346"/>
- <location filename="../../TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="421"/>
- <location filename="../../TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="711"/>
- <location filename="../../TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="751"/>
- <location filename="../../TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <location filename="../../TransferThread.cpp" line="1333"/>
- <location filename="../../TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="83"/>
- <source>Path resolution error (Empty path)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngineOptions</name>
- <message>
- <location filename="../../copyEngineOptions.ui" line="44"/>
- <source>Transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="53"/>
- <source>Move the whole folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="90"/>
- <location filename="../../copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="139"/>
- <source>Error and collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="145"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="155"/>
- <source>When file error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="181"/>
- <source>When file collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="343"/>
- <source>Control</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="414"/>
- <source>Performance</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="427"/>
- <location filename="../../copyEngineOptions.ui" line="440"/>
- <location filename="../../copyEngineOptions.ui" line="453"/>
- <location filename="../../copyEngineOptions.ui" line="490"/>
- <location filename="../../copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="589"/>
- <location filename="../../copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="618"/>
- <source>Misc</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="624"/>
- <source>Check the disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="634"/>
- <source>Use this folder when destination is not set</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="646"/>
- <source>Browse</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="668"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error with file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="59"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="76"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="93"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="110"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="127"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="173"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="193"/>
- <source>Try in with elevated privileges</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="200"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="207"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="214"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileExistsDialog</name>
- <message>
- <location filename="../../fileExistsDialog.ui" line="14"/>
- <source>The file exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="82"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="204"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="133"/>
- <location filename="../../fileExistsDialog.ui" line="221"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="277"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="346"/>
- <location filename="../../fileExistsDialog.ui" line="349"/>
- <source>Overwrite if modification date differs</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="308"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="341"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="354"/>
- <location filename="../../fileExistsDialog.ui" line="357"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="40"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="110"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="70"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>The source and destination are same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="90"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="159"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>The source and destination is identical</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="82"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="99"/>
- <location filename="../../folderExistsDialog.ui" line="160"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="116"/>
- <location filename="../../folderExistsDialog.ui" line="184"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="227"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="252"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="259"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="266"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins/CopyEngine/Ultracopier/Languages/zh/translation.ts b/plugins/CopyEngine/Ultracopier/Languages/zh/translation.ts
deleted file mode 100644
index 19bfabd..0000000
--- a/plugins/CopyEngine/Ultracopier/Languages/zh/translation.ts
+++ /dev/null
@@ -1,1291 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.1">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="26"/>
- <location filename="../../AvancedQFile.cpp" line="57"/>
- <location filename="../../AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngine</name>
- <message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
- <source>The engine is forced to move, you can&apos;t copy with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
- <source>The engine is forced to copy, you can&apos;t move with it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="508"/>
- <source>Use the actual destination &quot;%1&quot;?</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="732"/>
- <source>The mode has been forced previously. This is an internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine.cpp" line="1075"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>CopyEngineFactory</name>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
- <source>Put at the end</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
- <source>Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
- <source>Overwrite if different</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <source>Options engine is not loaded. Unable to access the filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>DiskSpace</name>
- <message>
- <location filename="../../DiskSpace.ui" line="14"/>
- <source>Disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="24"/>
- <source>You need more space on this drive to finish this transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="49"/>
- <source>Continue</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.ui" line="56"/>
- <source>Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../DiskSpace.cpp" line="23"/>
- <source>Drives %1 have %2 available but need %3</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileErrorDialog</name>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="54"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileErrorDialog.cpp" line="57"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileExistsDialog</name>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="137"/>
- <source>%name% - copy%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="144"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FileIsSameDialog</name>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FilterRules</name>
- <message>
- <location filename="../../FilterRules.ui" line="17"/>
- <source>Filters dialog</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="33"/>
- <source>Search:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="43"/>
- <source>Search type:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="51"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="56"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="61"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="69"/>
- <source>Apply on:</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="77"/>
- <source>File</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="82"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="87"/>
- <source>File and folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="95"/>
- <source>Whole string must match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string matches with the regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="102"/>
- <source>Checking</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="115"/>
- <source>Test string:</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Filters</name>
- <message>
- <location filename="../../Filters.ui" line="14"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="30"/>
- <source>Exclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="105"/>
- <source>None = Include all</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="93"/>
- <location filename="../../Filters.cpp" line="131"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="96"/>
- <location filename="../../Filters.cpp" line="134"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="99"/>
- <location filename="../../Filters.cpp" line="137"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="107"/>
- <location filename="../../Filters.cpp" line="145"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="110"/>
- <location filename="../../Filters.cpp" line="148"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="116"/>
- <location filename="../../Filters.cpp" line="154"/>
- <location filename="../../Filters.cpp" line="216"/>
- <location filename="../../Filters.cpp" line="255"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>FolderExistsDialog</name>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="57"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
- <source>Unable do to move or copy item into wrong forced mode: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1510"/>
- <source>Problem reading file, or file-size is 0</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1517"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1526"/>
- <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1535"/>
- <source>The transfer list is in copy mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1541"/>
- <source>The transfer list is in move mode, but this instance is not in this mode</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1604"/>
- <source>Some errors have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1612"/>
- <source>Unable to open the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>MkPath</name>
- <message>
- <location filename="../../MkPath.cpp" line="142"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="155"/>
- <source>The source folder don&apos;t exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="183"/>
- <source>Unable to temporary rename the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="206"/>
- <source>Unable to do the final real move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="233"/>
- <source>Unable to move the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../MkPath.cpp" line="93"/>
- <location filename="../../MkPath.cpp" line="276"/>
- <source>Unable to remove</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="59"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>RenamingRules</name>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="35"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="41"/>
- <source>%name% - copy%suffix%</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="57"/>
- <source>%name% - copy (%number%)%suffix%</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="67"/>
- <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="51"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="43"/>
- <location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ScanFileOrFolder</name>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="338"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="345"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="401"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="408"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="244"/>
- <location filename="../../TransferThread.cpp" line="673"/>
- <location filename="../../TransferThread.cpp" line="745"/>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="346"/>
- <location filename="../../TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="421"/>
- <location filename="../../TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="711"/>
- <location filename="../../TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="751"/>
- <location filename="../../TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <location filename="../../TransferThread.cpp" line="1333"/>
- <location filename="../../TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="228"/>
- <source>Try rename with using special characters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="83"/>
- <source>Path resolution error (Empty path)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngineOptions</name>
- <message>
- <location filename="../../copyEngineOptions.ui" line="44"/>
- <source>Transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="53"/>
- <source>Move the whole folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="90"/>
- <location filename="../../copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="139"/>
- <source>Error and collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="145"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="155"/>
- <source>When file error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="181"/>
- <source>When file collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="343"/>
- <source>Control</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="414"/>
- <source>Performance</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="427"/>
- <location filename="../../copyEngineOptions.ui" line="440"/>
- <location filename="../../copyEngineOptions.ui" line="453"/>
- <location filename="../../copyEngineOptions.ui" line="490"/>
- <location filename="../../copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="589"/>
- <location filename="../../copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="618"/>
- <source>Misc</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="624"/>
- <source>Check the disk space</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="634"/>
- <source>Use this folder when destination is not set</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="646"/>
- <source>Browse</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="668"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error with file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="59"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="76"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="93"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="110"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="127"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="173"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="193"/>
- <source>Try in with elevated privileges</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="200"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="207"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="214"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="221"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileExistsDialog</name>
- <message>
- <location filename="../../fileExistsDialog.ui" line="14"/>
- <source>The file exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="82"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="204"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="133"/>
- <location filename="../../fileExistsDialog.ui" line="221"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="277"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="288"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="346"/>
- <location filename="../../fileExistsDialog.ui" line="349"/>
- <source>Overwrite if modification date differs</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="308"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="315"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="325"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="332"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="341"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="354"/>
- <location filename="../../fileExistsDialog.ui" line="357"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="40"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="110"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="70"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>The source and destination are same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="90"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="159"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="170"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="190"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="197"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="204"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>The source and destination is identical</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="82"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="99"/>
- <location filename="../../folderExistsDialog.ui" line="160"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="116"/>
- <location filename="../../folderExistsDialog.ui" line="184"/>
- <source>Folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="227"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="238"/>
- <source>&amp;Always perform this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="245"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="252"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="259"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="266"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins/Languages/README.md b/plugins/Languages/README.md
index fcb1971..fcb1971 100644..100755
--- a/plugins/Languages/README.md
+++ b/plugins/Languages/README.md
diff --git a/plugins/Languages/ar/flag.png b/plugins/Languages/ar/flag.png
index 538c4f9..538c4f9 100644..100755
--- a/plugins/Languages/ar/flag.png
+++ b/plugins/Languages/ar/flag.png
Binary files differ
diff --git a/plugins/Languages/ar/informations.xml b/plugins/Languages/ar/informations.xml
index 6879db6..e259ae8 100644
--- a/plugins/Languages/ar/informations.xml
+++ b/plugins/Languages/ar/informations.xml
@@ -4,7 +4,7 @@
<!-- What kind of plugin this is -->
<category>Languages</category>
<!-- Who wrote this plugin -->
- <author><![CDATA[BRULE Herman, alpha_one_x86 (alpha_one_x86@first-world.info)]]></author>
+ <author><![CDATA[BRULE Herman, alpha_one_x86 (alpha_one_x86@first-world.info), lculator zaloom <lalalogitech@hotmail.com>]]></author>
<!-- URL of page or site for this plugin (may provide additional information, bug reports, feature requests). -->
<website xml:lang="en"><![CDATA[http://ultracopier-ar.first-world.info/]]></website><!-- not required -->
<!-- the date-time format should be in timestamps format -->
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to arabic. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>ar</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
@@ -29,4 +29,4 @@
<!-- Short name, language ISO country code -->
<shortName><![CDATA[ar_AR]]></shortName>
</categorySpecific>
-</package> \ No newline at end of file
+</package>
diff --git a/plugins/Languages/ar/translation.qm b/plugins/Languages/ar/translation.qm
new file mode 100755
index 0000000..0910e40
--- /dev/null
+++ b/plugins/Languages/ar/translation.qm
Binary files differ
diff --git a/plugins/Languages/ar/translation.ts b/plugins/Languages/ar/translation.ts
index cb636cf..643ccaa 100644
--- a/plugins/Languages/ar/translation.ts
+++ b/plugins/Languages/ar/translation.ts
@@ -1,41 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
+<TS version="2.1" language="ar_JO">
<context>
<name>CliParser</name>
<message>
@@ -45,189 +10,174 @@
<location filename="../../../CliParser.cpp" line="109"/>
<location filename="../../../CliParser.cpp" line="194"/>
<source>Warning</source>
- <translation type="unfinished"></translation>
+ <translation>التحذير</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="86"/>
<source>Problem reading file, or file size is 0</source>
- <translation type="unfinished"></translation>
+ <translation>مشكلة في قراءة الملف ، أو حجم الملف هو 0</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="174"/>
<location filename="../../../CliParser.cpp" line="185"/>
<source>The arguments possible are:</source>
- <translation type="unfinished"></translation>
+ <translation>الحجج الممكنة هي:</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="176"/>
<location filename="../../../CliParser.cpp" line="187"/>
<source>To display the options</source>
- <translation type="unfinished"></translation>
+ <translation>لعرض الخيارات</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="177"/>
<location filename="../../../CliParser.cpp" line="188"/>
<source>To quit the other instances (if running)</source>
- <translation type="unfinished"></translation>
+ <translation>(لإنهاء المثيلات الأخرى (في حالة التشغيل</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="179"/>
<location filename="../../../CliParser.cpp" line="190"/>
<source>To copy sources to destination, separated by space. If destination is &quot;?&quot;, ultracopier will ask the user</source>
- <translation type="unfinished"></translation>
+ <translation>سوف يسأل المستخدم ultracopier لنسخ المصادر إلى الوجهة ، مفصولة بمسافة. إذا كانت الوجهة &quot;؟&quot; ،</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="180"/>
<location filename="../../../CliParser.cpp" line="191"/>
<source>To move sources to destination, separated by space. If destination is &quot;?&quot;, ultracopier will ask the user</source>
- <translation type="unfinished"></translation>
+ <translation>سوف يسأل المستخدم ultracopier لنقل المصادر إلى الوجهة ، مفصولة بمسافة. إذا كانت الوجهة &quot;؟&quot; ،</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="184"/>
<source>Command not valid</source>
- <translation type="unfinished"></translation>
+ <translation>الامر غير صالح</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="99"/>
<source>This file is not supported transfer list</source>
- <translation type="unfinished"></translation>
+ <translation>هذا الملف غير معتمد قائمة النقل</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="32"/>
<source>Ultracopier is already running, right click on its system tray icon (near the clock) to use it or just copy and paste</source>
- <translation type="unfinished"></translation>
+ <translation>Ultracopier تستخدمها أو مجرد نسخ ولصق قيد التشغيل بالفعل ، انقر فوق الزر الأيمن على أيقونة صينية النظام (بالقرب من الساعة)</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="34"/>
<source>Ultracopier is already running, view all notification area icons (near the clock), right click on its system tray icon to use it or just copy and paste</source>
- <translation type="unfinished"></translation>
+ <translation>قيد التشغيل بالفعل، عرض كل الايقونات في منطقه الاعلام (بالقرب من الساعة) ، انقر بزر الماوس الأيمن على ايقونة علبه نظامك لاستخدامه أو مجرد نسخ ولصق Ultracopier</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="109"/>
<source>Unable to open the transfer list file</source>
- <translation type="unfinished"></translation>
+ <translation>غير قادر على فتح ملف قائمه النقل</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="175"/>
<location filename="../../../CliParser.cpp" line="186"/>
<source>To display this help</source>
- <translation type="unfinished"></translation>
+ <translation>لعرض هذه التعليمات</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="178"/>
<location filename="../../../CliParser.cpp" line="189"/>
<source>Open transfer list</source>
- <translation type="unfinished"></translation>
+ <translation>فتح قائمه النقل</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="196"/>
<source>Help</source>
- <translation type="unfinished"></translation>
+ <translation>التعليمات</translation>
</message>
</context>
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الوجهه</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">اسال</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">تخطي</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">اعاده تسميه</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الكتابة فوق</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الكتابة فوق إذا كان أحدث</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
- <source>Ask</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation type="unfinished">اسال</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">تخطي</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">اعاده تسميه</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الكتابة فوق</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الكتابة فوق إذا كان أحدث</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,145 +261,145 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
- <translation type="unfinished"></translation>
+ <translation>التحذير</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
- <translation type="unfinished"></translation>
+ <translation>لا يمكن العثور على اي مشغل نسخ مع دعم النقل</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
- <translation type="unfinished"></translation>
+ <translation>لا يدعم محرك النسخ هذا النقل</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
- <translation type="unfinished"></translation>
+ <translation>لا يمكن العثور على اي محرك متوافق!</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
- <translation type="unfinished"></translation>
+ <translation>يتعذر العثور على اي محرك بهذا الاسم: %1</translation>
</message>
</context>
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation>الخطا</translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
- <translation type="unfinished"></translation>
+ <translation>حدث خطا اثناء استقبال قائمه النسخ/النقل %1</translation>
</message>
</context>
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation>الخطا</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
- <translation type="unfinished"></translation>
+ <translation>غير قادر على الحصول على مثيل محرك النسخ</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
- <translation type="unfinished"></translation>
+ <translation>اطار المجموعة</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
- <translation type="unfinished"></translation>
+ <translation>هل تريد تجميع التحويل مع نقل تشغيل فعلي اخر ؟</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
- <translation type="unfinished"></translation>
+ <translation>غير قادر علي الحصول على مثيل محرك</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
- <translation type="unfinished"></translation>
+ <translation>الوسيطة الخاصة بالوضع غير صالح</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
- <translation type="unfinished"></translation>
+ <translation>هل تريد النسخ ؟ إذا لا ، سيتم نقله.</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
- <translation type="unfinished"></translation>
+ <translation>غير قادر على تحميل الواجهة ، تم إحباط النسخ</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
- <translation type="unfinished"></translation>
+ <translation>غير قادر على تحميل مشغل النسخ ، تم إحباط النسخ</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
- <translation type="unfinished"></translation>
+ <translation>وضع النقل</translation>
</message>
</context>
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,270 +407,275 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
- <translation type="unfinished"></translation>
+ <translation>محرك النسخ</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
- <translation type="unfinished"></translation>
+ <translation>نسخ</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
- <translation type="unfinished"></translation>
+ <translation>نقل</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
- <translation type="unfinished"></translation>
+ <translation>مهلة</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
- <translation type="unfinished"></translation>
+ <translation>استئناف</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
- <translation type="unfinished"></translation>
+ <translation>تخطي</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
- <translation type="unfinished"></translation>
+ <translation>غير محدود</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
- <translation type="unfinished"></translation>
+ <translation>s</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
- <translation type="unfinished"></translation>
+ <translation>كبير جدا</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
- <translation type="unfinished"></translation>
+ <translation>ب</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
- <translation type="unfinished"></translation>
+ <translation>ك ب</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
- <translation type="unfinished"></translation>
+ <translation>م ب</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
- <translation type="unfinished"></translation>
+ <translation>ق ب</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
- <translation type="unfinished"></translation>
+ <translation>ت ب</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
- <translation type="unfinished"></translation>
+ <translation>PB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
- <translation type="unfinished"></translation>
+ <translation>EB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
- <translation type="unfinished"></translation>
+ <translation>ZB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
- <translation type="unfinished"></translation>
+ <translation>YB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
- <translation type="unfinished"></translation>
+ <translation>اقل من %10 ثواني</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
- <translation type="unfinished"></translation>
+ <translation>حوالي %10 ثواني متبقية</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
- <translation type="unfinished"></translation>
+ <translation>حوالي %1 دقيقه متبقية</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
- <translation type="unfinished"></translation>
+ <translation>حوالي %1 ساعة متبقية</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
- <translation type="unfinished"></translation>
+ <translation>نقل</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
- <translation type="unfinished"></translation>
+ <translation>بدء</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
- <translation type="unfinished"></translation>
+ <translation>مصدر</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
- <translation type="unfinished"></translation>
+ <translation>حجم</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
- <translation type="unfinished"></translation>
+ <translation>الوجهه</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
- <translation type="unfinished"></translation>
+ <translation>هروب</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
- <translation type="unfinished"></translation>
+ <translation>الهدف</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
- <translation type="unfinished"></translation>
+ <translation>الوقت المتبقي:</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
- <translation type="unfinished"></translation>
+ <translation>الادراج</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
- <translation type="unfinished"></translation>
+ <translation>النسخ</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
- <translation type="unfinished"></translation>
+ <translation>الادراج والنسخ</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation>المتبقيه:</translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
- <translation type="unfinished"></translation>
+ <translation>اسال</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
- <translation type="unfinished"></translation>
+ <translation>الكتابة فوق</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
+ <translation>الكتابة فوق إذا كان أحدث</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
- <translation type="unfinished"></translation>
+ <translation>الكتابة فوق إذا كانت تواريخ التعديل الاخيره مختلفه</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
- <translation type="unfinished"></translation>
+ <translation>اعاده تسميه</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
- <translation type="unfinished"></translation>
+ <translation>وضعت في نهاية القائمة</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
- <translation type="unfinished"></translation>
+ <translation>تحديد دليل المصدر</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
- <translation type="unfinished"></translation>
+ <translation>تحديد دليل الوجهة</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
- <translation type="unfinished"></translation>
+ <translation>خطا داخلي</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
- <translation type="unfinished"></translation>
+ <translation>تحديد ملف واحد أو أكثر للفتح</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
- <translation type="unfinished"></translation>
+ <translation>كافة الملفات</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
- <translation type="unfinished"></translation>
+ <translation>حفظ قائمه النقل</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
- <translation type="unfinished"></translation>
+ <translation>فتح قائمه النقل</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
- <translation type="unfinished"></translation>
+ <translation>قائمه النقل</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation>الخطا</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
+ <translation>غير معتمد علي هذا النظام الأساسي</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
- <translation type="unfinished"></translation>
+ <translation>اكتمل في %1</translation>
</message>
</context>
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الخطا</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الخطا</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الخطا</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,161 +896,156 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
- <translation type="unfinished"></translation>
+ <translation>حول Ultracopier</translation>
</message>
<message>
<location filename="../../../HelpDialog.ui" line="67"/>
<source>Based on Qt. Advanced utility to copy files under GPL3 license.
This version is compiled as version: %1.</source>
<extracomment>%1 will be replaced by a variable content (normal, debug, ...)</extracomment>
- <translation type="unfinished"></translation>
+ <translation>استنادا إلى الاداه المساعدة المتقدمة Qt لنسخ الملفات تحت ترخيص GPL3. يتم تجميع هذا الإصدار كاصدار: %1.</translation>
</message>
<message>
<location filename="../../../HelpDialog.ui" line="85"/>
<source>Platform: %1</source>
<extracomment>%1 will be replaced by the platform (windows, mac, linux, ...)</extracomment>
- <translation type="unfinished"></translation>
+ <translation>النظام الأساسي: %1</translation>
</message>
<message>
<location filename="../../../HelpDialog.ui" line="92"/>
<source>Author: BRULE Herman Jacques Roger (alpha_one_x86), company: &lt;a href=&quot;http://www.confiared.com/&quot;&gt;confiared&lt;/a&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>Author: BRULE Herman Jacques Roger (alpha_one_x86), company: &lt;a href=&quot;http://www.confiared.com/&quot;&gt;confiared&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
- <translation type="unfinished"></translation>
+ <translation>Qt حول</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
- <translation type="unfinished"></translation>
+ <translation>تحقق من التحديث</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
- <translation type="unfinished"></translation>
+ <translation>هل تحطم</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
- <translation type="unfinished"></translation>
+ <translation>حفظ تقرير الشوائب</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
+ <translation>اغلاق</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
- <translation type="unfinished"></translation>
+ <translation>For http://portableapps.com/</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
- <translation type="unfinished"></translation>
+ <translation>المحمولة و الكل في نسخه واحده</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
- <translation type="unfinished"></translation>
+ <translation>النسخة المحمولة</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
- <translation type="unfinished"></translation>
+ <translation>الكل في إصدار واحد</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
- <translation type="unfinished"></translation>
+ <translation>الإصدار العادي</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
- <translation type="unfinished"></translation>
+ <translation>http://ultracopier.first-world.info/</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
- <translation type="unfinished"></translation>
+ <translation>تم التحقق من التحديث...</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
- <translation type="unfinished"></translation>
+ <translation>التحديث: %1</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
- <translation type="unfinished"></translation>
+ <translation>لا يوجد تحديث</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
- <translation type="unfinished"></translation>
+ <translation>http://ultracopier.first-world.info/download.html</translation>
</message>
<message>
<location filename="../../../HelpDialog.ui" line="75"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;For more information see the website &lt;a href=&quot;%1&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0057ae;&quot;&gt;%1&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%1 will be remplaced by the website into the corresponding languages</extracomment>
- <translation type="unfinished"></translation>
+ <translation>&lt;a href=&quot;%1&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0057ae;&quot;&gt;%1&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;لمزيد من المعلومات راجع الموقع&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;</translation>
</message>
</context>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,14 +1061,14 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
- <translation type="unfinished"></translation>
+ <translation>التحذير</translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
- <translation type="unfinished"></translation>
+ <translation>المهلة اثناء أعاده إنشاء البيانات من العملاء المتصلين</translation>
</message>
</context>
<context>
@@ -1138,95 +1078,111 @@ This version is compiled as version: %1.</source>
<location filename="../../../LogThread.cpp" line="116"/>
<location filename="../../../LogThread.cpp" line="126"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation>الخطا</translation>
</message>
<message>
<location filename="../../../LogThread.cpp" line="107"/>
<source>Log file already open, error: %1</source>
- <translation type="unfinished"></translation>
+ <translation>ملف السجل مفتوح بالفعل ، خطا: %1</translation>
</message>
<message>
<location filename="../../../LogThread.cpp" line="116"/>
<location filename="../../../LogThread.cpp" line="126"/>
<source>Unable to open the log file, error: %1</source>
- <translation type="unfinished"></translation>
+ <translation>تعذر فتح ملف السجل ، الخطا: %1</translation>
</message>
</context>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
<message>
<location filename="../../../OSSpecific.ui" line="26"/>
<source>Warning</source>
- <translation type="unfinished"></translation>
+ <translation>التحذير</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation>كلاسيكي</translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation>حديث</translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
- <translation type="unfinished"></translation>
+ <translation>لا تظهر مرة أخرى</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
- <translation type="unfinished"></translation>
+ <translation>موافق</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
- <translation type="unfinished"></translation>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <translation>ما عليك القيام به نسخة / نقل يدويا.&lt;br /&gt;اطلب من مطور مدير ملفاتك دعمه.&lt;br /&gt;(Dolphin, Nautilus, ...) لا يدعم مدير الملفات استبدال نظام النسخ/النقل الافتراضي.</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
- <translation type="unfinished"></translation>
+ <translation>أعد تشغيل النظام إذا كان قد سبق تثبيت برنامج مماثل (مثل Teracopy أو Supercopier أو إصدار سابق من Ultracopier).</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
- <translation type="unfinished"></translation>
+ <translation>ما عليك القيام بنسخ / نقل يدويا عن طريق النقر بزر الماوس الأيمن على أيقونة صينية النظام بالقرب من الساعة (وليس رمز الإرساء).Mac OS X.&lt;br /&gt; استبدال نظام النسخ / النقل الافتراضي غير مدعوم وممنوع من قبل الباحث عن..</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
- <translation type="unfinished"></translation>
+ <translation>ما عليك القيام به نسخ/نقل يدويا.&lt;br /&gt;اطلب من المطور دعمه.&lt;br /&gt;يجب ألا يكون استبدال نظام النسخ/النقل الافتراضي مدعوما بواسطة مدير الملفات.</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
- <translation type="unfinished"></translation>
+ <translation>Ultracopier كما تم إهمالها ، تفضل Supercopier يعتبر</translation>
</message>
</context>
<context>
@@ -1235,302 +1191,325 @@ This version is compiled as version: %1.</source>
<location filename="../../../OptionDialog.ui" line="14"/>
<location filename="../../../OptionDialog.ui" line="60"/>
<source>Options</source>
- <translation type="unfinished"></translation>
+ <translation>الخيارات</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="65"/>
<source>General</source>
- <translation type="unfinished"></translation>
+ <translation>عام</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="70"/>
<source>Plugins</source>
- <translation type="unfinished"></translation>
+ <translation>الاضافات</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
- <translation type="unfinished"></translation>
+ <translation>محرك النسخ</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>المواضيع</translatorcomment>
+ <translation>المواضيع</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="106"/>
<source>Log</source>
- <translation type="unfinished"></translation>
+ <translation>سجل</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="231"/>
<source>Confirm to group the windows</source>
- <translation type="unfinished"></translation>
+ <translation>تأكيد لتجميع النوافذ</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="251"/>
<source>Check for updates</source>
- <translation type="unfinished"></translation>
+ <translation>التحقق من التحديثات</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="289"/>
<source>Portable (need restart)</source>
- <translation type="unfinished"></translation>
+ <translation>محمولة (تحتاج إلى إعادة التشغيل)</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
- <translation type="unfinished"></translation>
+ <translation>الاسم</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
- <translation type="unfinished"></translation>
+ <translation>الإصدار</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
- <translation type="unfinished"></translation>
+ <translation>اللغة</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
- <translation type="unfinished"></translation>
+ <translation>مستمع</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
- <translation type="unfinished"></translation>
+ <translation>محمل المساعد</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
- <translation type="unfinished"></translation>
+ <translation>محمل الجلسة</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="126"/>
<source>Force the language</source>
- <translation type="unfinished"></translation>
+ <translation>إجبار اللغة</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="136"/>
<source>Replace the default copy and move system</source>
- <translation type="unfinished"></translation>
+ <translation>استبدال نظام النسخ والنقل الافتراضي</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="150"/>
<source>Load at the session loading</source>
- <translation type="unfinished"></translation>
+ <translation>تحميل في الجلسة التحميل</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="164"/>
<source>When manual open</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>عندما يفتح يدوي</translatorcomment>
+ <translation>عند فتحة يدوي</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="190"/>
<source>Group the windows when</source>
- <translation type="unfinished"></translation>
+ <translation>مجموعة النوافذ عندما</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="241"/>
<source>Display the OS warning</source>
- <translation type="unfinished"></translation>
+ <translation>عرض تحذير نظام التشغيل</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="261"/>
<source>Remaining time algorithm</source>
- <translation type="unfinished"></translation>
+ <translation>خوارزمية الوقت المتبقي</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="269"/>
<source>Traditional</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>تقليدي</translatorcomment>
+ <translation>التقليديه</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="274"/>
<source>Logarithmic</source>
+ <translation>لوغاريتمي</translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation>finish.opus :الافتراضي</translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation>الصوت عند الانتهاء</translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
- <translation type="unfinished"></translation>
+ <translation>المساعد</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
- <translation type="unfinished"></translation>
+ <translation>اضافة</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
- <translation type="unfinished"></translation>
+ <translation>ازالة</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
- <translation type="unfinished"></translation>
+ <translation>المعلومات</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
- <translation type="unfinished"></translation>
+ <translation>محرك النسخ حسب ترتيب التفضيل:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
- <translation type="unfinished"></translation>
+ <translation>العميل متصل</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>المواضيع:</translatorcomment>
+ <translation>المواضيع:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>غير قادر على تحميل البرنامج المساعد للسمات</translatorcomment>
+ <translation>غير قادر على تحميل الموضوعات المساعد</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
- <translation type="unfinished"></translation>
+ <translation>استعراض</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
- <translation type="unfinished"></translation>
+ <translation>اكتب التحويلات</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
- <translation type="unfinished"></translation>
+ <translation>المتغيرات هي %الوقت%، %المصدر%، %الحجم%، %الوجهة%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
- <translation type="unfinished"></translation>
+ <translation>كتابة الأخطاء</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
- <translation type="unfinished"></translation>
+ <translation>المتغيرات هي %الوقت%، %المسار%، %الحجم%، %وقت تعديل%، %خطأ%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
- <translation type="unfinished"></translation>
+ <translation>اكتب ملف السجل في:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
- <translation type="unfinished"></translation>
+ <translation>الكتابة مباشرة إلى الملف عند تلقي إدخال جديد (يمكن أن تنتج 50٪ من فقدان الأداء)</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
- <translation type="unfinished"></translation>
+ <translation>حمل</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
- <translation type="unfinished"></translation>
+ <translation>تحميل الموضوع؟</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
- <translation type="unfinished"></translation>
+ <translation>تحميل اللغة؟</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
- <translation type="unfinished"></translation>
+ <translation>لا تفعل شيئا</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
- <translation type="unfinished"></translation>
+ <translation>اسأل المصدر كمجلد</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
- <translation type="unfinished"></translation>
+ <translation>اسأل المصادر كملفات</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
- <translation type="unfinished"></translation>
+ <translation>أبدا</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>عندما يكون المصدر هو نفسه</translatorcomment>
+ <translation>عندما يكون المصدر هو نفسه</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>عندما الوجهة هي نفسها</translatorcomment>
+ <translation>عندما تكون الوجهة نفسها</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>عندما المصدر والوجهة هي نفسها</translatorcomment>
+ <translation>عندما تكون المصدر والوجهة هي نفسها</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
- <translation type="unfinished"></translation>
+ <translation>عندما المصدر أو الوجهة هي نفسها</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
- <translation type="unfinished"></translation>
+ <translation>دائما</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
- <translation type="unfinished"></translation>
+ <translation>%1 المتغيرات هي</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
- <translation type="unfinished"></translation>
+ <translation>حفظ السجلات باسم:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
- <translation type="unfinished"></translation>
+ <translation>سجل متزامن</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
- <translation type="unfinished"></translation>
+ <translation>لا يوجد خيار لهذا البرنامج المساعد</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
- <translation type="unfinished"></translation>
+ <translation>كتابة مجلد العمليات</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
- <translation type="unfinished"></translation>
+ <translation>المتغيرات هي %المسار%، %العملية%</translation>
</message>
</context>
<context>
@@ -1541,7 +1520,7 @@ This version is compiled as version: %1.</source>
<location filename="../../../OptionEngine.cpp" line="211"/>
<location filename="../../../OptionEngine.cpp" line="215"/>
<source>The variable was not found: %1 %2</source>
- <translation type="unfinished"></translation>
+ <translation>لم يتم العثور على المتغير: %1 %2</translation>
</message>
</context>
<context>
@@ -1567,87 +1546,87 @@ This version is compiled as version: %1.</source>
<message>
<location filename="../../../PluginInformation.ui" line="14"/>
<source>About this plugin</source>
- <translation type="unfinished"></translation>
+ <translation>حول هذا المكون المساعد</translation>
</message>
<message>
<location filename="../../../PluginInformation.ui" line="23"/>
<source>Name:</source>
- <translation type="unfinished"></translation>
+ <translation>الاسم:</translation>
</message>
<message>
<location filename="../../../PluginInformation.ui" line="37"/>
<source>Category:</source>
- <translation type="unfinished"></translation>
+ <translation>الفئه:</translation>
</message>
<message>
<location filename="../../../PluginInformation.ui" line="51"/>
<source>Author:</source>
- <translation type="unfinished"></translation>
+ <translation>المؤلف:</translation>
</message>
<message>
<location filename="../../../PluginInformation.ui" line="79"/>
<source>Date:</source>
- <translation type="unfinished"></translation>
+ <translation>تاريخ:</translation>
</message>
<message>
<location filename="../../../PluginInformation.ui" line="93"/>
<source>Description:</source>
- <translation type="unfinished"></translation>
+ <translation>وصف:</translation>
</message>
<message>
<location filename="../../../PluginInformation.ui" line="107"/>
<source>Version:</source>
- <translation type="unfinished"></translation>
+ <translation>الإصدار:</translation>
</message>
<message>
<location filename="../../../PluginInformation.cpp" line="39"/>
<source>Copy engine</source>
- <translation type="unfinished"></translation>
+ <translation>محرك نسخ</translation>
</message>
<message>
<location filename="../../../PluginInformation.cpp" line="41"/>
<source>Languages</source>
- <translation type="unfinished"></translation>
+ <translation>اللغات</translation>
</message>
<message>
<location filename="../../../PluginInformation.cpp" line="43"/>
<source>Listener</source>
- <translation type="unfinished"></translation>
+ <translation>مستمع</translation>
</message>
<message>
<location filename="../../../PluginInformation.cpp" line="45"/>
<source>Plugin loader</source>
- <translation type="unfinished"></translation>
+ <translation>محمل المساعد</translation>
</message>
<message>
<location filename="../../../PluginInformation.cpp" line="47"/>
<source>Session loader</source>
- <translation type="unfinished"></translation>
+ <translation>محمل الجلسة</translation>
</message>
<message>
<location filename="../../../PluginInformation.cpp" line="49"/>
<source>Themes</source>
- <translation type="unfinished"></translation>
+ <translation>المواضيع</translation>
</message>
<message>
<location filename="../../../PluginInformation.cpp" line="52"/>
<source>Unknown</source>
- <translation type="unfinished"></translation>
+ <translation>مجهول</translation>
</message>
<message>
<location filename="../../../PluginInformation.cpp" line="61"/>
<source>Information about %1</source>
- <translation type="unfinished"></translation>
+ <translation>معلومات حول %1</translation>
</message>
<message>
<location filename="../../../PluginInformation.ui" line="65"/>
<source>Website:</source>
- <translation type="unfinished"></translation>
+ <translation>الموقع:</translation>
</message>
<message>
<location filename="../../../PluginInformation.ui" line="121"/>
<source>Title:</source>
- <translation type="unfinished"></translation>
+ <translation>العنوان:</translation>
</message>
</context>
<context>
@@ -1655,140 +1634,140 @@ This version is compiled as version: %1.</source>
<message>
<location filename="../../../PluginsManager.cpp" line="225"/>
<source>informations.xml is not accessible</source>
- <translation type="unfinished"></translation>
+ <translation>المعلومات xml لا يمكن الوصول إلى </translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
- <translation type="unfinished"></translation>
+ <translation>التبعيات جزء غير صحيح</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
- <translation type="unfinished"></translation>
+ <translation>التبعيات %1 غير راضيه ، للمكون المساعد: %2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
- <translation type="unfinished"></translation>
+ <translation>أزاله %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation>الخطا</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
- <translation type="unfinished"></translation>
+ <translation>خطا اثناء أزاله المكون المساعد ، الرجاء التحقق من الحقوق الموجودة على المجلد: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
- <translation type="unfinished"></translation>
+ <translation>المعلومات</translation>
</message>
<message>
<location filename="../../../PluginsManager.cpp" line="257"/>
<source>%1, parse error at line %2, column %3: %4</source>
- <translation type="unfinished"></translation>
+ <translation>%1 ، خطا في التحليل في السطر %2 ، العمود %3: %4</translation>
</message>
<message>
<location filename="../../../PluginsManager.cpp" line="231"/>
<source>informations.xml not found for the plugin</source>
- <translation type="unfinished"></translation>
+ <translation>للمكون المساعد xml لم يتم العثور على المعلومات</translation>
</message>
<message>
<location filename="../../../PluginsManager.cpp" line="265"/>
<source>&quot;package&quot; root tag not found for the xml file</source>
- <translation type="unfinished"></translation>
+ <translation>xml &quot;حزمه &quot; علامة الجذر لم يتم العثور على ملف </translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
- <translation type="unfinished"></translation>
+ <translation>تم العثور على المساعد المكرر ، محمله بالفعل!</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
- <translation type="unfinished"></translation>
+ <translation>نص باللغة الانجليزيه مفقود في المعلومات. xml للعلامة: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
- <translation type="unfinished"></translation>
+ <translation>لم يعثر على العلامة: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
- <translation type="unfinished"></translation>
+ <translation>هل تريد بالتاكيد أزاله &quot;%1 &quot; في الإصدار %2 ؟</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
- <translation type="unfinished"></translation>
+ <translation>الاستيراد السابق قيد التقدم...</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
- <translation type="unfinished"></translation>
+ <translation>Ultracopier فتح مساعد</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <translation>Ultracopier plugin (*.urc)</translation>
+ </message>
+ <message>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
- <translation type="unfinished"></translation>
+ <translation>محمل المساعد</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
- <translation type="unfinished"></translation>
+ <translation>غير قادر على فتح المكون المساعد: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
- <translation type="unfinished"></translation>
+ <translation>غير قادر على تحميل محتوي المكون المساعد ، الرجاء التحقق منه: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
- <translation type="unfinished"></translation>
+ <translation>غير قادر على إنشاء مجلد لتثبيت المكون المساعد: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
- <translation type="unfinished"></translation>
+ <translation>غير قادر على إنشاء ملف لتثبيت المكون المساعد: %1 منذ: %2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
- <translation type="unfinished"></translation>
+ <translation>المجلد الذي له نفس الاسم موجود ، تخطي تثبيت المكون المساعد: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
- <translation type="unfinished"></translation>
+ <translation>غير قادر علي تحميل محتوي المكون المساعد ، يرجى التحقق من ذلك</translation>
</message>
</context>
<context>
@@ -1797,17 +1776,17 @@ since:%2</source>
<location filename="../../../ProductKey.ui" line="14"/>
<location filename="../../../ProductKey.ui" line="24"/>
<source>Product key</source>
- <translation type="unfinished"></translation>
+ <translation>مفتاح المنتج</translation>
</message>
<message>
<location filename="../../../ProductKey.cpp" line="56"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation>الخطا</translation>
</message>
<message>
<location filename="../../../ProductKey.cpp" line="56"/>
<source>Your product key was rejected.&lt;br /&gt;If you buy key, unmark check your spam and unmark the mail as spam&lt;br /&gt;If you have not buy your key, go to &lt;a href=&quot;https://shop.first-world.info/&quot;&gt;https://shop.first-world.info/&lt;/a&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;a href=&quot;https://shop.first-world.info/&quot;&gt;https://shop.first-world.info/&lt;/a&gt;إذا لم تشتري مفتاحك ، انتقل إلى &lt;br /&gt;إذا قمت بشراء المفتاح ، قم بإلغاء تحديد بريدك المزعج وإلغاء وضع علامة للبريد على انه غير مرغوب &lt;br /&gt;تم رفض مفتاح منتجك</translation>
</message>
</context>
<context>
@@ -1816,66 +1795,59 @@ since:%2</source>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="38"/>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="93"/>
<source>Memory allocation failed</source>
- <translation type="unfinished"></translation>
+ <translation>فشل تخصيص الذاكرة</translation>
</message>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="64"/>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="82"/>
<source>Write error</source>
- <translation type="unfinished"></translation>
+ <translation>خطا في الكتابة</translation>
</message>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="97"/>
<source>Memory usage limit reached</source>
- <translation type="unfinished"></translation>
+ <translation>تم الوصول إلى حد استخدام الذاكرة</translation>
</message>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="101"/>
<source>Not a .xz file</source>
- <translation type="unfinished"></translation>
+ <translation>ليس ملف. xz</translation>
</message>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="105"/>
<source>Unsupported options in the .xz headers</source>
- <translation type="unfinished"></translation>
+ <translation>الخيارات الغير مدعومة في العناوين xz الرأسية</translation>
</message>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="110"/>
<source>The file is corrupted</source>
- <translation type="unfinished"></translation>
+ <translation>تلف الملف</translation>
</message>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="114"/>
<source>Bug!</source>
- <translation type="unfinished"></translation>
+ <translation>شوائب!</translation>
</message>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="124"/>
<source>The input data is too short</source>
- <translation type="unfinished"></translation>
+ <translation>بيانات الإدخال قصيرة جدا</translation>
</message>
</context>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1883,267 +1855,240 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
- <translation type="unfinished"></translation>
+ <translation>لم يتم العثور علي وحده إصغاء للنسخ. قم بالنسخ يدويا بالنقر بزر الماوس الأيمن فوق أحد أيقونه علبه النظام.</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
- <translation type="unfinished"></translation>
+ <translation>المعلومات</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
- <translation type="unfinished"></translation>
+ <translation>البحث عن المعلومات...</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
- <translation type="unfinished"></translation>
+ <translation>لا تستبدل نسخ/تحريك المستكشف</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
- <translation type="unfinished"></translation>
+ <translation>نصف استبدال المستكشف نسخه/تحريك</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
- <translation type="unfinished"></translation>
+ <translation>استبدال نسخ/تحريك المستكشف</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
- <translation type="unfinished"></translation>
+ <translation>التحذير</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
- <translation type="unfinished"></translation>
+ <translation>الاجراء على رمز علبه الانظمه مجهول!</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;حول/تقرير التصحيح</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;حول</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;حفظ تقرير الشوائب</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;هروب</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;الخيارات</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;مفتاح المنتج</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
- <translation type="unfinished"></translation>
+ <translation>الإصدار الجديد: %1</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
- <translation type="unfinished"></translation>
+ <translation>انتقل إلى صفحه التنزيل:</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;أضافه نسخ/نقل</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;أضافه نسخ</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;أضافه نقل</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;أضافه تحريك</translation>
</message>
</context>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2121,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">نقل</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished">م ب</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">استعراض</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2365,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الخطا</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">حجم</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الوجهه</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,141 +2433,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">مصدر</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الوجهه</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">حجم</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الكتابة فوق إذا كان أحدث</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">حجم</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2587,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">مصدر</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الوجهه</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">تخطي</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2818,7 +2695,7 @@ since:%2</source>
<message>
<location filename="../../Themes/Oxygen/interface.ui" line="329"/>
<source>Transfer list</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">قائمه النقل</translation>
</message>
<message>
<location filename="../../Themes/Oxygen/interface.ui" line="352"/>
@@ -2879,7 +2756,7 @@ since:%2</source>
<location filename="../../Themes/Oxygen/interface.ui" line="663"/>
<location filename="../../Themes/Oxygen/interface.ui" line="732"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الخطا</translation>
</message>
<message>
<location filename="../../Themes/Oxygen/interface.ui" line="683"/>
@@ -2889,12 +2766,12 @@ since:%2</source>
<message>
<location filename="../../Themes/Oxygen/interface.ui" line="722"/>
<source>Source</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">مصدر</translation>
</message>
<message>
<location filename="../../Themes/Oxygen/interface.ui" line="727"/>
<source>Destination</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">الوجهه</translation>
</message>
<message>
<location filename="../../Themes/Oxygen/interface.ui" line="741"/>
diff --git a/plugins/Languages/de/informations.xml b/plugins/Languages/de/informations.xml
index e86acd0..383d74b 100644
--- a/plugins/Languages/de/informations.xml
+++ b/plugins/Languages/de/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to german. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>de</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/de/translation.qm b/plugins/Languages/de/translation.qm
new file mode 100755
index 0000000..86fa5d4
--- /dev/null
+++ b/plugins/Languages/de/translation.qm
Binary files differ
diff --git a/plugins/Languages/de/translation.ts b/plugins/Languages/de/translation.ts
index 1ccf680..557591d 100644
--- a/plugins/Languages/de/translation.ts
+++ b/plugins/Languages/de/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1" language="de" sourcelanguage="en">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished">Auf dieser Plattform nicht unterstützt</translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -68,13 +33,13 @@
<location filename="../../../CliParser.cpp" line="179"/>
<location filename="../../../CliParser.cpp" line="190"/>
<source>To copy sources to destination, separated by space. If destination is &quot;?&quot;, ultracopier will ask the user</source>
- <translation type="unfinished"></translation>
+ <translation>Um die Quelle zum Ziel zu kopieren, getrennt durch ein Leerzeichen. Wenn das Ziel lautet &quot;?&quot;, wird Ultracopier den Benutzer fragen</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="180"/>
<location filename="../../../CliParser.cpp" line="191"/>
<source>To move sources to destination, separated by space. If destination is &quot;?&quot;, ultracopier will ask the user</source>
- <translation type="unfinished"></translation>
+ <translation>Um die Quelle zum Ziel zu verschieben, getrennt durch ein Leerzeichen. Wenn das Ziel lautet &quot;?&quot;, wird Ultracopier den Benutzer fragen</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="184"/>
@@ -85,17 +50,17 @@
<location filename="../../../CliParser.cpp" line="99"/>
<source>This file is not supported transfer list</source>
<translatorcomment>The original english text does not make sense.</translatorcomment>
- <translation>Diese Datei wird nicht unterstützt Transferliste</translation>
+ <translation>Diese Datei ist eine nicht unterstützt Transferliste</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="32"/>
<source>Ultracopier is already running, right click on its system tray icon (near the clock) to use it or just copy and paste</source>
- <translation type="unfinished"></translation>
+ <translation>Ultracopier läuft bereits, Rechtklick auf das TrayIcon um weitere Details zu sehen. Sie können aber auch gleich ohen Weiteres kopieren und verschieben</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="34"/>
<source>Ultracopier is already running, view all notification area icons (near the clock), right click on its system tray icon to use it or just copy and paste</source>
- <translation type="unfinished"></translation>
+ <translation>Ultracopier läuft bereits, Beachten Sie alle Benachrichtigungen, Rechtsklick auf das TrayIcon um mehr Details zu erhalten, oder Sie können auch einfach ohne Weiteres kopieren oder verschieben</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="109"/>
@@ -129,106 +94,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished">Ziel</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished">Fragen</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished">Überspringen</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished">Umbenennen</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished">Überschreiben</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Überschreiben, falls neuer</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -236,85 +186,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished">Fragen</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished">Überspringen</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished">Umbenennen</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished">Überschreiben</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Überschreiben, falls neuer</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -322,30 +262,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation>Warnung</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
- <translation type="unfinished"></translation>
+ <translation>Die Kopier-Engine mit Verschiebungsunterstützung wurde nicht gefunden</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
- <translation type="unfinished"></translation>
+ <translation>Diese Engine unterstützt kein Verschieben</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation>Finde keine kompatible Engine!</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation>Finde keine Engine mit diesem Namen: %1</translation>
</message>
@@ -353,12 +293,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation>Fehler während Empfang der Kopier/Verschieben-Liste
@@ -368,72 +308,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
- <translation>Bekomme keine Instanz der Kopier-Engine</translation>
+ <translation>Laden einer Instanz der Kopier-Engine nicht möglich</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
- <translation type="unfinished"></translation>
+ <translation>Fenster gruppieren</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
- <translation type="unfinished"></translation>
+ <translation>Wollen Sie den aktuellen Transfer mit einem anderen laufenden Transfer gruppieren?</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
- <translation>Bekomme keine Instanz der Engine</translation>
+ <translation>Laden einer Instanz der Engine nicht möglich</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation>Die Parameter sind in diesem Modus ungültig</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
- <translation>Möchten Sie kopieren? Wenn nicht, wird verschoben.</translation>
+ <translation>Möchten Sie kopieren? Wenn nicht, werden die Dateien verschoben.</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
- <translation>Konnte Oberfläche nicht laden. Kopiervorgang abgebrochen</translation>
+ <translation>Oberfläche konnte nicht geladen werden. Kopiervorgang abgebrochen</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
- <translation>Konnte Kopier-Engine nicht laden. Kopiervorgang abgebrochen</translation>
+ <translation>Kopier-Engine konnte nicht geladen werden. Kopiervorgang abgebrochen</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation>Transfermodus</translation>
</message>
@@ -441,27 +381,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -469,282 +409,287 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation>Kopier-Engine</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation>Kopieren</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation>Verschieben</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation>Pause</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation>Fortsetzen</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation>Überspringen</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation>Unbegrenzt</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translatorcomment>seconds?</translatorcomment>
<translation>s</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation>Zu groß</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translatorcomment>Byte?</translatorcomment>
<translation>B</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translatorcomment>Kilobyte</translatorcomment>
<translation>KB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translatorcomment>Megabyte</translatorcomment>
<translation>MB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translatorcomment>Gigabyte</translatorcomment>
<translation>GB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translatorcomment>Terrabyte</translatorcomment>
<translation>TB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translatorcomment>Petabyte</translatorcomment>
<translation>PB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translatorcomment>Etabyte</translatorcomment>
<translation>EB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translatorcomment>Zetabyte</translatorcomment>
<translation>ZB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translatorcomment>Yotabyte</translatorcomment>
<translation>YB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation>Weniger als %10 Sekunden</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation>Ungefähr noch %10 Sekunden</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation>Ungefähr noch %1 Minuten</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation>Ungefähr noch %1 Stunden</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translatorcomment>evtl. &quot;Datenübertragung&quot;, aber ich denke &quot;Transfer&quot; ist hier besser</translatorcomment>
<translation>Transfer</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation>Start</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation>Quelle</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation>Größe</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation>Ziel</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation>Beenden</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation>Ziel</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation>Verbleibende Zeit:</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation>Auflistung</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
- <translation>Kopieren</translation>
+ <translation>Kopiere</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translatorcomment>not sure... depends on context</translatorcomment>
<translation>Auflistung und Kopiervorgang</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation>Verbleibend:</translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation>Fragen</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation>Überschreiben</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation>Überschreiben, falls neuer</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
- <translation>Überschreiben, falls die letzten Änderungsdaten unterschiedlich sind</translation>
+ <translation>Überschreiben, falls letztes Änderungsdatum unterschiedlich ist</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation>Umbenennen</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation>Ans Ende der Liste verschieben</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation>Fertig in %1</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation>Wählen Sie das Quellverzeichnis</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation>Wählen Sie das Zielverzeichnis</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation>Interner Fehler</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation>Wählen Sie eine oder mehrere Dateien zum Öffnen</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation>Alle Dateien</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation>Transferliste speichern</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation>Transferliste öffnen</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation>Transferliste</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
- <translation>Auf dieser Plattform nicht unterstützt</translation>
+ <translation>Wird auf dieser Plattform nicht unterstützt</translation>
</message>
</context>
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -752,22 +697,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished">Fehler</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -775,22 +720,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished">Fehler</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -798,77 +743,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -876,60 +821,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -937,27 +882,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished">Fehler</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -965,7 +910,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation>Über Ultracopier</translation>
</message>
@@ -974,7 +919,7 @@
<source>Based on Qt. Advanced utility to copy files under GPL3 license.
This version is compiled as version: %1.</source>
<extracomment>%1 will be replaced by a variable content (normal, debug, ...)</extracomment>
- <translation>Basiert auf Qt. Erweitertes Tool um Dateien zu kopieren (Lizenz: GPLv3).
+ <translation>Basiert auf Qt. Fortgeschrittenes Tool um Dateien zu kopieren (Lizenz: GPLv3).
Diese Version wurde kompiliert als Version: %1.</translation>
</message>
<message>
@@ -986,86 +931,81 @@ Diese Version wurde kompiliert als Version: %1.</translation>
<message>
<location filename="../../../HelpDialog.ui" line="92"/>
<source>Author: BRULE Herman Jacques Roger (alpha_one_x86), company: &lt;a href=&quot;http://www.confiared.com/&quot;&gt;confiared&lt;/a&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>Autor: BRULE Herman Jacques Roger (alpha_one_x86), Unternehmen: &lt;a href=&quot;http://www.confiared.com/&quot;&gt;confiared&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation>Über Qt</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
- <translation type="unfinished"></translation>
+ <translation>Überprüfe auf Updates</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translatorcomment>Clumsy... depends on context</translatorcomment>
<translation>Absturz ausführen</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation>Fehlerbericht speichern</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation>Zu http://portableapps.com/</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation>Portable und &quot;Alles-in-Einem&quot; Version</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation>Portable Version</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation>&quot;Alles-in-Einem&quot; Version</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation>Normale Version</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation>http://ultracopier-de.first-world.info/</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
- <translation type="unfinished"></translation>
+ <translation>Überprüfe Updates...</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Update: %1</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
- <translation type="unfinished"></translation>
+ <translation>Kein Update verfügbar</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation>http://ultracopier.first-world.info/download.html</translation>
</message>
@@ -1079,49 +1019,49 @@ Diese Version wurde kompiliert als Version: %1.</translation>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1137,14 +1077,14 @@ Diese Version wurde kompiliert als Version: %1.</translation>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation>Warnung</translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
- <translation>Timeout beim Zusammenfügen der Daten von verbundenen Clients</translation>
+ <translation>Zeitüberschreitung beim Zusammenfügen der Daten von verbundenen Clients</translation>
</message>
</context>
<context>
@@ -1171,36 +1111,42 @@ Diese Version wurde kompiliert als Version: %1.</translation>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1210,39 +1156,49 @@ Diese Version wurde kompiliert als Version: %1.</translation>
<translation>Warnung</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation>Klassisch</translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation>Modern</translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation>Nicht mehr anzeigen</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation>OK</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
- <translation>Das Ersetzen des Standard Kopier/Verschieben-Systems wird von diesem Datei-Manager nicht unterstützt.&lt;br /&gt;Bitten Sie die Entwickler darum es zu supporten. &lt;br /&gt;Sie müssen das Kopieren/Verschieben daher manuell durchführen.</translation>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <translation>Das Ersetzen des Standard Kopiersystems wird von diesem File-Manager nicht unterstützt (Dolphin, Nautilus, ...).&lt;br /&gt;Bitten Sie die Entwickler um Hilfe. &lt;br /&gt;Sie müssen den Vorgang bis dahin bitte manuell durchführen.</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
- <translation>System neustarten, Falls vorher ähnliche Software instaliert war (wie Teracopy, Supercopier oder ältere Version von Ultracopier).</translation>
+ <translation>Starten Sie das System bitte neu falls vorher eine ähnliche Software instaliert war (Teracopy, Supercopier oder ältere Version von Ultracopier).</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
- <translation>Das Ersetzen des Standard Kopier/Verschieben-Systems wird vom Mac OS X Finder nicht unterstützt und somit verhindert.&lt;br /&gt;Sie müssen das Kopieren/Verschieben daher manuell durchführen.</translation>
+ <translation>Das Ersetzen des Standard Kopiersystems wird vom Mac OS X Finder nicht unterstützt und somit verhindert.&lt;br /&gt;Sie müssen den Vorgang bis dahin bitte manuell durchführen.</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
- <translation>Das Ersetzen des Standard Kopier/Verschieben-Systems wird von diesem File-Manager nicht unterstützt.&lt;br /&gt;Bitten Sie die Entwickler darum es zu supporten. &lt;br /&gt;Sie müssen das Kopieren/Verschieben daher manuell durchführen.</translation>
+ <translation>Das Ersetzen des Standard Kopiersystems wird von diesem File-Manager nicht unterstützt.&lt;br /&gt;Bitten Sie die Entwickler um Hilfe. &lt;br /&gt;Sie müssen den Vorgang bis dahin bitte manuell durchführen.</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
- <translation type="unfinished"></translation>
+ <translation>Supercopier ist die veraltete Lösung, bevorzugen Sie Ultracopier</translation>
</message>
</context>
<context>
@@ -1265,16 +1221,16 @@ Diese Version wurde kompiliert als Version: %1.</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation>Kopier-Engine</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
- <translation>Themes</translation>
+ <translation>Design</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="106"/>
@@ -1289,53 +1245,53 @@ Diese Version wurde kompiliert als Version: %1.</translation>
<message>
<location filename="../../../OptionDialog.ui" line="251"/>
<source>Check for updates</source>
- <translation>Nach Updates suchen</translation>
+ <translation>Automatisch nach Updates suchen</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="289"/>
<source>Portable (need restart)</source>
- <translation type="unfinished"></translation>
+ <translation>Portabel machen (Benötigt Neustart)</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation>Name</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation>Version</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation>Sprache</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation>Listener</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation>Plugin loader</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation>Session loader</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="126"/>
<source>Force the language</source>
- <translation>Sprache wählen</translation>
+ <translation>Sprache vorgeben</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="136"/>
@@ -1345,7 +1301,7 @@ Diese Version wurde kompiliert als Version: %1.</translation>
<message>
<location filename="../../../OptionDialog.ui" line="150"/>
<source>Load at the session loading</source>
- <translation>Mit OS laden</translation>
+ <translation>Mit Betriebssystem laden</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="164"/>
@@ -1355,195 +1311,210 @@ Diese Version wurde kompiliert als Version: %1.</translation>
<message>
<location filename="../../../OptionDialog.ui" line="190"/>
<source>Group the windows when</source>
- <translation>Fenster gruppieren</translation>
+ <translation>Fenster gruppieren wenn</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="241"/>
<source>Display the OS warning</source>
- <translation>OS Warnungen anzeigen</translation>
+ <translation>Betriebssytem Warnungen anzeigen</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="261"/>
<source>Remaining time algorithm</source>
- <translation type="unfinished"></translation>
+ <translation>Algorithmus für verbleibende Zeit</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="269"/>
<source>Traditional</source>
- <translation type="unfinished"></translation>
+ <translation>Traditionell</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="274"/>
<source>Logarithmic</source>
+ <translation>Logarithmisch</translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation>Standard: finish.opus</translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation>Tonausgabe wenn fertig</translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation>Plugin</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation>Hinzufügen</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation>Entfernen</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation>Information</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
- <translation>Kopier-Engine in Reihenfolge ihrer Präferenz:</translation>
+ <translation>Kopier-Engine in Reihenfolge Ihrer Präferenz:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation>Client verbunden</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
- <translation>Themes:</translation>
+ <translation>Desings:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
- <translation>Konnte das Themes-Plugin nicht laden</translation>
+ <translation>Konnte das Design-Plugin nicht laden</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation>Durchsuchen</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation>Die Variablen sind %time%, %source%, %size%, %destination%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation>Die Variablen sind %time%, %path%, %size%, %mtime%, %error%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation>Log in folgende Datei schreiben:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation>Schreibe direkt in die Datei, wenn ein neuer Eintrag erreicht wird (50% Leistungsverlust möglich)</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation>Laden</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
- <translation>Theme laden?</translation>
+ <translation>Dieses Theme laden?</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
- <translation>Sprache laden?</translation>
+ <translation>Diese Sprache laden?</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
- <translation>Nichts tun</translation>
+ <translation>Nichts unternehmen</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation>Nach Quell-Ordner fragen</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation>Nach Quell-Datei fragen</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation>Nie</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation>Falls Quelle gleich ist</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation>Falls Ziel gleich ist</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation>Falls Quelle und Ziel gleich sind</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation>Falls Quelle oder Ziel gleich sind</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation>Immer</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation>Die Variablen sind %1</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation>Protokolle speichern als: </translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation>Synchronisiertes Protokoll</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation>Keine Option für dieses Plugin</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
- <translation>Protokolliere Transfers:</translation>
+ <translation>Protokolliere Transfers</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation>Protokolliere Fehler:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
- <translation>Protokolliere Ordner-Operationen:</translation>
+ <translation>Protokolliere Ordner-Operationen</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation>Die Variablen sind %path% %operation%</translation>
@@ -1643,12 +1614,12 @@ Diese Version wurde kompiliert als Version: %1.</translation>
<message>
<location filename="../../../PluginInformation.cpp" line="49"/>
<source>Themes</source>
- <translation>Themes</translation>
+ <translation>Designs</translation>
</message>
<message>
<location filename="../../../PluginInformation.cpp" line="52"/>
<source>Unknown</source>
- <translation type="unfinished"></translation>
+ <translation>Unbekannt</translation>
</message>
<message>
<location filename="../../../PluginInformation.cpp" line="61"/>
@@ -1674,36 +1645,37 @@ Diese Version wurde kompiliert als Version: %1.</translation>
<translation>Auf &quot;informations.xml&quot; kann nicht zugegriffen werden</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translatorcomment>clumsy.</translatorcomment>
<translation>Abhängigkeiten-Teil ist falsch</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation>Die Abhängigkeiten &quot;%1&quot; sind nicht erfüllt für Plugin:%2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation>Entferne %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Entfernen des Plugins, bitte überprüfen Sie die nötigen Rechte für den Ordner:
+%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
- <translation>Information</translation>
+ <translation>Informationen</translation>
</message>
<message>
<location filename="../../../PluginsManager.cpp" line="257"/>
@@ -1721,75 +1693,75 @@ Diese Version wurde kompiliert als Version: %1.</translation>
<translation>&quot;package&quot; Root-Tag für die XML-Datei nicht gefunden</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation>Plugin-Duplikat gefunden. Bereits geladen!</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation>Englischer Text fehlt in &quot;informations.xml&quot; für das Tag: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation>XML-Tag nicht gefunden: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation>Sind Sie sicher, dass Sie &quot;%1&quot; in der Version %2 entfernen wollen?</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation>Vorheriger Import wird durchgeführt...</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation>Ultracopier Plugin öffnen</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation>Ultracopier plugin (*.urc)</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation>Plugin-Loader</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation>Kann das Plugin nicht öffnen: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
- <translation>Kann Plugin-Inhalte nicht laden. Bitte überprüfen Sie das: %1</translation>
+ <translation>Kann Plugin-Inhalte nicht laden. Bitte überprüfen: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation>Kann keinen Ordner erstellen um das Plugin %1 zu installieren
</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
@@ -1798,18 +1770,18 @@ since:%2</source>
seit: %2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation>Ordner mit demselben Namen existiert bereits. Überspringen Sie die Plugin-Installation:
%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
- <translation>Kann Plugin-Inhalte nicht laden. Bitte überprüfen Sie das</translation>
+ <translation>Kann Plugin-Inhalte nicht laden. Bitte überprüfen</translation>
</message>
</context>
<context>
@@ -1818,17 +1790,17 @@ seit: %2</translation>
<location filename="../../../ProductKey.ui" line="14"/>
<location filename="../../../ProductKey.ui" line="24"/>
<source>Product key</source>
- <translation type="unfinished"></translation>
+ <translation>Produktschlüssel</translation>
</message>
<message>
<location filename="../../../ProductKey.cpp" line="56"/>
<source>Error</source>
- <translation type="unfinished">Fehler</translation>
+ <translation>Fehler</translation>
</message>
<message>
<location filename="../../../ProductKey.cpp" line="56"/>
<source>Your product key was rejected.&lt;br /&gt;If you buy key, unmark check your spam and unmark the mail as spam&lt;br /&gt;If you have not buy your key, go to &lt;a href=&quot;https://shop.first-world.info/&quot;&gt;https://shop.first-world.info/&lt;/a&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>Ihr Produktschlüssel wurde verweigert. &lt;br /&gt; Wenn Sie einen Schlüssel gekauft haben, überprüfen Sie auch Ihren Spam-Ordner. &lt;br /&gt;Wenn Sie noch keinen Schlüssel erworben haben gehen Sie bitte auf &lt;a href=&quot;https://shop.first-world.info/&quot;&gt;https://shop.first-world.info/&lt;/a&gt;</translation>
</message>
</context>
<context>
@@ -1848,7 +1820,7 @@ seit: %2</translation>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="97"/>
<source>Memory usage limit reached</source>
- <translation>Grenze des Speicherverbrauchs erreicht</translation>
+ <translation>Grenze des verbauten Arbeitsspeicher erreicht</translation>
</message>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="101"/>
@@ -1868,7 +1840,7 @@ seit: %2</translation>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="114"/>
<source>Bug!</source>
- <translation>Bug!</translation>
+ <translation>Fehler!</translation>
</message>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="124"/>
@@ -1879,24 +1851,17 @@ seit: %2</translation>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1904,267 +1869,240 @@ seit: %2</translation>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
- <translation type="unfinished">Keine Kopie-Listener gefunden. Führen Sie die Kopie manuell durch Rechtsklick auf das Symbol im Systray aus.</translation>
+ <translation>Keine Kopie-Listener gefunden. Führen Sie die Kopie manuell durch Rechtsklick auf das Symbol im Systray aus.</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
- <translation type="unfinished">Information</translation>
+ <translation>Informationen</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
- <translation type="unfinished">Suche Informationen ...</translation>
+ <translation>Suche Informationen ...</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
- <translation type="unfinished">Explorer:-Kopieren/Verschieben nicht ersetzen</translation>
+ <translation>Explorer: Kopieren/Verschieben nicht ersetzen</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
- <translation type="unfinished">Explorer: Kopieren/Verschieben teilweise ersetzen</translation>
+ <translation>Explorer: Kopieren/Verschieben teilweise ersetzen</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
- <translation type="unfinished">Explorer:-Kopieren/Verschieben ersetzen</translation>
+ <translation>Explorer: Kopieren/Verschieben ersetzen</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
- <translation type="unfinished">Warnung</translation>
+ <translation>Warnung</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
- <translation type="unfinished"></translation>
+ <translation>Diese Aktion auf dem TrayIcon ist unbekannt!</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Über/Debug Report</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Über</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Speicher Fehlerbericht</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Beenden</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Optionen</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Produktschlüssel</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Neue Version: %1</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
- <translation type="unfinished"></translation>
+ <translation>Zur Downloadseite gehen:</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Neuer Kopiervorgang</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Kopie</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Übertragung</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Verschieben</translation>
</message>
</context>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2197,323 +2135,243 @@ seit: %2</translation>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished">Transfer</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished">KB</translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished">MB</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished">Durchsuchen</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2521,67 +2379,67 @@ seit: %2</translation>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished">Fehler</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished">Größe</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished">Ziel</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2589,141 +2447,153 @@ seit: %2</translation>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished">Quelle</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished">Ziel</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished">Größe</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Überschreiben, falls neuer</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished">Größe</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2731,65 +2601,65 @@ seit: %2</translation>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished">Quelle</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished">Ziel</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished">Überspringen</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/el/flag.png b/plugins/Languages/el/flag.png
index cd96374..cd96374 100644..100755
--- a/plugins/Languages/el/flag.png
+++ b/plugins/Languages/el/flag.png
Binary files differ
diff --git a/plugins/Languages/el/informations.xml b/plugins/Languages/el/informations.xml
index 0f39ddc..dd51884 100644..100755
--- a/plugins/Languages/el/informations.xml
+++ b/plugins/Languages/el/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to greek. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>el</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/el/translation.qm b/plugins/Languages/el/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Languages/el/translation.qm
Binary files differ
diff --git a/plugins/Languages/el/translation.ts b/plugins/Languages/el/translation.ts
index cb636cf..b64f48b 100644..100755
--- a/plugins/Languages/el/translation.ts
+++ b/plugins/Languages/el/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -974,82 +919,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation type="unfinished"></translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1205,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation type="unfinished"></translation>
</message>
@@ -1281,38 +1237,38 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation type="unfinished"></translation>
</message>
@@ -1362,172 +1318,187 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
@@ -1658,33 +1629,33 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
@@ -1704,89 +1675,89 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation type="unfinished"></translation>
</message>
@@ -1858,24 +1829,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1883,198 +1847,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,68 +2031,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2113,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2357,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,141 +2425,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2579,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/en/translation.qm b/plugins/Languages/en/translation.qm
new file mode 100755
index 0000000..8b13789
--- /dev/null
+++ b/plugins/Languages/en/translation.qm
@@ -0,0 +1 @@
+
diff --git a/plugins/Languages/es/flag.png b/plugins/Languages/es/flag.png
index 4cb4c0a..4cb4c0a 100644..100755
--- a/plugins/Languages/es/flag.png
+++ b/plugins/Languages/es/flag.png
Binary files differ
diff --git a/plugins/Languages/es/informations.xml b/plugins/Languages/es/informations.xml
index 872a4d7..c8b3e95 100644..100755
--- a/plugins/Languages/es/informations.xml
+++ b/plugins/Languages/es/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to spanish. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>es</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/es/translation.qm b/plugins/Languages/es/translation.qm
new file mode 100755
index 0000000..63d590d
--- /dev/null
+++ b/plugins/Languages/es/translation.qm
Binary files differ
diff --git a/plugins/Languages/es/translation.ts b/plugins/Languages/es/translation.ts
index 89830e4..13e33f3 100644..100755
--- a/plugins/Languages/es/translation.ts
+++ b/plugins/Languages/es/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1" language="es">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished">No es compatible con esta plataforma</translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -89,12 +54,12 @@
<message>
<location filename="../../../CliParser.cpp" line="32"/>
<source>Ultracopier is already running, right click on its system tray icon (near the clock) to use it or just copy and paste</source>
- <translation type="unfinished"></translation>
+ <translation>Ultracopier ya se está ejecutando, haga clic derecho en el icono de la bandeja del sistema (cerca del reloj) para usarlo o simplemente copie y pegue</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="34"/>
<source>Ultracopier is already running, view all notification area icons (near the clock), right click on its system tray icon to use it or just copy and paste</source>
- <translation type="unfinished"></translation>
+ <translation>Ultracopier ya se está ejecutando, vea todos los íconos del área de notificación (cerca del reloj), haga clic derecho en el ícono de la bandeja del sistema para usarlo o simplemente copie y pegue</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="109"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished">Destino</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished">Pedir</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished">Salto</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished">Cambiar el nombre</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished">Sobrescribir</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Sobrescribir si nuevo</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished">Pedir</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished">Salto</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished">Cambiar el nombre</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished">Sobrescribir</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Sobrescribir si nuevo</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,31 +261,31 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation>Advertencia</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation>No se puede encontrar ningún motor de copia con soporte de movimiento</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation>
Este motor de copia no soporta mover</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation>No se puede encontrar un motor compatible!</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation>No se puede encontrar un motor con este nombre: %1</translation>
</message>
@@ -353,12 +293,12 @@ Este motor de copia no soporta mover</translation>
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation>Error durante la recepción de la lista de copia / movimiento
@@ -368,72 +308,72 @@ Este motor de copia no soporta mover</translation>
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation>No se puede obtener una instancia de motor de copia</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation>Ventana en grupo</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation>¿Quieres agrupar la transferencia con otra transferencia real en ejecución?</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation>No se puede obtener una instancia del motor</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation>El argumento para el modo no es válida</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation>¿Quieres copiar? Si no, se puede mover.</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation>No se puede cargar la interfaz, copia abortados</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation>No se puede cargar el motor de copia, copia abortados</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation>Modo de transferencia</translation>
</message>
@@ -441,27 +381,27 @@ Este motor de copia no soporta mover</translation>
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -469,257 +409,262 @@ Este motor de copia no soporta mover</translation>
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation>Motor de copia</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation>Copia</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation>Movimiento</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation>Pausa</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation>Resumen</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation>Salto</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation>Ilimitado</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation>s</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation>Demasiado grande</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation>B</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation>KB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation>MB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation>GB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation>TB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation>PB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation>EB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation>ZB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation>YB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation>Menos de %10 segundos</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation>Alrededor de %10 segundos restantes</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation>Alrededor de %1 minutos restantes</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation>Alrededor de %1 las horas restantes</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation>Transferencia</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation>Iniciar</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation>Origen</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation>Tamaño</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation>Destino</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation>Abandonar</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation>Objetivo</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation>Tiempo restante:</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation>Listado</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation>Copia</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation>Listado y copia</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation>Restante:</translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation>Pedir</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation>Sobrescribir</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation>Sobrescribir si nuevo</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation>Sobrescribir si las fechas de modificación últimos son diferentes</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation>Cambiar el nombre</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation>Ponga al final de la lista</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation>Terminado en %1</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation>Seleccione el directorio de origen</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation>Seleccione el directorio de destino</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation>Error interno</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation>Seleccione uno o varios archivos para abrirlos</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation>Todos los archivos</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation>Guardar lista de transferencias</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation>Abrir lista de transferencias</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation>Lista de transferencia</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation>No es compatible con esta plataforma</translation>
</message>
@@ -727,12 +672,12 @@ Este motor de copia no soporta mover</translation>
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -740,22 +685,22 @@ Este motor de copia no soporta mover</translation>
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished">Error</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -763,22 +708,22 @@ Este motor de copia no soporta mover</translation>
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished">Error</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -786,77 +731,77 @@ Este motor de copia no soporta mover</translation>
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -864,60 +809,60 @@ Este motor de copia no soporta mover</translation>
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -925,27 +870,27 @@ Este motor de copia no soporta mover</translation>
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished">Error</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -953,7 +898,7 @@ Este motor de copia no soporta mover</translation>
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation>Acerca Ultracopier</translation>
</message>
@@ -974,85 +919,80 @@ Esta versión está compilada en versión:%1.</translation>
<message>
<location filename="../../../HelpDialog.ui" line="92"/>
<source>Author: BRULE Herman Jacques Roger (alpha_one_x86), company: &lt;a href=&quot;http://www.confiared.com/&quot;&gt;confiared&lt;/a&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>Autor: BRULE Herman Jacques Roger (alpha_one_x86), empresa: &lt;a href=&quot;http://www.confiared.com/es/&quot;&gt;Confiared&lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation>Acerca de Qt</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
- <translation type="unfinished"></translation>
+ <translation>Compruebar la actualización</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation>Hacer a crash</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation>Guardar informe de error</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation>Cerrar</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation>Para http://portableapps.com/</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation>Portable y todo en una versión</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation>Version portable</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation>Todo en una sola versión</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation>Version normal</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation>http://ultracopier-es.first-world.info/</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
- <translation type="unfinished"></translation>
+ <translation>Comprobación de actualización ...</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Actualización: %1</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
- <translation type="unfinished"></translation>
+ <translation>Ninguna actualización</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation>http://ultracopier-es.first-world.info/descarga.html</translation>
</message>
@@ -1066,49 +1006,49 @@ Esta versión está compilada en versión:%1.</translation>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1124,12 +1064,12 @@ Esta versión está compilada en versión:%1.</translation>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation>Advertencia</translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation>Tiempo de espera, mientras que la recomposición de datos de los clientes conectados</translation>
</message>
@@ -1158,36 +1098,42 @@ Esta versión está compilada en versión:%1.</translation>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1197,39 +1143,49 @@ Esta versión está compilada en versión:%1.</translation>
<translation>Advertencia</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation>Clásico</translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation>Moderno</translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation>No mostrar de nuevo</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation>Ok</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
- <translation>La sustitución de la copia default / sistema de movimiento no está soportado por el gestor de archivos (Dolphin, Nautilus, ...). &lt;br /&gt; Pregunte al desarrollador para apoyarlo. &lt;br /&gt; Es necesario hacer el copiar / mover manualmente.</translation>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <translation>El administrador de archivos no admite la sustitución del sistema de copia / movimiento predeterminado (Dolphin, Nautilus, ...). &lt;br /&gt; Solicite al desarrollador de su administrador de archivos que lo admita. &lt;br /&gt;Debe hacer la copia/mover manualmente.</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation>Reinicie el sistema si previamente se había instalado software similar (como TeraCopy, SuperCopier o una versión anterior de Ultracopier).</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation>La sustitución de la copia default / sistema de movimiento no se admite y bloquea buscador de Mac OS X. &lt;br /&gt; Es necesario hacer el copiar / mover manualmente haciendo clic derecho sobre el icono de la bandeja del sistema, cerca del reloj (no el icono del Dock).</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation>La sustitución de incumplimiento de copiar / mover sistema no debe ser soportado por el gestor de archivos. &lt;br /&gt; Pregunte al desarrollador para apoyarlo. &lt;br /&gt; Usted necesita hacer el copiar / mover manualmente.</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
- <translation type="unfinished"></translation>
+ <translation>Considere Supercopier como obsoleto, prefiera Ultracopier</translation>
</message>
</context>
<context>
@@ -1252,14 +1208,14 @@ Esta versión está compilada en versión:%1.</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation>Motor de copia</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation>Themas</translation>
</message>
@@ -1281,41 +1237,41 @@ Esta versión está compilada en versión:%1.</translation>
<message>
<location filename="../../../OptionDialog.ui" line="289"/>
<source>Portable (need restart)</source>
- <translation type="unfinished"></translation>
+ <translation>Portátil (necesita reiniciar)</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation>Nombre</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation>Version</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation>Lenguaje</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation>Oyente</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation>Plugin cargador</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation>Sesión cargador</translation>
</message>
@@ -1365,172 +1321,187 @@ Esta versión está compilada en versión:%1.</translation>
<translation>Logarítmica</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation>valor predeterminado: finish.opus</translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation>Sonido cuando termine</translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation>Plugin</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation>Añadir</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation>Eliminar</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation>Información</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation>Copia del motor por orden de preferencia:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation>Cliente conectado</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation>Temas:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation>No se puede cargar el plugin temas</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation>No hay ninguna opción para este plugin</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation>Navegar</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation>Escriba las transferencias</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation>Escriba la carpeta de las operaciones</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation>Las variables son %time%, %source%, %size%, %destination%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation>Escribir los errores</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation>Las variables son %time%, %path%, %size%, %mtime%, %error%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation>Escribir el archivo de registro en:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation>Escriba directamente el archivo cuando se recibe una nueva entrada (se puede producir un 50% de pérdida de rendimiento)</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation>Cargar</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation>Cargue el tema?</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation>Cargue el idioma?</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation>No hacer nada</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation>Pregunte a la fuente que la carpeta</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation>Pregunte a las fuentes como archivos</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation>Nunca</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation>Cuando la fuente es la misma</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation>Cuando destino es el mismo</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation>Cuando la fuente y el destino son los mismos</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation>Cuando la fuente o el destino son los mismos</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation>Siempre</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation>Las variables son %1</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation>Guardar registros como: </translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation>Registro de sincronizada</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation>Las variables son %path%, %operation%</translation>
@@ -1661,34 +1632,34 @@ Esta versión está compilada en versión:%1.</translation>
<translation>informations.xml no es accesible</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation>Parte las dependencias se equivoca</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation>Dependencias %1 no está satisfecho, para el plugin:%2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation>Eliminar %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation>Error al eliminar el complemento, compruebe los derechos en la carpeta:
%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation>Información</translation>
</message>
@@ -1708,75 +1679,75 @@ Esta versión está compilada en versión:%1.</translation>
<translation>&quot;package&quot; etiqueta raíz que no se encuentra el archivo xml</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation>Plugin de duplicados encontrados, ya está cargado!</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation>Texto Inglés falta en el informations.xml para la etiqueta: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation>Etiqueta no encontrada: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation>¿Estás seguro de eliminar &quot;%1&quot; en la versión %2?</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation>Previo de importación está en curso ...</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation>Abrir Plugin Ultracopier</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation>Ultracopier plugin (*.urc)</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation>Plugin cargador</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation>No se puede abrir el plugin: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation>No se puede cargar el contenido del plugin, por favor verifique que: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation>No se puede crear una carpeta para instalar el plugin:
%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
@@ -1785,16 +1756,16 @@ since:%2</source>
desde: %2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation>Carpeta con el mismo nombre está presente, no tome la instalación del plugin:
%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation>No se puede cargar el contenido del plugin, por favor verifique</translation>
</message>
@@ -1805,17 +1776,17 @@ desde: %2</translation>
<location filename="../../../ProductKey.ui" line="14"/>
<location filename="../../../ProductKey.ui" line="24"/>
<source>Product key</source>
- <translation type="unfinished"></translation>
+ <translation>Clave de producto</translation>
</message>
<message>
<location filename="../../../ProductKey.cpp" line="56"/>
<source>Error</source>
- <translation type="unfinished">Error</translation>
+ <translation>Error</translation>
</message>
<message>
<location filename="../../../ProductKey.cpp" line="56"/>
<source>Your product key was rejected.&lt;br /&gt;If you buy key, unmark check your spam and unmark the mail as spam&lt;br /&gt;If you have not buy your key, go to &lt;a href=&quot;https://shop.first-world.info/&quot;&gt;https://shop.first-world.info/&lt;/a&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>Su clave de producto fue rechazada. &lt;br /&gt; Si compra la clave, desmarque, verifique su correo no deseado y desmarque el correo como spam &lt;br /&gt; Si no ha comprado su clave, vaya a &lt;a href=&quot;https://shop.first-world.info/&quot;&gt;https://shop.first-world.info/&lt;/a&gt;</translation>
</message>
</context>
<context>
@@ -1866,24 +1837,17 @@ desde: %2</translation>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1891,267 +1855,240 @@ desde: %2</translation>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation>Información</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation>Buscar información...</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation>No se encontró copia de escucha. Haga la copia manualmente haciendo clic derecho en el icono de la bandeja del sistema.</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation>No sustituya la copia explorer/move</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation>Semi reemplazar la copia explorer/mudanza</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation>Vuelva a colocar la copia explorer/mudanza</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
- <translation type="unfinished">Advertencia</translation>
+ <translation>Advertencia</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
- <translation type="unfinished"></translation>
+ <translation>¡La acción en el icono de la bandeja del sistema es desconocida!</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
- <translation type="unfinished"></translation>
+ <translation>Acerca de/Informe de debug</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Acerca de</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
- <translation type="unfinished"></translation>
+ <translation>Guardar informe de error</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
- <translation type="unfinished"></translation>
+ <translation>Dejar</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Optiones</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
- <translation type="unfinished"></translation>
+ <translation>Clave de producto</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Nueva versión: %1</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
- <translation type="unfinished"></translation>
+ <translation>Ve a la página de descarga:</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
- <translation type="unfinished"></translation>
+ <translation>Agregar copia/mover</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
- <translation type="unfinished"></translation>
+ <translation>Agregar copia</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
- <translation type="unfinished"></translation>
+ <translation>Agregar transferencia</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
- <translation type="unfinished"></translation>
+ <translation>Añadir movimiento</translation>
</message>
</context>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2184,323 +2121,243 @@ desde: %2</translation>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished">Transferencia</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished">KB</translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished">MB</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished">Navegar</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2508,67 +2365,67 @@ desde: %2</translation>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished">Error</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished">Tamaño</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished">Destino</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2576,141 +2433,153 @@ desde: %2</translation>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished">Origen</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished">Destino</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished">Tamaño</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Sobrescribir si nuevo</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished">Tamaño</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2718,65 +2587,65 @@ desde: %2</translation>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished">Origen</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished">Destino</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished">Salto</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/fr/flag.png b/plugins/Languages/fr/flag.png
index 95c8921..95c8921 100644..100755
--- a/plugins/Languages/fr/flag.png
+++ b/plugins/Languages/fr/flag.png
Binary files differ
diff --git a/plugins/Languages/fr/informations.xml b/plugins/Languages/fr/informations.xml
index 5c571f2..cd1496d 100644..100755
--- a/plugins/Languages/fr/informations.xml
+++ b/plugins/Languages/fr/informations.xml
@@ -15,7 +15,7 @@
<description xml:lang="en"><![CDATA[Translation of Ultracopier to French. For more details see the web site.]]></description>
<description xml:lang="fr"><![CDATA[Traduction d'ultracopier en Français. Pour plus de détails regardez le site web]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>fr</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/fr/translation.qm b/plugins/Languages/fr/translation.qm
new file mode 100755
index 0000000..04e1999
--- /dev/null
+++ b/plugins/Languages/fr/translation.qm
Binary files differ
diff --git a/plugins/Languages/fr/translation.ts b/plugins/Languages/fr/translation.ts
index b6d0692..e2c3742 100644..100755
--- a/plugins/Languages/fr/translation.ts
+++ b/plugins/Languages/fr/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1" language="fr" sourcelanguage="en">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished">Pas supporté sur cette platforme</translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished">Destination</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished">Demander</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished">Passer</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished">Renommer</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished">Écraser</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Écraser si plus récent</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished">Demander</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished">Passer</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished">Renommer</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished">Écraser</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Écraser si plus récent</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation>Avertissement</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation>Impossible de trouver un moteur avec le support du déplacement</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation>Ce moteur de copie ne supporte pas les déplacements</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation>Impossible de trouver un moteur de copie compatible!</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation>Impossible de trouver un moteur portant ce nom: %1</translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation>Erreur</translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation>Erreur pendant la réception de la liste de copy/déplacement
@@ -367,72 +307,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation>Erreur</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation>Impossible d&apos;obtenir une instance du moteur de copie</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation>Grouper des fenêtres</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation>Voulez vous grouper le transfert avec le transfert actuel?</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation>Impossible d&apos;otenir une instance du moteur de copie</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation>L&apos;argument pour le mode n&apos;est pas valide</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation>Voulez vous faire une copie? Si vous repondez non alors il sera déplacé.</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation>Impossible de charger l&apos;interface, copie annulée</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation>Impossible de charger le moteur de copie, copie annulée</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation>Mode de transfert</translation>
</message>
@@ -440,27 +380,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -468,259 +408,264 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation>Moteur de copie</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation>Copie</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation>Déplacer</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation>Pause</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation>Reprendre</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation>Passer</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation>Illimité</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation>s</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation>Trop grand</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation>o</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation>Ko</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation>Mo</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation>Go</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation>To</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation>Po</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation>Eo</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation>Zo</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation>Yo</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation>Moins de %10 secondes</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation>Environ %10 secondes restantes</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation>Environ %1 minutes restantes</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation>Environ %1 heures restantes</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation>Transfert</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation>Démarrer</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation>Source</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation>Taille</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation>Destination</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation>Quitter</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation>Cible</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation>Temps restant:</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translatorcomment>Création de la liste? Listage?</translatorcomment>
<translation>Listing</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translatorcomment>Copie en cour -&gt; copying in progress</translatorcomment>
<translation>Copie</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation>Listing et copie</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation>Restant:</translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation>Demander</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation>Écraser</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation>Écraser si plus récent</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation>Écraser si les dates de modification sont différentes</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation>Renommer</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation>Mettre à la fin</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation>Fini en %1</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation>Sélectionner un dossier source</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation>Sélectionner un dossier de destination</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation>Erreur interne</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation>Sélectionner un ou des fichiers à ouvrir</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation>Tous les fichiers</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation>Sauvegarder la liste de transfert</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation>Ouvrir la liste de transfert</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation>Liste de transfert</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation>Erreur</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation>Pas supporté sur cette platforme</translation>
</message>
@@ -728,12 +673,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -741,22 +686,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished">Erreur</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -764,22 +709,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished">Erreur</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -787,77 +732,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -865,60 +810,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -926,27 +871,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished">Erreur</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -954,7 +899,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation>À propos d&apos;Ultracopier</translation>
</message>
@@ -978,82 +923,77 @@ Cette version est compilée comme version : %1.</translation>
<translation>Auteur: BRULE Herman Jacques Roger (alpha_one_x86), société: &lt;a href=&quot;http://www.confiared.com/&quot;&gt; confiared &lt;/a&gt;</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation>À propos de Qt</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation>Vérifier la mise à jour</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation>Faire un crash</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation>Sauver le rapport</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation>Fermer</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation>A propos de Supercopier</translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation>Pour http://portableapps.com/</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation>Portable et tout en un</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation>Version portable</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation>Tout en un</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation>Version normale</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation>http://ultracopier-fr.first-world.info/</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation>Vérification de la mise à jour...</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation>Mise à jour: %1</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation>Pas de mise à jour</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation>http://ultracopier-fr.first-world.info/telecharger.html</translation>
</message>
@@ -1067,49 +1007,49 @@ Cette version est compilée comme version : %1.</translation>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1125,12 +1065,12 @@ Cette version est compilée comme version : %1.</translation>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation>Avertissement</translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation>Timeout pendant la recompossition des données des clients connectés</translation>
</message>
@@ -1159,36 +1099,42 @@ Cette version est compilée comme version : %1.</translation>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1198,37 +1144,47 @@ Cette version est compilée comme version : %1.</translation>
<translation>Avertissement</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation>Classique</translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation>Moderne</translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation>Ne plus afficher</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation>Ok</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
- <translation>Le remplacement du systéme de copie/déplacement n&apos;est pas supporté par le gestionnaire de fichier (Dolphin, Nautilus, ...).&lt;br /&gt;Demander aux developpeurs de le supporter.&lt;br /&gt;Vous devez faire la copie/déplacement manuellement.</translation>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <translation>Le remplacement du système de copie/déplacement par défaut n’est pas pris en charge par le gestionnaire de fichiers (Dolphin, Nautilus, ...). &lt;br /&gt; Demandez au développeur de votre gestionnaire de fichiers de le prendre en charge. &lt;br /&gt; Vous devez effectuer la copie/déplacement manuellement.</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation>Redémarrer le système si précédemment vous avez installé un logiciel similaire (comme Teracopy, Supercopier ou une version précédente d&apos;Ultracopier).</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation>Le remplacement du systéme de copie/déplacement n&apos;est pas supporté et bloqué par le finder de Mac OS X.&lt;br /&gt;Vous devez faire la copie/déplacement manuellement en cliquant sur l&apos;icone du systray à coté de l&apos;heure (pas l&apos;icone du dock).</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation>Le remplacement du systéme de copie/déplacement n&apos;est pas supporté par le gestionnaire de fichier.&lt;br /&gt;Demander aux developpeurs de le supporter.&lt;br /&gt;Vous devez faire la copie/déplacement manuellement.</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation>Considérer Supercopier comme obsolète, préférez Ultracopier</translation>
</message>
@@ -1253,14 +1209,14 @@ Cette version est compilée comme version : %1.</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation>Moteurs de copie</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation>Thèmes</translation>
</message>
@@ -1285,38 +1241,38 @@ Cette version est compilée comme version : %1.</translation>
<translation>Portable (besoin de redémarrer)</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation>Nom</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation>Version</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation>Langue</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation>Écouteur</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation>Chargeur de plugin</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation>Chargeur de session</translation>
</message>
@@ -1366,172 +1322,187 @@ Cette version est compilée comme version : %1.</translation>
<translation>Logarithmique</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation>défaut: finish.opus</translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation>Son quand fini</translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation>Plugin</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation>Ajouter</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation>Supprimer</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation>Informations</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation>Moteurs de copie par ordre de préférence:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation>Client connecté</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation>Thèmes:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation>Impossible de charger le plugin des thèmes</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation>Pas d&apos;options pour ce plugin</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation>Parcourir</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation>Écrire les transferts</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation>Écrire les opérations dossier</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation>Les variables sont %time%, %source%, %size%, %destination%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation>Écrire les erreurs</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation>Les variables sont %time%, %path%, %size%, %mtime%, %error%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation>Écrire le fichier journal dans:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation>Écrire directement le fichier quand il reçoit une nouvelle entrée (peut entrainer 50% de perte de performances)</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation>Charger</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation>Charger le thème?</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation>Charger la langue?</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation>Ne rien faire</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation>Demander la source comme un dossier</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation>Demander la sources comme des fichiers</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation>Jamais</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation>Quand la source est la même</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation>Quand la destination est la même</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation>Quand la destination et la source sont les mêmes</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation>Quand la destination ou la source sont les mêmes</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation>Toujours</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation>Les variables sont %1</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation>Sauvegarder les logs sous: </translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation>Log synchronisé</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation>Les variables sont %path%, %operation%</translation>
@@ -1667,53 +1638,53 @@ Cette version est compilée comme version : %1.</translation>
<translation>Le fichier informations.xml n&apos;a pas été trouvé dans le plugin</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation>Texte anglais manquant dans le informations.xml pour la balise: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation>Les dépendances sont fausses</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation>Des dépendances %1 ne sont pas satisfaites, pour le plugin: %2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation>Erreur lors de la suppression du plug-in, veuillez vérifier les droits sur le dossier:
%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation>Chargeur de plugin</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation>Supprimer %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation>Erreur</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation>Informations</translation>
</message>
@@ -1728,57 +1699,57 @@ Cette version est compilée comme version : %1.</translation>
<translation>La balise racine &quot;package&quot; n&apos;a pas été trouvée pour le fichier xml</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translatorcomment>Le plugins courrant est un doublont, donc déjà chargé!</translatorcomment>
<translation>Plugin dupliqué trouvé, déjà chargé!</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation>Balise non trouvée: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation>Êtes vous sûr de vouloir supprimer &quot;%1&quot; en version %2?</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation>Importation précédente en cours...</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation>Ouvrir un plugin d&apos;Ultracopier</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation>Plugin d&apos;Ultracopier (*.urc)</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation>Impossible d&apos;ouvrir le plugin: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation>Impossible de charger le contenu du plugin, veuillez le vérifier: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation>Impossible de créer un dossier pour installer le plugin:
%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
@@ -1787,16 +1758,16 @@ since:%2</source>
depuis:%2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation>Le répertoire est déjà présent, on saute l&apos;installation du plugin:
%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation>Impossible de charger le contenu du plugin, veuillez le vérifier</translation>
</message>
@@ -1868,24 +1839,17 @@ depuis:%2</translation>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1893,198 +1857,183 @@ depuis:%2</translation>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation>Pas d&apos;écouteur trouvé. Effectuez la copie manuellement par clic droit sur l&apos;icône dans la zone de notification (près de l&apos;horloge).</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation>Recherche d&apos;informations...</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation>Ne remplace pas la copie/déplacement de l&apos;explorateur</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation>Remplace partiellement la copie/déplacement de l&apos;explorateur</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation>Remplace la copie/déplacement de l&apos;explorateur</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation>Avertissement</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation>L&apos;action sur l&apos;icône systray est inconnue!</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation>&amp;À propos/Rapport de débogage</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation>&amp;À propos</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation>&amp;Sauvegarder le rapport de bogue</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation>&amp;Quitter</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation>&amp;Options</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation>&amp;Clé de produit</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation>Nouvelle version: %1</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation>Aller à la page de téléchargement:</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
- <translation>Une cop&amp;ie/déplacement</translation>
+ <translation>Ajouter cop&amp;ie/déplacement</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
- <translation>Ajouter et &amp;copie</translation>
+ <translation>Ajouter une &amp;copie</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
- <translation>Ajouter et &amp;transférer</translation>
+ <translation>Ajouter un &amp;transfére</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
- <translation>Ajouter et dép&amp;lacement</translation>
+ <translation>Ajouter un dép&amp;lacement</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation>Informations</translation>
</message>
@@ -2092,68 +2041,56 @@ depuis:%2</translation>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2186,323 +2123,243 @@ depuis:%2</translation>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished">Transfert</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished">Ko</translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished">Mo</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished">Parcourir</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2510,67 +2367,67 @@ depuis:%2</translation>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished">Erreur</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished">Taille</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished">Destination</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2578,141 +2435,153 @@ depuis:%2</translation>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished">Source</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished">Destination</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished">Taille</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Écraser si plus récent</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished">Taille</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2720,65 +2589,65 @@ depuis:%2</translation>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished">Source</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished">Destination</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished">Passer</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/hi/flag.png b/plugins/Languages/hi/flag.png
index 3ac74be..3ac74be 100644..100755
--- a/plugins/Languages/hi/flag.png
+++ b/plugins/Languages/hi/flag.png
Binary files differ
diff --git a/plugins/Languages/hi/informations.xml b/plugins/Languages/hi/informations.xml
index 33f66e6..dc5b57c 100644..100755
--- a/plugins/Languages/hi/informations.xml
+++ b/plugins/Languages/hi/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to hindi. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>hi</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/hi/translation.qm b/plugins/Languages/hi/translation.qm
new file mode 100755
index 0000000..d925dd6
--- /dev/null
+++ b/plugins/Languages/hi/translation.qm
Binary files differ
diff --git a/plugins/Languages/hi/translation.ts b/plugins/Languages/hi/translation.ts
index 71b0873..3c0c8fd 100644..100755
--- a/plugins/Languages/hi/translation.ts
+++ b/plugins/Languages/hi/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1" language="hi">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -974,82 +919,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation type="unfinished"></translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1205,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation type="unfinished"></translation>
</message>
@@ -1281,38 +1237,38 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation type="unfinished"></translation>
</message>
@@ -1362,172 +1318,187 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
@@ -1658,33 +1629,33 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
@@ -1704,89 +1675,89 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation type="unfinished"></translation>
</message>
@@ -1858,24 +1829,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1883,198 +1847,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,68 +2031,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2113,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2357,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,141 +2425,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2579,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/hu/flag.png b/plugins/Languages/hu/flag.png
index 5115e8a..5115e8a 100644..100755
--- a/plugins/Languages/hu/flag.png
+++ b/plugins/Languages/hu/flag.png
Binary files differ
diff --git a/plugins/Languages/hu/informations.xml b/plugins/Languages/hu/informations.xml
index 6483629..ced72cc 100644..100755
--- a/plugins/Languages/hu/informations.xml
+++ b/plugins/Languages/hu/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Hungarian translation of Ultracopier]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>hu</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/hu/translation.qm b/plugins/Languages/hu/translation.qm
new file mode 100755
index 0000000..89f253f
--- /dev/null
+++ b/plugins/Languages/hu/translation.qm
Binary files differ
diff --git a/plugins/Languages/hu/translation.ts b/plugins/Languages/hu/translation.ts
index f924d55..3416979 100644..100755
--- a/plugins/Languages/hu/translation.ts
+++ b/plugins/Languages/hu/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1" language="hu">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished">Ezen a platformon nem támogatott</translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished">Cél</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished">Rákérdez</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished">Kihagyás</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished">Átnevezés</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished">Felülírás</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Felülírás, ha újabb</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished">Rákérdez</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished">Kihagyás</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished">Átnevezés</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished">Felülírás</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Felülírás, ha újabb</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation>Figyelmzetetés</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation>Nem található semmilyen kompatibilis motor!</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation>Nem található motor ezzel a névvel: %1</translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation>Hiba</translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation>Hiba a másolási/mozgatási lista fogadásakor
@@ -367,72 +307,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation>Hiba</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation>Nem lehetséges másoló motor példány észlelése</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation>Motor állapot lekérése nem lehetséges</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation>A mód argumentuma nem érvényes</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation>Szeretnél másolni? Ha nem, akkor átmozgatva lesz.</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation>Kezelőfelület betöltése nem lehetséges, másolás megszakítva</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation>Másoló motor betöltése nem lehetséges, másolás megszakítva</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation>Átviteli mód</translation>
</message>
@@ -440,27 +380,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -468,257 +408,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation>mp</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation>Túl nagy</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation>B</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation>KB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation>MB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation>GB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation>TB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation>PB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation>EB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation>ZB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation>YB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation>Kevesebb mint %10 másodperc</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation>Körülbelül %10 másodperc van hátra</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation>Körülbelül %1 perc van hátra</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation>Körülbelül %1 óra van hátra</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation>Másoló motor</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation>Másolás</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation>Átvitel</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation>Mozgatás</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation>Indítás</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation>Szünet</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation>Folytatás</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation>Kihagyás</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation>Korlátlan</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation>Forrás</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation>Méret</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation>Cél</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation>Kilépés</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation>Cél</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation>Hátralévő idő:</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation>Listázás</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation>Másolás</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation>Listázás és másolás</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation>Rákérdez</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation>Felülírás</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation>Felülírás, ha újabb</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation>Felülír, ha az legutóbbi módosítás dátumai különböznek</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation>Átnevezés</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation>Helyezze a lista végére</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation>Válassz forrásmappát</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation>Válassz célmappát</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation>Belső hiba</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation>Válassz egy vagy több fájlt megnyitásra</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation>Minden fájl</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation>Átviteli lista mentése</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation>Átviteli lista megnyitása</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation>Átviteli lista</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation>Hiba</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation>Ezen a platformon nem támogatott</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation>Befejezve %1 alatt</translation>
</message>
@@ -726,12 +671,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -739,22 +684,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished">Hiba</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -762,22 +707,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished">Hiba</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -785,77 +730,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -863,60 +808,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -924,27 +869,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished">Hiba</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -952,7 +897,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation>Az Ultracopier névjegye</translation>
</message>
@@ -982,82 +927,77 @@ Ez a verzió a következő verzióként került lefordításra: %1.</translation
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation>A Qt névjegye</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation>Összeomlás</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation>Hibajelentés mentése</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation>Bezárás</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation>http://portableapps.com/</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation>Hordozható és teljes verzió</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation>Hordozható verzió</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation>Teljes verzió</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation>Normál verzió</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation>http://ultracopier.first-world.info/</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1065,49 +1005,49 @@ Ez a verzió a következő verzióként került lefordításra: %1.</translation
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1123,12 +1063,12 @@ Ez a verzió a következő verzióként került lefordításra: %1.</translation
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation>Figyelmeztetés</translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation>Időtúllépés történt az adatok összeilesztése közben a kapcsolódott kliensektől</translation>
</message>
@@ -1157,36 +1097,42 @@ Ez a verzió a következő verzióként került lefordításra: %1.</translation
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1196,38 +1142,47 @@ Ez a verzió a következő verzióként került lefordításra: %1.</translation
<translation>Figyelmeztetés</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation>Ne mutassa újra</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation>Rendben</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
- <translatorcomment>Az alapértelmezett másolás/mozgatás rendszer lecserélését nem támogatja a fájlkezelő (Dolphin, Nautilus, ...).&lt;br /&gt;Kérd meg a fejlesztőt, hogy támogassa.&lt;br /&gt;A másolás/mozgatást manuálisan kell elvégezned.</translatorcomment>
- <translation></translation>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation>Indítsd újra a gépet, ha korábban már volt hasonló alkalmazás telepítve (például Teracopy, Supercopier vagy az Ultracopier korábbi verziója).</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation>Az alapértelmezett másoló/mozgató rendszer lecserélését nem támogatott és blokkolja a Mac OS X fejlesztője.&lt;br /&gt;A másolást/mozgatást manuálisan kell elvégezned a tálcaikonra kattintva jobb egérgombbal, az óra mellett.</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation>Az alapértelmezett másoló/mozgató rendszer lecserélését nem szabad támogatnia a fájlkezelőnek.&lt;br /&gt;Kérd meg a fejlesztőt, hogy támogassa.&lt;br /&gt;A másolás/mozgatást manuálisan kell elvégezned.</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1252,35 +1207,35 @@ Ez a verzió a következő verzióként került lefordításra: %1.</translation
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation>Másoló motor</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation>Figyelő</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation>Beépüő betöltő</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation>Folyamat betöltő</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation>Témák</translation>
</message>
@@ -1305,12 +1260,12 @@ Ez a verzió a következő verzióként került lefordításra: %1.</translation
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation>Írás közvetlenül a fájlba, ha új bejegyzést kap (akár 50%-kos teljesítménycsökkenést is okozhat)</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation>Név</translation>
</message>
@@ -1360,178 +1315,193 @@ Ez a verzió a következő verzióként került lefordításra: %1.</translation
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation>Verzió</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation>Nyelv</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation>Beépülő</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation>Hozzáadás</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation>Eltávolítás</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation>Információ</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation>Másoló motor tulajdonság szerint:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation>Kliens kapcsolódva</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation>Témák:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation>A témák beépülő betöltése nem lehetséges</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation>Nincs beállítás ehhez a beépülőhöz</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation>Napló írása ide:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation>Tallózás</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation>Szinkronizált napló</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation>Átvitelek írása</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation>Hibák írása</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation>Mappa műveletek írása</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation>A változók: %time%, %source%, %size%, %destination%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation>A változók: %time%, %path%, %size%, %mtime%, %error%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation>A változók: %path%, %operation%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation>Betöltés</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation>Téma betöltése?</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation>Nyelv betöltése?</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation>Ne tegyen semmit</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation>Rákérdezés a forrás mint mappa</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation>Rákérdezés a forrásokra mint fájlok</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation>Soha</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation>Amikor a forrás ugyanaz</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation>Amikor a cél ugyanaz</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation>Amikor a forrás és a cél ugyanaz</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation>Amikor a forrás vagy cél ugyanaz</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation>Mindig</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation>A változók: %1</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation>Napló mentése mint:</translation>
</message>
@@ -1671,7 +1641,7 @@ Ez a verzió a következő verzióként került lefordításra: %1.</translation
<translation>&quot;package&quot; gyökércímke nem található az xml fájlban</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation>Duplikált beépülő található, már be van töltve!</translation>
</message>
@@ -1681,101 +1651,101 @@ Ez a verzió a következő verzióként került lefordításra: %1.</translation
<translation>informations.xml nem található a beépülőhöz</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation>Angol szöveg hiányzik az informations.xml-ből a címkéhez: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation>Címke nem található: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation>A függőségek rész hibás</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation>A(z) %1 függőségek nem megfelelőek a következő beépülőhöz: %2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation>%1 eltávolítása</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation>Biztosan el akarod távolítani &quot;%1&quot;-t a(z) %2 verzióban?</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation>Hiba</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation>Információ</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation>Előző importálás folyamatban van...</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation>Ultracopier beépülő megnyitása</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation>Ultracopier beépülő (*.urc)</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation>Beépülő betöltő</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation>Beéülő megnyitása nem lehetséges: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation>Beépülő tartalmának betöltése nem lehetséges, kérlek ellenőrizd: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation>Mappa létrehozása a beépülő telepítéséhez nem lehetséges:
%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
@@ -1784,16 +1754,16 @@ since:%2</source>
óta:%2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation>Mappa már létezik ilyen néven, beépülő telepítésének kihagyása:
%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation>Beépülő tartalmának betöltése nem lehetséges, kérlek ellenőrizd</translation>
</message>
@@ -1865,24 +1835,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1890,198 +1853,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished">Nem található másoló figyelő. Végezd el manuálisan a másolást a jobb egérgombbal a tálcaikonra kattintva.</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished">Információ</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished">Információ keresése...</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished">Ne cserélje le az Intéző másolását/mozgatását</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished">Az Intéző másolás/mozgatás félig lecserélése</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished">Az Intéző másolás/mozgatás lecserélése</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2089,68 +2037,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2183,323 +2119,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished">Átvitel</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished">KB</translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished">MB</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished">Tallózás</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2507,67 +2363,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished">Hiba</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished">Méret</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished">Cél</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2575,141 +2431,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished">Forrás</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished">Cél</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished">Méret</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Felülírás, ha újabb</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished">Méret</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2717,65 +2585,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished">Forrás</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished">Cél</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished">Kihagyás</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/id/flag.png b/plugins/Languages/id/flag.png
index e3c0f12..e3c0f12 100644..100755
--- a/plugins/Languages/id/flag.png
+++ b/plugins/Languages/id/flag.png
Binary files differ
diff --git a/plugins/Languages/id/informations.xml b/plugins/Languages/id/informations.xml
index b090138..8341a58 100644..100755
--- a/plugins/Languages/id/informations.xml
+++ b/plugins/Languages/id/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to indonesian. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>id</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/id/translation.qm b/plugins/Languages/id/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Languages/id/translation.qm
Binary files differ
diff --git a/plugins/Languages/id/translation.ts b/plugins/Languages/id/translation.ts
index cb636cf..b64f48b 100644..100755
--- a/plugins/Languages/id/translation.ts
+++ b/plugins/Languages/id/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -974,82 +919,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation type="unfinished"></translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1205,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation type="unfinished"></translation>
</message>
@@ -1281,38 +1237,38 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation type="unfinished"></translation>
</message>
@@ -1362,172 +1318,187 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
@@ -1658,33 +1629,33 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
@@ -1704,89 +1675,89 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation type="unfinished"></translation>
</message>
@@ -1858,24 +1829,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1883,198 +1847,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,68 +2031,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2113,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2357,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,141 +2425,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2579,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/it/informations.xml b/plugins/Languages/it/informations.xml
index 3f29549..0c123f0 100644
--- a/plugins/Languages/it/informations.xml
+++ b/plugins/Languages/it/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to italian. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>it</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/it/translation.qm b/plugins/Languages/it/translation.qm
new file mode 100755
index 0000000..b8ab191
--- /dev/null
+++ b/plugins/Languages/it/translation.qm
Binary files differ
diff --git a/plugins/Languages/it/translation.ts b/plugins/Languages/it/translation.ts
index 8517260..af9765d 100644
--- a/plugins/Languages/it/translation.ts
+++ b/plugins/Languages/it/translation.ts
@@ -1,41 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1" language="it" sourcelanguage="en">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished">Non supportato su questa piattaforma</translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
+<TS version="2.1" language="it_IT" sourcelanguage="en">
<context>
<name>CliParser</name>
<message>
@@ -45,12 +10,12 @@
<location filename="../../../CliParser.cpp" line="109"/>
<location filename="../../../CliParser.cpp" line="194"/>
<source>Warning</source>
- <translation>Avviso</translation>
+ <translation>Attenzione</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="86"/>
<source>Problem reading file, or file size is 0</source>
- <translation>Problema di lettura o dimensione nulla del file</translation>
+ <translation>Problema durante la lettura del file o dimensione file nulla</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="174"/>
@@ -62,19 +27,19 @@
<location filename="../../../CliParser.cpp" line="176"/>
<location filename="../../../CliParser.cpp" line="187"/>
<source>To display the options</source>
- <translation>Mostra le opzioni</translation>
+ <translation>Mostrare le opzioni</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="179"/>
<location filename="../../../CliParser.cpp" line="190"/>
<source>To copy sources to destination, separated by space. If destination is &quot;?&quot;, ultracopier will ask the user</source>
- <translation>Copiare i file di origine alla destinazione separati da uno spazio. Se la destinazione è &quot;?&quot;, Ultracopier chiederà all&apos;utente</translation>
+ <translation>Copiare file di origine nella destinazione separati da uno spazio. Se la destinazione è &quot;?&quot; Ultracopier chiederà all&apos;utente</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="180"/>
<location filename="../../../CliParser.cpp" line="191"/>
<source>To move sources to destination, separated by space. If destination is &quot;?&quot;, ultracopier will ask the user</source>
- <translation>Spostare i file di origine alla destinazione separati da uno spazio. Se la destinazione è &quot;?&quot;, Ultracopier chiederà all&apos;utente</translation>
+ <translation>Spostare file di origine nella destinazione separati da uno spazio. Se la destinazione è &quot;?&quot; Ultracopier chiederà all&apos;utente</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="184"/>
@@ -84,28 +49,28 @@
<message>
<location filename="../../../CliParser.cpp" line="99"/>
<source>This file is not supported transfer list</source>
- <translation>Questo file non è supportato dalla lista dei trasferimenti</translation>
+ <translation>Questo file non è supportato dalla lista trasferimenti</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="32"/>
<source>Ultracopier is already running, right click on its system tray icon (near the clock) to use it or just copy and paste</source>
- <translation type="unfinished"></translation>
+ <translation>Ultracopier è già avviato, click destro su icona nell&apos;area di notifica per usarlo oppure copia e incolla semplicemente</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="34"/>
<source>Ultracopier is already running, view all notification area icons (near the clock), right click on its system tray icon to use it or just copy and paste</source>
- <translation type="unfinished"></translation>
+ <translation>Ultracopier è già avviato, controlla tra le icone nell&apos;area di notifica. Click destro sull&apos;icona della barra applicazioni di sistema per usarlo oppure copia e incolla semplicemente</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="109"/>
<source>Unable to open the transfer list file</source>
- <translation>Impossibile aprire il file della lista dei trasferimenti</translation>
+ <translation>Impossibile aprire il file della lista di trasferimento</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="175"/>
<location filename="../../../CliParser.cpp" line="186"/>
<source>To display this help</source>
- <translation>Mostra questo aiuto</translation>
+ <translation>Mostrare questa guida</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="177"/>
@@ -117,117 +82,102 @@
<location filename="../../../CliParser.cpp" line="178"/>
<location filename="../../../CliParser.cpp" line="189"/>
<source>Open transfer list</source>
- <translation>Apri la lista dei trasferimenti</translation>
+ <translation>Aprire lista di trasferimento</translation>
</message>
<message>
<location filename="../../../CliParser.cpp" line="196"/>
<source>Help</source>
- <translation>Aiuto</translation>
+ <translation>Guida</translation>
</message>
</context>
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
- <translation type="unfinished">Cartella di destinazione</translation>
+ <translation type="unfinished">Destinazione</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished">Chiedi</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished">Salta</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished">Rinomina</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished">Sovrascrivi</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
- <translation type="unfinished">Sovrascrivi se più recente</translation>
+ <translation type="unfinished">Sovrascrivere se più recente</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished">Chiedi</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished">Salta</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished">Rinomina</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished">Sovrascrivi</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
- <translation type="unfinished">Sovrascrivi se più recente</translation>
+ <translation type="unfinished">Sovrascrivere se più recente</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,43 +261,43 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
- <translation>Avviso</translation>
+ <translation>Attenzione</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
- <translation type="unfinished"></translation>
+ <translation>Impossibile trovare un motore di copia con supporto allo spostamento</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
- <translation type="unfinished"></translation>
+ <translation>Questo motore di copia non supporta lo spostamento</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
- <translation>Impossibile trovare un motore per la copia compatibile!</translation>
+ <translation>Impossibile trovare un motore di copia compatibile!</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
- <translation>Impossibile trovare un motore per la copia con questo nome: %1</translation>
+ <translation>Impossibile trovare un motore di copia con questo nome: &quot;%1&quot;</translation>
</message>
</context>
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation>Errore</translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation>Errore durante la ricezione della lista di copia/spostamento
@@ -367,100 +307,100 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation>Errore</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
- <translation>Impossibile ottenere un&apos;istanza dal motore per la copia</translation>
+ <translation>Impossibile ottenere un&apos;istanza del motore di copia</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
- <translation>Raggruppa finestre</translation>
+ <translation>Raggruppare finestre</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
- <translation>Vuoi un altro gruppo di trasferimento con un altro trasferimento attualmente avviato?</translation>
+ <translation>Vuoi raggruppare il trasferimento con un altro attualmente avviato?</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
- <translation>Impossibile ottenere un&apos;istanza dal motore per la copia</translation>
+ <translation>Impossibile ottenere un&apos;istanza del motore</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation>L&apos;argomento per la modalità non è valido</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
- <translation>Vuoi copiarlo? se no, verrà spostato.</translation>
+ <translation>Vuoi copiare? Altrimenti verrà spostato</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
- <translation>Impossibile avviare l&apos;interfaccia, copia interrotta</translation>
+ <translation>Impossibile avviare l&apos;interfaccia. Copia abortita</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
- <translation>Impossibile avviare il motore per la copia, copia interrotta</translation>
+ <translation>Impossibile avviare il motore di copia. Copia abortita</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
- <translation>Modalità di trasferimento</translation>
+ <translation>Modalità trasferimento</translation>
</message>
</context>
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -468,258 +408,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
- <translation>Motore per la copia</translation>
+ <translation>Motore di copia</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation>Copia</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation>Sposta</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation>Pausa</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
- <translation>Riprendi</translation>
+ <translation>Ripresa</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation>Salta</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation>Illimitato</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation>s</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation>Troppo grande</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation>B</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation>KB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation>MB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation>GB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation>TB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation>PB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation>EB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation>ZB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation>YB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation>Meno di %10 secondi</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation>Circa %10 secondi rimanenti</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation>Circa %1 minuti rimanenti</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation>Circa %1 ore rimanenti</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation>Trasferisci</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
- <translatorcomment>Uno spostamento</translatorcomment>
<translation>Avvia</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
- <translation>Cartella di origine</translation>
+ <translation>Origine</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation>Dimensione</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
- <translation>Cartella di destinazione</translation>
+ <translation>Destinazione</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation>Esci</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation>Obiettivo</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation>Tempo residuo:</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
- <translation>Elenco</translation>
+ <translation>Elencando</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
- <translation>Copiatura</translation>
+ <translation>Copia</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
- <translation>Elenca e copia</translation>
+ <translation>Elencando e copiando</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation>Rimanente:</translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation>Chiedi</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation>Sovrascrivi</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
- <translation>Sovrascrivi se più recente</translation>
+ <translation>Sovrascrivere se più recente</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
- <translation>Sovrascrivi se sono diverse le date dell&apos;ultima modifica</translation>
+ <translation>Sovrascrivere se le date di ultima modifica sono differenti</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation>Rinomina</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation>Metti in coda alla lista</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation>Completato in %1</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
- <translation>Selezionare la cartella di origine</translation>
+ <translation>Selezionare cartella di origine</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
- <translation>Selezionare la cartella di destinazione</translation>
+ <translation>Selezionare cartella di destinazione</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation>Errore interno</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation>Selezionare uno o più file da aprire</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation>Tutti i file</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
- <translation>Salvare la lista dei trasferimenti</translation>
+ <translation>Salvare lista di trasferimento</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
- <translation>Aprire lista dei trasferimenti</translation>
+ <translation>Aprire lista di trasferimento</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
- <translation>Lista dei trasferimenti</translation>
+ <translation>Lista di trasferimento</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation>Errore</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation>Non supportato su questa piattaforma</translation>
</message>
@@ -727,12 +671,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -740,22 +684,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished">Errore</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -763,22 +707,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished">Errore</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -786,77 +730,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -864,60 +808,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -925,27 +869,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished">Errore</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -953,7 +897,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation>Informazioni su Ultracopier</translation>
</message>
@@ -962,7 +906,7 @@
<source>Based on Qt. Advanced utility to copy files under GPL3 license.
This version is compiled as version: %1.</source>
<extracomment>%1 will be replaced by a variable content (normal, debug, ...)</extracomment>
- <translatorcomment>%1 sarà rimpiazzata da una variabile content (normale, debug, ...)</translatorcomment>
+ <translatorcomment>%1 sarà rimpiazzato da un contenuto variabile (normale, debug, ...)</translatorcomment>
<translation>Utility avanzata sotto licenza GPL3 per la copia dei file basata su Qt.
Compilata come versione: %1.</translation>
</message>
@@ -970,92 +914,87 @@ Compilata come versione: %1.</translation>
<location filename="../../../HelpDialog.ui" line="85"/>
<source>Platform: %1</source>
<extracomment>%1 will be replaced by the platform (windows, mac, linux, ...)</extracomment>
- <translatorcomment>%1 sarà rimpiazzata dalla piattaforma (Windows, Mac, Linux, ...)</translatorcomment>
+ <translatorcomment>%1 sarà rimpiazzato dalla piattaforma (Windows, Mac, Linux, ...)</translatorcomment>
<translation>Piattaforma: %1</translation>
</message>
<message>
<location filename="../../../HelpDialog.ui" line="92"/>
<source>Author: BRULE Herman Jacques Roger (alpha_one_x86), company: &lt;a href=&quot;http://www.confiared.com/&quot;&gt;confiared&lt;/a&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>Autore: BRULE Herman Jacques Roger (alpha_one_x86), azienda: &lt;a href=&quot;http://www.confiared.com/&quot;&gt;confiared&lt;/a&gt; </translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation>Informazioni su Qt</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
- <translation type="unfinished"></translation>
+ <translation>Controllare aggiornamenti</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation>Si è verificato un crash</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
- <translation>Salva il bug</translation>
+ <translation>Salva rapporto bug</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation>Chiudi</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
- <translation>Su http://portableapps.com/</translation>
+ <translation>Per http://portableapps.com</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation>Versione portatile e pluricomprensiva</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation>Versione portatile</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation>Versione pluricomprensiva</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation>Versione normale</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
- <translatorcomment>Questo dovrebbe essere il sito ufficiale di Ultracopier in italiano</translatorcomment>
- <translation>http://ultracopier-it.first-world.info/</translation>
+ <translatorcomment>Questo dovrebbe essere il sito ufficiale di Ultracopier</translatorcomment>
+ <translation>http://ultracopier-it.first-world.info</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
- <translation type="unfinished"></translation>
+ <translation>Controllo aggiornamenti...</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Aggiornamento: %1</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
- <translation type="unfinished"></translation>
+ <translation>Nessun aggiornamento disponibile</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation>http://ultracopier.first-world.info/download.html</translation>
</message>
@@ -1063,56 +1002,56 @@ Compilata come versione: %1.</translation>
<location filename="../../../HelpDialog.ui" line="75"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;For more information see the website &lt;a href=&quot;%1&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0057ae;&quot;&gt;%1&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%1 will be remplaced by the website into the corresponding languages</extracomment>
- <translatorcomment>%1 sarà rimpiazzato dal sito italiano</translatorcomment>
+ <translatorcomment>%1 sarà rimpiazzato dal sito in lingua corrispondente</translatorcomment>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Per ulteriori informazioni consultare il sito &lt;a href=&quot;%1&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0057ae;&quot;&gt;%1&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
</context>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1128,12 +1067,12 @@ Compilata come versione: %1.</translation>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
- <translation>Avviso</translation>
+ <translation>Attenzione</translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation>Tempo scaduto durante la ricomposizione dei dati dai client collegati</translation>
</message>
@@ -1150,90 +1089,106 @@ Compilata come versione: %1.</translation>
<message>
<location filename="../../../LogThread.cpp" line="107"/>
<source>Log file already open, error: %1</source>
- <translation>File log già aperto, errore: %1</translation>
+ <translation>File log già aperto, errore %1</translation>
</message>
<message>
<location filename="../../../LogThread.cpp" line="116"/>
<location filename="../../../LogThread.cpp" line="126"/>
<source>Unable to open the log file, error: %1</source>
- <translation>Impossibile aprire il file di log, errore: %1</translation>
+ <translation>Impossibile aprire il file di log, errore %1</translation>
</message>
</context>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
<message>
<location filename="../../../OSSpecific.ui" line="26"/>
<source>Warning</source>
- <translation>Avviso</translation>
+ <translation>Attenzione</translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation>Classic</translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation>Modern</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
- <translation>Non visualizzare più questo messaggio</translation>
+ <translation>Non visualizzare di nuovo</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation>Ok</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
- <translation>Il ripristino del sistema predefinito di copia/spostamento non è supportato dal file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Chiedere supporto allo sviluppatore.&lt;br /&gt;Bisogna fare la copia/spostamento manuale.</translation>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <translation>Il rimpiazzo del sistema di copia e spostamento predefinito non è supportato dal file manager (Dolphin, Nautilus, ...)&lt;br /&gt;Chiedere allo sviluppatore del vostro file manager di supportarlo.&lt;br /&gt;Dovete copiare/spostare manualmente.</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
- <translation>Riavviare il sistema, se in precedenza avevi installato un software simile a questo (come Teracopy, Supercopier o una versione precedente di Ultracopier).</translation>
+ <translation>Riavviare il sistema, se in precedenza avevate installato un software simile a questo (Teracopy, Supercopier o una versione precedente di Ultracopier)</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
- <translation>Il ripristino del sistema predefinito di copia/spostamento non è supportato, quindi viene bloccato dal finder of Mac OS X.&lt;br /&gt;Chiedere supporto allo sviluppatore.&lt;br /&gt;Sarà possibile la copia/spostamento manuale cliccando col tasto destro del mouse sull&apos;icona della barra di sistema vicina all&apos;orologio (non l&apos;icona dock).</translation>
+ <translation>Il rimpiazzo del sistema di copia e spostamento predefinito non è supportato, quindi viene bloccato dal finder di Mac OS X.&lt;br /&gt;Chiedere supporto allo sviluppatore.&lt;br /&gt;Sarà possibile copiare/spostare manualmente cliccando col tasto destro del mouse sull&apos;icona della barra applicazioni di sistema</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
- <translation>Il ripristino del sistema predefinito di copia/spostamento potrebbe non essere supportato dal file manager.&lt;br /&gt;Chiedere supporto allo sviluppatore.&lt;br /&gt;Bisogna fare la copia/spostamento manuale.</translation>
+ <translation>Il rimpiazzo del sistema di copia e spostamento predefinito potrebbe non essere supportato dal file manager.&lt;br /&gt;Chiedere supporto allo sviluppatore.&lt;br /&gt;Necessario usare copia/spostamento manuale</translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
- <translation type="unfinished"></translation>
+ <translation>Considerate Supercopier deprecato, favorite Ultracopier</translation>
</message>
</context>
<context>
@@ -1252,18 +1207,18 @@ Compilata come versione: %1.</translation>
<message>
<location filename="../../../OptionDialog.ui" line="70"/>
<source>Plugins</source>
- <translation>I plug-in</translation>
+ <translation>Plug-in</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
- <translation>Motore per la copia</translation>
+ <translation>Motore di copia</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation>Temi</translation>
</message>
@@ -1280,267 +1235,282 @@ Compilata come versione: %1.</translation>
<message>
<location filename="../../../OptionDialog.ui" line="289"/>
<source>Portable (need restart)</source>
- <translation type="unfinished"></translation>
+ <translation>Portatile (necessita riavvio)</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation>Nome</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation>Versione</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation>Lingua</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation>Rilevatore</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
- <translation>Caricatore di plug-in</translation>
+ <translation>Caricatore dei plug-in</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation>Caricatore di sessione</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="126"/>
<source>Force the language</source>
- <translation>Utilizza la lingua</translation>
+ <translation>Forzare lingua</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="136"/>
<source>Replace the default copy and move system</source>
- <translation>Ripristina il sistema di copia e spostamento predefinito</translation>
+ <translation>Rimpiazzare sistema di copia e spostamento predefinito</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="150"/>
<source>Load at the session loading</source>
- <translation>Carica il programma all&apos;avvio di sistema</translation>
+ <translation>Caricare il programma all&apos;avvio di sistema</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="164"/>
<source>When manual open</source>
- <translation>Se avviato manualmente</translation>
+ <translation>Con avvio manuale</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="190"/>
<source>Group the windows when</source>
- <translation>Quando raggruppare le finestre</translation>
+ <translation>Raggruppare finestre quando</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="231"/>
<source>Confirm to group the windows</source>
- <translation>Conferma il raggruppamento delle finestre</translation>
+ <translation>Conferma raggruppamento finestre</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="241"/>
<source>Display the OS warning</source>
- <translation>Mostra l&apos;avviso del Sistema Operativo</translation>
+ <translation>Mostrare avviso del Sistema Operativo</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="261"/>
<source>Remaining time algorithm</source>
- <translation type="unfinished"></translation>
+ <translation>Algoritmo tempo rimanente</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="269"/>
<source>Traditional</source>
- <translation type="unfinished"></translation>
+ <translation>Tradizionale</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="274"/>
<source>Logarithmic</source>
- <translation type="unfinished"></translation>
+ <translation>Logaritmico</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation>Predefinito: finish.opus</translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation>Riproduci</translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation>Suono al completamento</translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation>Plug-in</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation>Aggiungi</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation>Elimina</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation>Informazioni</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
- <translation>Motore per la copia in ordine di preferenza:</translation>
+ <translation>Motore di copia in ordine di preferenza:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation>Client connessi</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation>Temi:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation>Impossibile caricare il plug-in dei temi</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
- <translation>Non ci sono opzioni per questo plug-in</translation>
+ <translation>Nessuna opzione per questo plug-in</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation>Sfoglia</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation>Scrivere i trasferimenti</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation>Scrivere le operazioni di cartella</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translatorcomment>%time%, %source%, %size%, %destination% non dovranno essere tradotti</translatorcomment>
- <translation>Le variabili sono %time%, %source%, %size%, %destination%</translation>
+ <translation>Le variabili sono: %time%, %source%, %size%, %destination%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation>Scrivere gli errori</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translatorcomment>%time%, %path%, %size%, %mtime%, %error% non dovranno essere tradotti</translatorcomment>
- <translation>Le variabili sono %time%, %path%, %size%, %mtime%, %error%</translation>
+ <translation>Le variabili sono: %time%, %path%, %size%, %mtime%, %error%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation>Scrivere il file di log in:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
- <translation>Scrivere direttamente il file quando si riceve una nuova voce (può causare il 50% di perdita di prestazioni)</translation>
+ <translation>Scrivere direttamente nel file quando si riceve una nuova voce (può causare il 50% di perdita di prestazioni)</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation>Carica</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
- <translation>Caricare i temi?</translation>
+ <translation>Caricare il tema?</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation>Caricare questa lingua?</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation>Non fare nulla</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
- <translation>Chiedere la cartella di origine</translation>
+ <translation>Chiedi cartella come origine</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
- <translation>Chiedere i file di origine</translation>
+ <translation>Chiedi file come origine</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation>Mai</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
- <translation>Quando la cartella di origine è uguale</translation>
+ <translation>Quando l&apos;origine è identica</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
- <translation>Quando la cartella di destinazione è uguale</translation>
+ <translation>Quando la destinazione è identica</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
- <translation>Quando sia le cartelle di origine che di destinazione sono uguali</translation>
+ <translation>Quando sia lorigine che la destinazione sono identiche</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
- <translation>Quando le cartelle di origine o di destinazione coincidono</translation>
+ <translation>Quando l&apos;origine o la destinazione sono identiche</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation>Sempre</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
- <translation>Le variabili sono %1</translation>
+ <translation>Le variabili sono: %1</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
- <translation>Salvare i log come: </translation>
+ <translation>Salva i log come: </translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation>Log sincronizzato</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translatorcomment>%path% e %operation%, non dovranno essere tradotti</translatorcomment>
- <translation>Le variabili sono %path%, %operation%</translation>
+ <translation>Le variabili sono: %path%, %operation%</translation>
</message>
</context>
<context>
@@ -1612,7 +1582,7 @@ Compilata come versione: %1.</translation>
<message>
<location filename="../../../PluginInformation.cpp" line="39"/>
<source>Copy engine</source>
- <translation>Motore per la copia</translation>
+ <translation>Motore di copia</translation>
</message>
<message>
<location filename="../../../PluginInformation.cpp" line="41"/>
@@ -1668,33 +1638,33 @@ Compilata come versione: %1.</translation>
<translation>informations.xml non è accessibile</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation>Alcune dipendenze non sono idonee</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
- <translation>Le dipendenze %1 per il plug-in: %2, non sono soddisfatte</translation>
+ <translation>Le dipendenze %1 per il plug-in %2 non sono soddisfatte</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
- <translation>Elimina %1</translation>
+ <translation>Eliminare %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation>Errore</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
- <translation type="unfinished"></translation>
+ <translation>Errore nella rimozione del plug-in, Si prega di controllare i diritti sulla cartella &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation>Informazioni</translation>
</message>
@@ -1706,101 +1676,97 @@ Compilata come versione: %1.</translation>
<message>
<location filename="../../../PluginsManager.cpp" line="231"/>
<source>informations.xml not found for the plugin</source>
- <translation>informations.xml non trovato per il plug-in</translation>
+ <translation>informations.xml non rilevato per il plug-in</translation>
</message>
<message>
<location filename="../../../PluginsManager.cpp" line="265"/>
<source>&quot;package&quot; root tag not found for the xml file</source>
- <translation>Tag root &quot;package&quot; non trovato nel file xml</translation>
+ <translation>Tag root &quot;Package&quot; non rilevato nel file xml</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
- <translation>Trovato plug-in duplicato, già caricato!</translation>
+ <translation>Rilevato plug-in duplicato. Già caricato!</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
- <translation>Testo in inglese mancante in informations.xml per il tag: %1</translation>
+ <translation>Testo inglese mancante in informations.xml per il tag %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation>Tag non trovato: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation>Si desidera eliminare &quot;%1&quot; nella versione %2?</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation>Importazione precedente in corso ...</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation>Apri plug-in di Ultracopier</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation>Plug-in di Ultracopier (*.urc)</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation>Caricatore di plug-in</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
- <translation>Impossibile aprire il plug-in: %1</translation>
+ <translation>Impossibile aprire il plug-in &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
- <translation>Impossibile caricare il contenuto del plug-in, si prega di controllare: %1</translation>
+ <translation>Impossibile caricare il contenuto del plug-in, si prega di controllare: &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
- <translation>Impossibile creare una cartella per installare il plug-in:
-%1</translation>
+ <translation>Impossibile creare una cartella per installare il plug-in %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
- <translation>Impossibile creare un file per installare il plug-in:
-%1
-da: %2</translation>
+ <translation>Impossibile creare un file per installare il plug-in %1 da %2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
- <translation>E&apos; presente una cartella con lo stesso nome, non sarà installato il plug-in:
-%1</translation>
+ <translation>Presente cartella con identico nome, non sarà installato il plug-in &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation>Impossibile caricare il contenuto del plug-in, si prega di controllare</translation>
</message>
@@ -1811,17 +1777,17 @@ da: %2</translation>
<location filename="../../../ProductKey.ui" line="14"/>
<location filename="../../../ProductKey.ui" line="24"/>
<source>Product key</source>
- <translation type="unfinished"></translation>
+ <translation>Chiave prodotto</translation>
</message>
<message>
<location filename="../../../ProductKey.cpp" line="56"/>
<source>Error</source>
- <translation type="unfinished">Errore</translation>
+ <translation>Errore</translation>
</message>
<message>
<location filename="../../../ProductKey.cpp" line="56"/>
<source>Your product key was rejected.&lt;br /&gt;If you buy key, unmark check your spam and unmark the mail as spam&lt;br /&gt;If you have not buy your key, go to &lt;a href=&quot;https://shop.first-world.info/&quot;&gt;https://shop.first-world.info/&lt;/a&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>La vostra chiave prodotto è stata rigettata.&lt;br /&gt;Se avete comprato la chiave controllare la cartella spam della vostra casella email.&lt;br /&gt;Se non avete comprato la chiave, andare su &lt;a href=&quot;https://shop.first-world.info/&quot;&gt;https://shop.first-world.info/&lt;/a&gt;</translation>
</message>
</context>
<context>
@@ -1851,7 +1817,7 @@ da: %2</translation>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="105"/>
<source>Unsupported options in the .xz headers</source>
- <translation>Opzioni non supportate nelle intestazioni .xz</translation>
+ <translation>Opzioni non supportate nelle intestazioni del file .xz</translation>
</message>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="110"/>
@@ -1866,30 +1832,23 @@ da: %2</translation>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="124"/>
<source>The input data is too short</source>
- <translation>I dati inseriti sono troppo pochi</translation>
+ <translation>I dati inseriti sono troppo corti</translation>
</message>
</context>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1897,267 +1856,240 @@ da: %2</translation>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
- <translation>Nessuna copia del rilevatore trovata. Fare una copia manualmente cliccando col tasto destro del mouse sull&apos;icona nella barra di sistema.</translation>
+ <translation>Nessun rilevatore di copia trovato. Fare una copia manualmente cliccando col tasto destro del mouse sull&apos;icona nell&apos;area di notifica</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation>Informazioni</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
- <translation>Ricerca informazioni...</translation>
+ <translation>Cercando informazioni...</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
- <translation>Non ripristinare la copia/spostamento di Windows explorer</translation>
+ <translation>Non rimpiazzare il sistema di copia/spostamento di Windows Explorer</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
- <translation>Ripristinare parzialmente la copia/spostamento di Windows explorer</translation>
+ <translation>Rimpiazza parzialmente il sistema di copia/spostamento di Windows Explorer</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
- <translation>Ripristina la copia/spostamento di Windows explorer</translation>
+ <translation>Rimpiazza il sistema di copia/spostamento di Windows Explorer</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
- <translation type="unfinished">Avviso</translation>
+ <translation>Attenzione</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
- <translation type="unfinished"></translation>
+ <translation>Azione su icona dell&apos;area di notifica sconosciuta!</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
- <translation type="unfinished"></translation>
+ <translation>Rapporto di debug/informazioni</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
- <translation type="unfinished"></translation>
+ <translation>Al riguardo</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
- <translation type="unfinished"></translation>
+ <translation>Salva rapporto bug</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
- <translation type="unfinished"></translation>
+ <translation>Uscire</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
- <translation type="unfinished"></translation>
+ <translation>Opzioni</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
- <translation type="unfinished"></translation>
+ <translation>Chiave prodotto</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Nuova versione: %1</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
- <translation type="unfinished"></translation>
+ <translation>Vai alla pagina di scaricamento:</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
- <translation type="unfinished"></translation>
+ <translation>Aggiungi copia/spostamento</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
- <translation type="unfinished"></translation>
+ <translation>Aggiungi copia</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
- <translation type="unfinished"></translation>
+ <translation>Aggiungi trasferimento</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
- <translation type="unfinished"></translation>
+ <translation>Aggiungi spostamento</translation>
</message>
</context>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2190,323 +2122,243 @@ da: %2</translation>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished">Trasferisci</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished">KB</translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished">MB</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished">Sfoglia</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2514,67 +2366,67 @@ da: %2</translation>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished">Errore</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished">Dimensione</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
- <translation type="unfinished">Cartella di destinazione</translation>
+ <translation type="unfinished">Destinazione</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2582,141 +2434,153 @@ da: %2</translation>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
- <translation type="unfinished">Cartella di origine</translation>
+ <translation type="unfinished">Origine</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
- <translation type="unfinished">Cartella di destinazione</translation>
+ <translation type="unfinished">Destinazione</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished">Dimensione</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
- <translation type="unfinished">Sovrascrivi se più recente</translation>
+ <translation type="unfinished">Sovrascrivere se più recente</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished">Dimensione</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2724,65 +2588,65 @@ da: %2</translation>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
- <translation type="unfinished">Cartella di origine</translation>
+ <translation type="unfinished">Origine</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
- <translation type="unfinished">Cartella di destinazione</translation>
+ <translation type="unfinished">Destinazione</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished">Salta</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2832,7 +2696,7 @@ da: %2</translation>
<message>
<location filename="../../Themes/Oxygen/interface.ui" line="329"/>
<source>Transfer list</source>
- <translation type="unfinished">Lista dei trasferimenti</translation>
+ <translation type="unfinished">Lista di trasferimento</translation>
</message>
<message>
<location filename="../../Themes/Oxygen/interface.ui" line="352"/>
@@ -2903,12 +2767,12 @@ da: %2</translation>
<message>
<location filename="../../Themes/Oxygen/interface.ui" line="722"/>
<source>Source</source>
- <translation type="unfinished">Cartella di origine</translation>
+ <translation type="unfinished">Origine</translation>
</message>
<message>
<location filename="../../Themes/Oxygen/interface.ui" line="727"/>
<source>Destination</source>
- <translation type="unfinished">Cartella di destinazione</translation>
+ <translation type="unfinished">Destinazione</translation>
</message>
<message>
<location filename="../../Themes/Oxygen/interface.ui" line="741"/>
diff --git a/plugins/Languages/ja/flag.png b/plugins/Languages/ja/flag.png
index 5ac331e..5ac331e 100644..100755
--- a/plugins/Languages/ja/flag.png
+++ b/plugins/Languages/ja/flag.png
Binary files differ
diff --git a/plugins/Languages/ja/informations.xml b/plugins/Languages/ja/informations.xml
index d54bd12..7eccb7e 100644..100755
--- a/plugins/Languages/ja/informations.xml
+++ b/plugins/Languages/ja/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to japanese. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>jp</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/ja/translation.qm b/plugins/Languages/ja/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Languages/ja/translation.qm
Binary files differ
diff --git a/plugins/Languages/ja/translation.ts b/plugins/Languages/ja/translation.ts
index bce88f7..a36d3a5 100644..100755
--- a/plugins/Languages/ja/translation.ts
+++ b/plugins/Languages/ja/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -980,82 +925,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation type="unfinished"></translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1205,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation type="unfinished"></translation>
</message>
@@ -1271,54 +1227,54 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation type="unfinished"></translation>
</message>
@@ -1378,157 +1334,172 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation type="unfinished"></translation>
</message>
@@ -1658,33 +1629,33 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
@@ -1704,89 +1675,89 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation type="unfinished"></translation>
</message>
@@ -1858,24 +1829,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1883,198 +1847,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,68 +2031,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2113,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2357,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,141 +2425,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2579,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/ko/flag.png b/plugins/Languages/ko/flag.png
index 1dfaf96..1dfaf96 100644..100755
--- a/plugins/Languages/ko/flag.png
+++ b/plugins/Languages/ko/flag.png
Binary files differ
diff --git a/plugins/Languages/ko/informations.xml b/plugins/Languages/ko/informations.xml
index b101bc7..ca7bdf8 100644..100755
--- a/plugins/Languages/ko/informations.xml
+++ b/plugins/Languages/ko/informations.xml
@@ -13,7 +13,7 @@
<description xml:lang="en"><![CDATA[File to define all English language related, Ultracopier is written in English, then not translation file needed]]></description>
<description xml:lang="ko"><![CDATA[Ultracopier의 한국어 번역입니다. 더 나은 번역이나 오타, 오역에 대한 제보는 이메일로 연락해주시면 감사하겠습니다.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>ko</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/ko/translation.qm b/plugins/Languages/ko/translation.qm
new file mode 100755
index 0000000..d35f3f2
--- /dev/null
+++ b/plugins/Languages/ko/translation.qm
Binary files differ
diff --git a/plugins/Languages/ko/translation.ts b/plugins/Languages/ko/translation.ts
index 7199299..bd3227f 100644..100755
--- a/plugins/Languages/ko/translation.ts
+++ b/plugins/Languages/ko/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1" language="ko_KR">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished">건너뛰기</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished">건너뛰기</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation>알림</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation>호환되는 엔진을 찾을 수 없습니다!</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished">오류</translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation>오류</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation>인터페이스를 불러올 수 없음, 복사가 취소되었습니다</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation>복사 엔진을 불러올 수 없음, 복사가 취소되었습니다</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation>복사 엔진</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation>복사</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation>이동</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation>일시 중지</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation>다시 시작</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation>건너뛰기</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation>무제한</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation>초</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation>너무 큽니다</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation>B</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation>KB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation>MB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation>GB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation>TB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation>PB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation>EB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation>ZB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation>YB</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished">오류</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished">오류</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished">오류</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished">오류</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -980,82 +925,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation>Qt에 대해</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation>충돌 발생시</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation>버그 보고서 저장</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation>닫기</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation>http://portableapps.com을 위해</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation>포터블 버전</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation>일반 버전</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation>http://ultracopier.first-world.info/</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation>알림</translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation>연결된 클라이언트로부터 데이터를 재구성하는 동안에 시간이 초과되었습니다</translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation type="unfinished">알림</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1205,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation>복사 엔진</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation>테마</translation>
</message>
@@ -1281,54 +1237,54 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation>이름</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation>버전</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation>언어</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation>리스너</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation>플러그인 로더</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation>섹션 로더</translation>
</message>
@@ -1378,157 +1334,172 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation>플러그인</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation>추가</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation>제거</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation>정보</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation>복사 엔진 순서 환경 설정:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation>테마:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation>테마 플러그인을 불러올 수 없습니다</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation>이 플러그인에 대한 옵션이 없습니다</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation>찾아보기</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation>변수는 %time%, %source%, %size%, %destination% 입니다</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation>변수는 %time%, %path%, %size%, %mtime%, %error% 입니다</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation>로그 파일 작성:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation>로그 따로 저장:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation>로그 동기화됨</translation>
</message>
@@ -1658,33 +1629,33 @@ This version is compiled as version: %1.</source>
<translation>informations.xml 파일에 연결할 수 없습니다</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation>종속된 부분이 잘못되었습니다</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation>플러그인 %2에 대한 %1 종속성이 충족되지 않습니다</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation>%1 제거</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation>오류</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation>정보</translation>
</message>
@@ -1704,75 +1675,75 @@ This version is compiled as version: %1.</source>
<translation>xml 파일을 위한 &quot;패키지&quot; 루트 태그를 찾을 수 없습니다</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation>중복된 플러그인 발견, 이미 호출되었습니다!</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation>태그를 찾을 수 없음: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation>%2 버전에서 %1을 제거하시겠습니까?</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation>이전의 가져오기가 진행중입니다...</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation>Ultracopier 플러그인 열기</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation>Ultracopier (*.urc)</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation>플러그인 로더</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation>플러그인 열기 불가: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation>플러그인 내용을 불러올 수 없습니다. 확인해주십시오: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation>플러그인을 설치할 폴더를 생성할 수 없음:
%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
@@ -1781,16 +1752,16 @@ since:%2</source>
since:%2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation>동일한 이름의 폴더가 존재합니다. 플러그인 설치 건너뛰기:
%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation>플러그인 컨태츠를 불러올 수 없습니다. 확인해주십시오</translation>
</message>
@@ -1862,24 +1833,17 @@ since:%2</translation>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1887,198 +1851,183 @@ since:%2</translation>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished">복사 리스너를 찾을 수 없습니다. 트레이 아이콘에서 우클릭하여 수동으로 복사하십시오.</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished">정보</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished">정보 검색중...</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished">알림</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2086,68 +2035,56 @@ since:%2</translation>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2180,323 +2117,243 @@ since:%2</translation>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished">KB</translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished">MB</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished">찾아보기</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2504,67 +2361,67 @@ since:%2</translation>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished">오류</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2572,141 +2429,153 @@ since:%2</translation>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2714,65 +2583,65 @@ since:%2</translation>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished">건너뛰기</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/nl/flag.png b/plugins/Languages/nl/flag.png
index 0d00e1a..0d00e1a 100644..100755
--- a/plugins/Languages/nl/flag.png
+++ b/plugins/Languages/nl/flag.png
Binary files differ
diff --git a/plugins/Languages/nl/informations.xml b/plugins/Languages/nl/informations.xml
index 98c307a..9b84641 100644..100755
--- a/plugins/Languages/nl/informations.xml
+++ b/plugins/Languages/nl/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to dutch. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>nl</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/nl/translation.qm b/plugins/Languages/nl/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Languages/nl/translation.qm
Binary files differ
diff --git a/plugins/Languages/nl/translation.ts b/plugins/Languages/nl/translation.ts
index cb636cf..b64f48b 100644..100755
--- a/plugins/Languages/nl/translation.ts
+++ b/plugins/Languages/nl/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -974,82 +919,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation type="unfinished"></translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1205,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation type="unfinished"></translation>
</message>
@@ -1281,38 +1237,38 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation type="unfinished"></translation>
</message>
@@ -1362,172 +1318,187 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
@@ -1658,33 +1629,33 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
@@ -1704,89 +1675,89 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation type="unfinished"></translation>
</message>
@@ -1858,24 +1829,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1883,198 +1847,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,68 +2031,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2113,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2357,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,141 +2425,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2579,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/no/flag.png b/plugins/Languages/no/flag.png
index 16ec28a..16ec28a 100644..100755
--- a/plugins/Languages/no/flag.png
+++ b/plugins/Languages/no/flag.png
Binary files differ
diff --git a/plugins/Languages/no/informations.xml b/plugins/Languages/no/informations.xml
index 6e7ecff..d6b2bb2 100644..100755
--- a/plugins/Languages/no/informations.xml
+++ b/plugins/Languages/no/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to norwegian. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>no</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/no/translation.qm b/plugins/Languages/no/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Languages/no/translation.qm
Binary files differ
diff --git a/plugins/Languages/no/translation.ts b/plugins/Languages/no/translation.ts
index cb636cf..b64f48b 100644..100755
--- a/plugins/Languages/no/translation.ts
+++ b/plugins/Languages/no/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -974,82 +919,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation type="unfinished"></translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1205,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation type="unfinished"></translation>
</message>
@@ -1281,38 +1237,38 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation type="unfinished"></translation>
</message>
@@ -1362,172 +1318,187 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
@@ -1658,33 +1629,33 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
@@ -1704,89 +1675,89 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation type="unfinished"></translation>
</message>
@@ -1858,24 +1829,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1883,198 +1847,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,68 +2031,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2113,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2357,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,141 +2425,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2579,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/pl/flag.png b/plugins/Languages/pl/flag.png
index 439ee97..439ee97 100644..100755
--- a/plugins/Languages/pl/flag.png
+++ b/plugins/Languages/pl/flag.png
Binary files differ
diff --git a/plugins/Languages/pl/informations.xml b/plugins/Languages/pl/informations.xml
index 0afef03..3d0dbd0 100644..100755
--- a/plugins/Languages/pl/informations.xml
+++ b/plugins/Languages/pl/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to polish. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>pl</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/pl/translation.qm b/plugins/Languages/pl/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Languages/pl/translation.qm
Binary files differ
diff --git a/plugins/Languages/pl/translation.ts b/plugins/Languages/pl/translation.ts
index cb636cf..b64f48b 100644..100755
--- a/plugins/Languages/pl/translation.ts
+++ b/plugins/Languages/pl/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -974,82 +919,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation type="unfinished"></translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1205,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation type="unfinished"></translation>
</message>
@@ -1281,38 +1237,38 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation type="unfinished"></translation>
</message>
@@ -1362,172 +1318,187 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
@@ -1658,33 +1629,33 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
@@ -1704,89 +1675,89 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation type="unfinished"></translation>
</message>
@@ -1858,24 +1829,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1883,198 +1847,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,68 +2031,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2113,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2357,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,141 +2425,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2579,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/pt/flag.png b/plugins/Languages/pt/flag.png
index 3fb1e36..3fb1e36 100644..100755
--- a/plugins/Languages/pt/flag.png
+++ b/plugins/Languages/pt/flag.png
Binary files differ
diff --git a/plugins/Languages/pt/informations.xml b/plugins/Languages/pt/informations.xml
index eb40152..a1ba519 100644..100755
--- a/plugins/Languages/pt/informations.xml
+++ b/plugins/Languages/pt/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to portuguese. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>pt</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/pt/translation.qm b/plugins/Languages/pt/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Languages/pt/translation.qm
Binary files differ
diff --git a/plugins/Languages/pt/translation.ts b/plugins/Languages/pt/translation.ts
index cb636cf..b64f48b 100644..100755
--- a/plugins/Languages/pt/translation.ts
+++ b/plugins/Languages/pt/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -974,82 +919,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation type="unfinished"></translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1205,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation type="unfinished"></translation>
</message>
@@ -1281,38 +1237,38 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation type="unfinished"></translation>
</message>
@@ -1362,172 +1318,187 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
@@ -1658,33 +1629,33 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
@@ -1704,89 +1675,89 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation type="unfinished"></translation>
</message>
@@ -1858,24 +1829,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1883,198 +1847,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,68 +2031,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2113,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2357,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,141 +2425,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2579,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/ru/flag.png b/plugins/Languages/ru/flag.png
index 583e627..583e627 100644..100755
--- a/plugins/Languages/ru/flag.png
+++ b/plugins/Languages/ru/flag.png
Binary files differ
diff --git a/plugins/Languages/ru/informations.xml b/plugins/Languages/ru/informations.xml
index f34d54e..f2adff0 100644..100755
--- a/plugins/Languages/ru/informations.xml
+++ b/plugins/Languages/ru/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to russian. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>ru</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/ru/translation.qm b/plugins/Languages/ru/translation.qm
new file mode 100755
index 0000000..340a846
--- /dev/null
+++ b/plugins/Languages/ru/translation.qm
Binary files differ
diff --git a/plugins/Languages/ru/translation.ts b/plugins/Languages/ru/translation.ts
index 6bc6e2d..fb0fb51 100644..100755
--- a/plugins/Languages/ru/translation.ts
+++ b/plugins/Languages/ru/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1" language="ru" sourcelanguage="en">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished">Не поддерживается на этой платформе</translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished">назначение</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished">просить</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished">пропускать</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished">переименовать</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished">переписывать</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Заменить, если новее</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished">просить</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished">пропускать</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished">переименовать</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished">переписывать</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Заменить, если новее</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation>Предупреждение</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation>Не могу найти любой совместимый двигатель!</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation>Не могу найти любой двигатель с таким именем: %1</translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished">ошибка</translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation>ошибка</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation>Не удалось получить экземпляр копии двигателей</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation>Не удалось загрузить интерфейс, копирование прервана</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation>Не удается загрузить копию двигателя, скопируйте прервана</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation>режим передачи</translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation>Копировать двигатель</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation>копия</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation>двигаться</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation>пауза</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation>резюме</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation>пропускать</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation>неограниченный</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation>Слишком большой</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation>Менее %10 секунд</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation>О %10 секунды осталось</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation>О %1 минуты до конца</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation>О %1 часов, оставшихся</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation>источник</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation>размер</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation>назначение</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation>выход</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation>цель</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation>Оставшееся время:</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation>список</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation>копирование</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation>Листинг и копирования</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation>просить</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation>переписывать</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation>Заменить, если новее</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation>Заменить, если последняя даты модификации отличаются</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation>переименовать</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation>Выберите исходный каталог</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation>Выберите папку назначения</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation>Внутренняя ошибка</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation>Выберите один или более файлов, чтобы открыть</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation>Все файлы</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation>Сохранить трансфер</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation>Откройте трансфер</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation>Передача списка</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation>ошибка</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation>Не поддерживается на этой платформе</translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished">ошибка</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished">ошибка</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished">ошибка</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -974,82 +919,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation>О Qt</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation>У аварии</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation>Сохранить отчет об ошибке</translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation>закрывать</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation>для http://portableapps.com/</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation>Портативная версия</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation>Нормальная версия</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation>Предупреждение</translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation>Тайм-аут в то время как композицию кадра данных из подключенных клиентов</translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation type="unfinished">Предупреждение</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1205,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation>Копировать двигатель</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation>Темы</translation>
</message>
@@ -1281,38 +1237,38 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation>имя</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation>версия</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation>язык</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation>слушатель</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation>плагин погрузчика</translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation>сессия погрузчика</translation>
</message>
@@ -1362,172 +1318,187 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation>плагин</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation>добавлять</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation>удаление</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation>информация</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation>Скопируйте двигателя порядке предпочтения:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation>Темы:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation>Не удается загрузить плагин темы</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation>просматривать</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation>Переменные are %time%, %source%, %size%, %destination%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation>Переменные %time%, %path%, %size%, %mtime%, %error%</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation>Запись в файл журнала:</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation>ничего не делать</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation>Спросите источника папку</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation>Спросите источников в виде файлов</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation>никогда</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation>Когда же источник</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation>Когда же назначения</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation>Когда источника и назначения те же</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation>Когда источника или назначения те же</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation>всегда</translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation>Сохранить журналы, как: </translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation>Синхронное журнала</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation>Нет опции для этого плагина</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation>Переменные %path%, %operation%</translation>
@@ -1658,33 +1629,33 @@ This version is compiled as version: %1.</source>
<translation>informations.xml не доступен</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation>Зависимости часть неправильно</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation>Зависимости %1 не выполняется, для плагина: %2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation>удаление: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation>ошибка</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation>информация</translation>
</message>
@@ -1704,75 +1675,75 @@ This version is compiled as version: %1.</source>
<translation>&quot;package&quot; Корневой тег не найден для XML-файла</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation>Дублированный плагин нашел, уже загружены!</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation>Тег не найден: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation>Вы уверены, что об удалении &quot;%1&quot; в версии %2?</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation>Предыдущая импорта идет ...</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation>Открытое плагин Ultracopier</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation>Ultracopier плагина (*.urc)</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation>плагин погрузчика</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation>Невозможно открыть плагин: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation>Не удается загрузить плагин содержания, пожалуйста, проверьте его: %1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation>Невозможно создать папку для установки плагина:
%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
@@ -1781,16 +1752,16 @@ since:%2</source>
С: %2</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation>Папка с таким же именем существует, пропустить установки плагина:
%1</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation>Не удается загрузить плагин содержания, пожалуйста, проверьте его</translation>
</message>
@@ -1862,24 +1833,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1887,198 +1851,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished">Нет копии слушатель найдено. Сделайте копию вручную, щелкните правой кнопкой мыши один из иконки в системном трее.</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished">информация</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished">Поиск информации ...</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished">Предупреждение</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2086,68 +2035,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2180,323 +2117,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished">просматривать</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2504,67 +2361,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished">ошибка</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished">размер</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished">назначение</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2572,141 +2429,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished">источник</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished">назначение</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished">размер</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished">Заменить, если новее</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished">размер</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2714,65 +2583,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished">источник</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished">назначение</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished">пропускать</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/th/flag.png b/plugins/Languages/th/flag.png
index 76d9cc3..76d9cc3 100644..100755
--- a/plugins/Languages/th/flag.png
+++ b/plugins/Languages/th/flag.png
Binary files differ
diff --git a/plugins/Languages/th/informations.xml b/plugins/Languages/th/informations.xml
index 56eab32..ba01fb7 100644..100755
--- a/plugins/Languages/th/informations.xml
+++ b/plugins/Languages/th/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to thai. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>th</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/th/translation.qm b/plugins/Languages/th/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Languages/th/translation.qm
Binary files differ
diff --git a/plugins/Languages/th/translation.ts b/plugins/Languages/th/translation.ts
index cb636cf..b64f48b 100644..100755
--- a/plugins/Languages/th/translation.ts
+++ b/plugins/Languages/th/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -974,82 +919,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation type="unfinished"></translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1205,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation type="unfinished"></translation>
</message>
@@ -1281,38 +1237,38 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation type="unfinished"></translation>
</message>
@@ -1362,172 +1318,187 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
@@ -1658,33 +1629,33 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
@@ -1704,89 +1675,89 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation type="unfinished"></translation>
</message>
@@ -1858,24 +1829,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1883,198 +1847,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,68 +2031,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2113,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2357,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,141 +2425,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2579,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/tr/flag.png b/plugins/Languages/tr/flag.png
index e26b94b..e26b94b 100644..100755
--- a/plugins/Languages/tr/flag.png
+++ b/plugins/Languages/tr/flag.png
Binary files differ
diff --git a/plugins/Languages/tr/informations.xml b/plugins/Languages/tr/informations.xml
index 7048279..499dac8 100644..100755
--- a/plugins/Languages/tr/informations.xml
+++ b/plugins/Languages/tr/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to turkish. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>tr</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/tr/translation.qm b/plugins/Languages/tr/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Languages/tr/translation.qm
Binary files differ
diff --git a/plugins/Languages/tr/translation.ts b/plugins/Languages/tr/translation.ts
index cb636cf..b64f48b 100644..100755
--- a/plugins/Languages/tr/translation.ts
+++ b/plugins/Languages/tr/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -974,82 +919,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation type="unfinished"></translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1205,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation type="unfinished"></translation>
</message>
@@ -1281,38 +1237,38 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation type="unfinished"></translation>
</message>
@@ -1362,172 +1318,187 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
@@ -1658,33 +1629,33 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
@@ -1704,89 +1675,89 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation type="unfinished"></translation>
</message>
@@ -1858,24 +1829,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1883,198 +1847,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,68 +2031,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2113,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2357,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,141 +2425,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2579,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/zh/flag.png b/plugins/Languages/zh/flag.png
index 928b698..928b698 100644..100755
--- a/plugins/Languages/zh/flag.png
+++ b/plugins/Languages/zh/flag.png
Binary files differ
diff --git a/plugins/Languages/zh/informations.xml b/plugins/Languages/zh/informations.xml
index 897bb58..21f5d82 100644..100755
--- a/plugins/Languages/zh/informations.xml
+++ b/plugins/Languages/zh/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to chinese. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>ch</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/zh/translation.qm b/plugins/Languages/zh/translation.qm
new file mode 100755
index 0000000..e866968
--- /dev/null
+++ b/plugins/Languages/zh/translation.qm
Binary files differ
diff --git a/plugins/Languages/zh/translation.ts b/plugins/Languages/zh/translation.ts
index 8c7df64..0beabf9 100644..100755
--- a/plugins/Languages/zh/translation.ts
+++ b/plugins/Languages/zh/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="411"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="434"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="446"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="469"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="493"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="493"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="649"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="907"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="910"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="915"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="919"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="908"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="912"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="916"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="920"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="911"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="913"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="925"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="917"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="921"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="922"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="923"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="924"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="995"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="995"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,70 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="364"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="367"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="372"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="376"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="365"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="369"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="373"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="377"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="368"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="382"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="374"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="378"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="379"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="380"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="381"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="397"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +256,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation>警告</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +287,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +301,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +374,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +402,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +665,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +678,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="187"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="194"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="285"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="285"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +701,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="141"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="148"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="221"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="221"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +724,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +802,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="30"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="93"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="105"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="131"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="96"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="134"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="137"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="107"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="145"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="148"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="154"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="216"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="255"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +863,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="165"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="174"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="241"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="241"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +891,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="39"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -980,82 +920,82 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
+ <location filename="../../../HelpDialog.cpp" line="37"/>
<source>About Supercopier</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="84"/>
<source>For http://portableapps.com/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="87"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="89"/>
<source>Portable version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="94"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="96"/>
<source>Normal version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="113"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="146"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="152"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="158"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="119"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="411"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="418"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="268"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="275"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="284"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="293"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="299"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="363"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="371"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="129"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="399"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="192"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="215"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="232"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="260"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="283"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="314"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="320"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,52 @@ This version is compiled as version: %1.</source>
<translation type="unfinished">警告</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="129"/>
+ <source>Supercopier</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1210,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
+ <location filename="../../../OptionDialog.ui" line="359"/>
<location filename="../../../OptionDialog.cpp" line="283"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="387"/>
<source>Themes</source>
<translation type="unfinished"></translation>
</message>
@@ -1271,53 +1232,53 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="349"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="354"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="364"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="535"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="838"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="848"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
+ <location filename="../../../OptionDialog.ui" line="372"/>
<location filename="../../../OptionDialog.cpp" line="284"/>
<source>Listener</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
+ <location filename="../../../OptionDialog.ui" line="377"/>
<location filename="../../../OptionDialog.cpp" line="285"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
+ <location filename="../../../OptionDialog.ui" line="382"/>
<location filename="../../../OptionDialog.cpp" line="286"/>
<source>Session loader</source>
<translation type="unfinished"></translation>
@@ -1378,79 +1339,89 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="313"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="395"/>
<source>Plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="414"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="427"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="437"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="464"/>
<source>Copy engine by order of preference:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="591"/>
<source>Themes:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="653"/>
<source>Unable to load the themes plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="703"/>
<source>No option for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="753"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="765"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="778"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="808"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="734"/>
<source>Write the log file into:</source>
<translation type="unfinished"></translation>
</message>
@@ -1523,12 +1494,12 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="955"/>
<source>Save logs as: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="768"/>
<source>Synchronized log</source>
<translation type="unfinished"></translation>
</message>
@@ -1658,27 +1629,27 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
@@ -1698,95 +1669,95 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation type="unfinished"></translation>
</message>
@@ -1811,6 +1782,19 @@ since:%2</source>
</message>
</context>
<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../Themes/Oxygen2/radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Themes/Oxygen2/radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>QXzDecode</name>
<message>
<location filename="../../../lib/qt-tar-xz/QXzDecode.cpp" line="38"/>
@@ -1856,225 +1840,193 @@ since:%2</source>
</message>
</context>
<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
- <source>Internal error, please report it!</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
+ <name>RadialMap::Widget</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
- <source>File truncated during the read, possible data change</source>
+ <location filename="../../Themes/Oxygen2/radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../Themes/Oxygen2/radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="659"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished">警告</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,93 +2034,82 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="292"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="313"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="510"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="817"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="819"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="1320"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="1321"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="1322"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="1324"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="1519"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="1531"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="1543"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
- <source>%1 %2% of %3</source>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="1631"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="1642"/>
+ <location filename="../../Themes/Oxygen2/interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ThemesFactory</name>
<message>
- <location filename="../../Themes/Oxygen/ThemesFactory.cpp" line="284"/>
+ <location filename="../../Themes/Oxygen2/ThemesFactory.cpp" line="295"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/ThemesFactory.cpp" line="285"/>
+ <location filename="../../Themes/Oxygen2/ThemesFactory.cpp" line="296"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/ThemesFactory.cpp" line="286"/>
+ <location filename="../../Themes/Oxygen2/ThemesFactory.cpp" line="297"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/ThemesFactory.cpp" line="482"/>
- <location filename="../../Themes/Oxygen/ThemesFactory.cpp" line="497"/>
- <location filename="../../Themes/Oxygen/ThemesFactory.cpp" line="512"/>
+ <location filename="../../Themes/Oxygen2/ThemesFactory.cpp" line="493"/>
+ <location filename="../../Themes/Oxygen2/ThemesFactory.cpp" line="508"/>
+ <location filename="../../Themes/Oxygen2/ThemesFactory.cpp" line="523"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2117,173 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="181"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="494"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="501"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="529"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="767"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="767"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="803"/>
<source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
- <name>WriteThread</name>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
- <source>Path resolution error (Empty path)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="210"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="290"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="307"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="292"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="309"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
- <source>Move the whole folder</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="53"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="73"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="93"/>
+ <source>Less performance if checked</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="96"/>
+ <source>Follow the strict order</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="106"/>
+ <source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="113"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="127"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="143"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="149"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="159"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="185"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="245"/>
<source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="276"/>
<source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="283"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="303"/>
<source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="316"/>
<source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="347"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="353"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="393"/>
+ <source>Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="409"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="415"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="425"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="437"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="459"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2291,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,88 +2359,88 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
@@ -2657,52 +2448,52 @@ since:%2</source>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2501,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2776,158 +2567,163 @@ since:%2</source>
<context>
<name>interfaceCopy</name>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="35"/>
- <source>From:</source>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="232"/>
+ <source>0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="65"/>
- <source>To:</source>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="252"/>
+ <source>100MB+</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="118"/>
- <source>Close on transfer completion</source>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="301"/>
+ <source>&amp;More</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="226"/>
- <source>&amp;More</source>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="321"/>
+ <source>&amp;Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="246"/>
- <source>&amp;Pause</source>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="260"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="420"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="482"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="271"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="493"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="286"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="527"/>
<source>Limit copy speed to:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="329"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="570"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="352"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="593"/>
<source>Move the selected items to the top</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="378"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="619"/>
<source>Move up the selected items</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="404"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="645"/>
<source>Move down the selected items</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="430"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="671"/>
<source>Move the selected items to the bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="456"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="697"/>
<source>Add file/folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="485"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="726"/>
<source>Delete the selected items</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="511"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="752"/>
<source>Search</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="540"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="781"/>
<source>Export the transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="566"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="807"/>
<source>Import the transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="621"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="862"/>
<source>Previous</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="628"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="869"/>
<source>Next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="663"/>
- <location filename="../../Themes/Oxygen/interface.ui" line="732"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="904"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="973"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="683"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="924"/>
<source>Export the errors into transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="722"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="963"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="727"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="968"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="741"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="982"/>
<source>Interface</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="778"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="1028"/>
<source>Add file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="787"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="1037"/>
<source>Add folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="796"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="1046"/>
<source>Move file(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="805"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="1055"/>
<source>Move folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="814"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="1064"/>
<source>Copy file(s)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.ui" line="823"/>
+ <location filename="../../Themes/Oxygen2/interface.ui" line="1073"/>
<source>Copy folder</source>
<translation type="unfinished"></translation>
</message>
@@ -2935,43 +2731,38 @@ since:%2</source>
<context>
<name>options</name>
<message>
- <location filename="../../Themes/Oxygen/options.ui" line="23"/>
- <source> KB/s</source>
+ <location filename="../../Themes/Oxygen2/options.ui" line="129"/>
+ <source>Speed with progress bar</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/options.ui" line="55"/>
- <source>Progression color</source>
+ <location filename="../../Themes/Oxygen2/options.ui" line="155"/>
+ <source>Show speed as main information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/options.ui" line="62"/>
- <location filename="../../Themes/Oxygen/options.ui" line="132"/>
- <source>Limit copy speed at:</source>
+ <location filename="../../Themes/Oxygen2/options.ui" line="162"/>
+ <source>Progression color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/options.ui" line="85"/>
- <source>Speed with progress bar</source>
+ <location filename="../../Themes/Oxygen2/options.ui" line="169"/>
+ <location filename="../../Themes/Oxygen2/options.ui" line="215"/>
+ <source>Limit copy speed at:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/options.ui" line="92"/>
- <source>Start with the &quot;more button&quot; pushed</source>
+ <location filename="../../Themes/Oxygen2/options.ui" line="179"/>
+ <source> KB/s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/options.ui" line="112"/>
+ <location filename="../../Themes/Oxygen2/options.ui" line="208"/>
<source>Show dual progression</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/options.ui" line="122"/>
- <source>Show speed as main information</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/options.ui" line="149"/>
+ <location filename="../../Themes/Oxygen2/options.ui" line="235"/>
<source>At the end of the copy: </source>
<translation type="unfinished"></translation>
</message>
@@ -2979,88 +2770,93 @@ since:%2</source>
<context>
<name>themesOptions</name>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="44"/>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="44"/>
<source>Use</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="53"/>
- <source>Start minimized</source>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="67"/>
- <source>Minimize on close to systray</source>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="77"/>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="94"/>
+ <source>Limit copy speed to</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="96"/>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="87"/>
<source>At the end of the copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="103"/>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="137"/>
- <source>Limit copy speed to</source>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="104"/>
+ <source> KB/s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="147"/>
- <source> KB/s</source>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="117"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="173"/>
- <source>Start with the &quot;more button&quot; pushed</source>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="124"/>
+ <source>Start minimized</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="183"/>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="144"/>
<source>Always on top</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="190"/>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="151"/>
<source>Save position</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="213"/>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="211"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="227"/>
<source>Informations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="219"/>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="233"/>
<source>Show speed as main information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="251"/>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="265"/>
<source>Display</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="257"/>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="271"/>
<source>Speed with progress bar</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="267"/>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="281"/>
<source>Show dual progression</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="277"/>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="291"/>
<source>Show progression in the title</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="287"/>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="301"/>
<source>Progression color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/themesOptions.ui" line="306"/>
+ <location filename="../../Themes/Oxygen2/themesOptions.ui" line="320"/>
<source>Click to edit the color</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Languages/zh_TW/flag.png b/plugins/Languages/zh_TW/flag.png
index 4f00c2d..4f00c2d 100644..100755
--- a/plugins/Languages/zh_TW/flag.png
+++ b/plugins/Languages/zh_TW/flag.png
Binary files differ
diff --git a/plugins/Languages/zh_TW/informations.xml b/plugins/Languages/zh_TW/informations.xml
index 8d1a3d0..e06a397 100644..100755
--- a/plugins/Languages/zh_TW/informations.xml
+++ b/plugins/Languages/zh_TW/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[Translation of Ultracopier to chinese traditional. For more details see the web site.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>zh_tw</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Languages/zh_TW/translation.qm b/plugins/Languages/zh_TW/translation.qm
new file mode 100755
index 0000000..0d07322
--- /dev/null
+++ b/plugins/Languages/zh_TW/translation.qm
Binary files differ
diff --git a/plugins/Languages/zh_TW/translation.ts b/plugins/Languages/zh_TW/translation.ts
index 62c72d5..5d4de45 100644..100755
--- a/plugins/Languages/zh_TW/translation.ts
+++ b/plugins/Languages/zh_TW/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1" language="zh_TW">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation>警告</translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation>錯誤</translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation>錯誤</translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation>秒</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished">錯誤</translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished">錯誤</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished">錯誤</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished">錯誤</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation>關於 Ultracopier</translation>
</message>
@@ -980,82 +925,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation>關閉</translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation>警告</translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation type="unfinished"></translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation>警告</translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,14 +1205,14 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation>佈景</translation>
</message>
@@ -1271,54 +1227,54 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation>名稱</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation>版本</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation>語言</translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation type="unfinished"></translation>
</message>
@@ -1378,157 +1334,172 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation type="unfinished"></translation>
</message>
@@ -1658,33 +1629,33 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation type="unfinished">錯誤</translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
@@ -1704,89 +1675,89 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation type="unfinished"></translation>
</message>
@@ -1858,24 +1829,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1883,198 +1847,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished">警告</translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,68 +2031,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2113,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2357,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished">錯誤</translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,141 +2425,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2579,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Listener/README.md b/plugins/Listener/README.md
index 6d4efe9..6d4efe9 100644..100755
--- a/plugins/Listener/README.md
+++ b/plugins/Listener/README.md
diff --git a/plugins/Listener/catchcopy-v0002/DebugEngineMacro.h b/plugins/Listener/catchcopy-v0002/DebugEngineMacro.h
index 4582010..4582010 100644..100755
--- a/plugins/Listener/catchcopy-v0002/DebugEngineMacro.h
+++ b/plugins/Listener/catchcopy-v0002/DebugEngineMacro.h
diff --git a/plugins/Listener/catchcopy-v0002/Environment.h b/plugins/Listener/catchcopy-v0002/Environment.h
index 265a5a6..821e3de 100644..100755
--- a/plugins/Listener/catchcopy-v0002/Environment.h
+++ b/plugins/Listener/catchcopy-v0002/Environment.h
@@ -3,7 +3,7 @@
\author alpha_one_x86
\licence GPL3, see the file COPYING */
-#include "Variable.h"
+#include "Listenercatchcopy-v0002Variable.h"
/// \brief The global include
#include "StructEnumDefinition.h"
#include "DebugEngineMacro.h"
diff --git a/plugins/SessionLoader/Windows/Variable.h b/plugins/Listener/catchcopy-v0002/Listenercatchcopy-v0002Variable.h
index 963d0c8..075d4da 100644..100755
--- a/plugins/SessionLoader/Windows/Variable.h
+++ b/plugins/Listener/catchcopy-v0002/Listenercatchcopy-v0002Variable.h
@@ -7,7 +7,7 @@
#define VARIABLE_H
//Un-comment this next line to put ultracopier plugin in debug mode
-#define ULTRACOPIER_PLUGIN_DEBUG
+//#define ULTRACOPIER_PLUGIN_DEBUG
#endif // VARIABLE_H
diff --git a/plugins/Listener/catchcopy-v0002/README.md b/plugins/Listener/catchcopy-v0002/README.md
index 6c524ef..6c524ef 100644..100755
--- a/plugins/Listener/catchcopy-v0002/README.md
+++ b/plugins/Listener/catchcopy-v0002/README.md
diff --git a/plugins/Listener/catchcopy-v0002/StructEnumDefinition.h b/plugins/Listener/catchcopy-v0002/StructEnumDefinition.h
index c1758f4..c1758f4 100644..100755
--- a/plugins/Listener/catchcopy-v0002/StructEnumDefinition.h
+++ b/plugins/Listener/catchcopy-v0002/StructEnumDefinition.h
diff --git a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ClientCatchcopy.cpp b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ClientCatchcopy.cpp
index c466630..c466630 100644..100755
--- a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ClientCatchcopy.cpp
+++ b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ClientCatchcopy.cpp
diff --git a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ClientCatchcopy.h b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ClientCatchcopy.h
index 4c15890..4c15890 100644..100755
--- a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ClientCatchcopy.h
+++ b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ClientCatchcopy.h
diff --git a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ExtraSocketCatchcopy.cpp b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ExtraSocketCatchcopy.cpp
index 9cd8373..9cd8373 100644..100755
--- a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ExtraSocketCatchcopy.cpp
+++ b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ExtraSocketCatchcopy.cpp
diff --git a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ExtraSocketCatchcopy.h b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ExtraSocketCatchcopy.h
index fb4201c..fb4201c 100644..100755
--- a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ExtraSocketCatchcopy.h
+++ b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ExtraSocketCatchcopy.h
diff --git a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ServerCatchcopy.cpp b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ServerCatchcopy.cpp
index 6fd1172..6fd1172 100644..100755
--- a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ServerCatchcopy.cpp
+++ b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ServerCatchcopy.cpp
diff --git a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ServerCatchcopy.h b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ServerCatchcopy.h
index 85acff9..85acff9 100644..100755
--- a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ServerCatchcopy.h
+++ b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ServerCatchcopy.h
diff --git a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/VariablesCatchcopy.h b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/VariablesCatchcopy.h
index 135c087..135c087 100644..100755
--- a/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/VariablesCatchcopy.h
+++ b/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/VariablesCatchcopy.h
diff --git a/plugins/Listener/catchcopy-v0002/documentation.dox b/plugins/Listener/catchcopy-v0002/documentation.dox
index 51aa937..51aa937 100644..100755
--- a/plugins/Listener/catchcopy-v0002/documentation.dox
+++ b/plugins/Listener/catchcopy-v0002/documentation.dox
diff --git a/plugins/Listener/catchcopy-v0002/informations.xml b/plugins/Listener/catchcopy-v0002/informations.xml
index 822e6cc..77ceb69 100644..100755
--- a/plugins/Listener/catchcopy-v0002/informations.xml
+++ b/plugins/Listener/catchcopy-v0002/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[Listener for catchcopy v0002. Allow to receive copy list from plugin/explorer compatible with catchcopy.]]></description>
<description xml:lang="fr"><![CDATA[Écouteur pour catchcopy v0002. Permet de recevoir un liste de copie venant d'un plugin/explorateur avec catchcopy.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>catchcopy-v0002</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Listener/catchcopy-v0002/listener.cpp b/plugins/Listener/catchcopy-v0002/listener.cpp
index 64d240c..64d240c 100644..100755
--- a/plugins/Listener/catchcopy-v0002/listener.cpp
+++ b/plugins/Listener/catchcopy-v0002/listener.cpp
diff --git a/plugins/Listener/catchcopy-v0002/listener.h b/plugins/Listener/catchcopy-v0002/listener.h
index 8cab248..3d4c26f 100644..100755
--- a/plugins/Listener/catchcopy-v0002/listener.h
+++ b/plugins/Listener/catchcopy-v0002/listener.h
@@ -26,24 +26,24 @@ class Listener : public PluginInterface_Listener
public:
Listener();
/// \brief try listen the copy/move
- void listen();
+ void listen() override;
/// \brief stop listen to copy/move
- void close();
+ void close() override;
/// \brief return the error strong
- const std::string errorString() const;
+ const std::string errorString() const override;
/// \brief set resources for this plugins
- void setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath,const bool &portableVersion);
+ void setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath,const bool &portableVersion) override;
/// \brief to get the options widget, NULL if not have
- QWidget * options();
+ QWidget * options() override;
/// \brief to get a client list
- std::vector<std::string> clientsList() const;
+ std::vector<std::string> clientsList() const override;
public slots:
/// \brief say to the client that's the copy/move is finished
- void transferFinished(const uint32_t &orderId,const bool &withError);
+ void transferFinished(const uint32_t &orderId,const bool &withError) override;
/// \brief say to the client that's the copy/move is finished
- void transferCanceled(const uint32_t &orderId);
+ void transferCanceled(const uint32_t &orderId) override;
/// \brief to reload the translation, because the new language have been loaded
- void newLanguageLoaded();
+ void newLanguageLoaded() override;
private:
ServerCatchcopy server;
private slots:
diff --git a/plugins/Listener/catchcopy-v0002/listener.pro b/plugins/Listener/catchcopy-v0002/listener.pro
index b21289a..fc674f3 100644..100755
--- a/plugins/Listener/catchcopy-v0002/listener.pro
+++ b/plugins/Listener/catchcopy-v0002/listener.pro
@@ -12,7 +12,7 @@ HEADERS = \
$$PWD/catchcopy-api-0002/ServerCatchcopy.h \
$$PWD/catchcopy-api-0002/ExtraSocketCatchcopy.h \
$$PWD/Environment.h \
- $$PWD/Variable.h \
+ $$PWD/Listenercatchcopy-v0002Variable.h \
$$PWD/DebugEngineMacro.h \
$$PWD/StructEnumDefinition.h \
$$PWD/../../../interface/PluginInterface_Listener.h \
diff --git a/plugins/Listener/catchcopy-v0002/plugin.json b/plugins/Listener/catchcopy-v0002/plugin.json
index 9e26dfe..9e26dfe 100644..100755
--- a/plugins/Listener/catchcopy-v0002/plugin.json
+++ b/plugins/Listener/catchcopy-v0002/plugin.json
diff --git a/plugins/PluginLoader/README.md b/plugins/PluginLoader/README.md
index 40a0fba..40a0fba 100644..100755
--- a/plugins/PluginLoader/README.md
+++ b/plugins/PluginLoader/README.md
diff --git a/plugins/PluginLoader/catchcopy-v0002/DebugEngineMacro.h b/plugins/PluginLoader/catchcopy-v0002/DebugEngineMacro.h
index f9b5349..f9b5349 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/DebugEngineMacro.h
+++ b/plugins/PluginLoader/catchcopy-v0002/DebugEngineMacro.h
diff --git a/plugins/PluginLoader/catchcopy-v0002/Environment.h b/plugins/PluginLoader/catchcopy-v0002/Environment.h
index 265a5a6..f5d7a7f 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Environment.h
+++ b/plugins/PluginLoader/catchcopy-v0002/Environment.h
@@ -3,7 +3,7 @@
\author alpha_one_x86
\licence GPL3, see the file COPYING */
-#include "Variable.h"
+#include "PluginLoadercatchcopy-v0002Variable.h"
/// \brief The global include
#include "StructEnumDefinition.h"
#include "DebugEngineMacro.h"
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/ar/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/ar/translation.qm
new file mode 100755
index 0000000..62327be
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/ar/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/ar/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/ar/translation.ts
index bbe32fc..33c14da 100644
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/ar/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/ar/translation.ts
@@ -1,22 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1">
+<TS version="2.1" language="ar_JO">
<context>
<name>OptionsWidget</name>
<message>
<location filename="../../OptionsWidget.ui" line="17"/>
<source>In normal case, only the dll 64Bits is important with 64Bits OS, and 32Bits dll with 32Bits OS. When it&apos;s important, the UAC can be opened to load the dll.</source>
- <translation type="unfinished"></translation>
+ <translation>Dll.يمكن فتح لتحميلUAC عندما يكون الأمر مهما ،32Bits OS. مع 32Bits dll و 64Bits OS,من المهم مع dll 64Bits في الحالة العادية فقط..</translation>
</message>
<message>
<location filename="../../OptionsWidget.ui" line="20"/>
<source>All the dlls are importants</source>
- <translation type="unfinished"></translation>
+ <translation>هي المستوردين dlls كافة</translation>
</message>
<message>
<location filename="../../OptionsWidget.ui" line="34"/>
<source>Register for all users</source>
- <translation type="unfinished"></translation>
+ <translation>مكتب التسجيل لكل المستخدمين</translation>
</message>
</context>
</TS>
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/de/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/de/translation.qm
new file mode 100755
index 0000000..d8b0880
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/de/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/de/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/de/translation.ts
index f377223..b63b334 100644
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/de/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/de/translation.ts
@@ -6,7 +6,7 @@
<message>
<location filename="../../OptionsWidget.ui" line="17"/>
<source>In normal case, only the dll 64Bits is important with 64Bits OS, and 32Bits dll with 32Bits OS. When it&apos;s important, the UAC can be opened to load the dll.</source>
- <translation>Im Normalfall ist für 32 oder 64-Bit-Beriebsysteme nur die jeweilige dll wichtig. Die UAC kann geöffnet werden um die dll zu laden.</translation>
+ <translation>Im Normalfall ist für 32 oder 64-Bit-Beriebsysteme nur die jeweilige DLL wichtig. Möglicherweise muss die Windows UAC bestätigt werden, um die DLL zu laden.</translation>
</message>
<message>
<location filename="../../OptionsWidget.ui" line="20"/>
@@ -17,7 +17,7 @@
<message>
<location filename="../../OptionsWidget.ui" line="34"/>
<source>Register for all users</source>
- <translation type="unfinished"></translation>
+ <translation>Für alle Benutzer registrieren</translation>
</message>
</context>
</TS>
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/el/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/el/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/el/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/el/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/el/translation.ts
index bbe32fc..bbe32fc 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/el/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/el/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/en/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/en/translation.qm
new file mode 100755
index 0000000..d925dd6
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/en/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/en/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/en/translation.ts
index 5f0d6e6..5f0d6e6 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/en/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/en/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/es/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/es/translation.qm
new file mode 100755
index 0000000..543b9c0
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/es/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/es/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/es/translation.ts
index f6480eb..f6480eb 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/es/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/es/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/fr/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/fr/translation.qm
new file mode 100755
index 0000000..5f0a7f4
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/fr/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/fr/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/fr/translation.ts
index fa231b7..fa231b7 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/fr/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/fr/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/hi/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/hi/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/hi/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/hi/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/hi/translation.ts
index bbe32fc..bbe32fc 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/hi/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/hi/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/hu/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/hu/translation.qm
new file mode 100755
index 0000000..d05e9c3
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/hu/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/hu/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/hu/translation.ts
index c000d05..c000d05 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/hu/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/hu/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/id/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/id/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/id/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/id/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/id/translation.ts
index bbe32fc..bbe32fc 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/id/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/id/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/it/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/it/translation.qm
new file mode 100755
index 0000000..3974c3a
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/it/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/it/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/it/translation.ts
index f45ef55..256518d 100644
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/it/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/it/translation.ts
@@ -6,17 +6,17 @@
<message>
<location filename="../../OptionsWidget.ui" line="17"/>
<source>In normal case, only the dll 64Bits is important with 64Bits OS, and 32Bits dll with 32Bits OS. When it&apos;s important, the UAC can be opened to load the dll.</source>
- <translation>Solitamente, la dll 64Bit è indispensabile solo per sistemi operativi a 64Bit, e la dll 32Bit per sistemi operativi a 32Bits. Quando è necessario, l&apos; UAC (il controllo dell&apos;account utente) può essere aperto per caricare la dll.</translation>
+ <translation>Solitamente, le librerie dll 64bit sono indispensabili solo per sistemi operativi a x64, e le librerie 32bit per sistemi operativi a x86. Quando è necessario, l&apos; UAC (il controllo dell&apos;account utente) può essere aperto per caricare le dll</translation>
</message>
<message>
<location filename="../../OptionsWidget.ui" line="20"/>
<source>All the dlls are importants</source>
- <translation>Tutte le dll sono necessarie</translation>
+ <translation>Tutte le librerie dll sono necessarie</translation>
</message>
<message>
<location filename="../../OptionsWidget.ui" line="34"/>
<source>Register for all users</source>
- <translation type="unfinished"></translation>
+ <translation>Registrare per tutti gli utenti</translation>
</message>
</context>
</TS>
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/ja/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/ja/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/ja/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/ja/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/ja/translation.ts
index bbe32fc..bbe32fc 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/ja/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/ja/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/ko/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/ko/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/ko/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/ko/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/ko/translation.ts
index 2ed4bbb..2ed4bbb 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/ko/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/ko/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/nl/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/nl/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/nl/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/nl/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/nl/translation.ts
index bbe32fc..bbe32fc 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/nl/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/nl/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/no/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/no/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/no/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/no/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/no/translation.ts
index bbe32fc..bbe32fc 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/no/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/no/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/pl/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/pl/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/pl/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/pl/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/pl/translation.ts
index bbe32fc..bbe32fc 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/pl/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/pl/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/pt/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/pt/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/pt/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/pt/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/pt/translation.ts
index bbe32fc..bbe32fc 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/pt/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/pt/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/ru/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/ru/translation.qm
new file mode 100755
index 0000000..00c9703
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/ru/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/ru/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/ru/translation.ts
index 7f1edb9..7f1edb9 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/ru/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/ru/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/th/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/th/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/th/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/th/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/th/translation.ts
index bbe32fc..bbe32fc 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/th/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/th/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/tr/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/tr/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/tr/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/tr/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/tr/translation.ts
index bbe32fc..bbe32fc 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/tr/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/tr/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/zh/translation.qm b/plugins/PluginLoader/catchcopy-v0002/Languages/zh/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/zh/translation.qm
Binary files differ
diff --git a/plugins/PluginLoader/catchcopy-v0002/Languages/zh/translation.ts b/plugins/PluginLoader/catchcopy-v0002/Languages/zh/translation.ts
index bbe32fc..bbe32fc 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Languages/zh/translation.ts
+++ b/plugins/PluginLoader/catchcopy-v0002/Languages/zh/translation.ts
diff --git a/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.cpp b/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.cpp
index e2c817c..e2c817c 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.cpp
+++ b/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.cpp
diff --git a/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.h b/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.h
index c5d0671..c5d0671 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.h
+++ b/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.h
diff --git a/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.ui b/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.ui
index 3bd4288..3bd4288 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.ui
+++ b/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.ui
diff --git a/plugins/PluginLoader/catchcopy-v0002/PlatformMacro.h b/plugins/PluginLoader/catchcopy-v0002/PlatformMacro.h
index f7586b0..f7586b0 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/PlatformMacro.h
+++ b/plugins/PluginLoader/catchcopy-v0002/PlatformMacro.h
diff --git a/plugins/PluginLoader/catchcopy-v0002/Variable.h b/plugins/PluginLoader/catchcopy-v0002/PluginLoadercatchcopy-v0002Variable.h
index 90e1557..6f0d9aa 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/Variable.h
+++ b/plugins/PluginLoader/catchcopy-v0002/PluginLoadercatchcopy-v0002Variable.h
@@ -7,7 +7,7 @@
#define VARIABLE_H
//Un-comment this next line to put ultracopier plugin in debug mode
-#define ULTRACOPIER_PLUGIN_DEBUG
+//#define ULTRACOPIER_PLUGIN_DEBUG
//#define ULTRACOPIER_PLUGIN_ALL_IN_ONE
#endif // VARIABLE_H
diff --git a/plugins/PluginLoader/catchcopy-v0002/README.md b/plugins/PluginLoader/catchcopy-v0002/README.md
index cf96048..cf96048 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/README.md
+++ b/plugins/PluginLoader/catchcopy-v0002/README.md
diff --git a/plugins/PluginLoader/catchcopy-v0002/StructEnumDefinition.h b/plugins/PluginLoader/catchcopy-v0002/StructEnumDefinition.h
index c1758f4..c1758f4 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/StructEnumDefinition.h
+++ b/plugins/PluginLoader/catchcopy-v0002/StructEnumDefinition.h
diff --git a/plugins/PluginLoader/catchcopy-v0002/documentation.dox b/plugins/PluginLoader/catchcopy-v0002/documentation.dox
index b9c9d13..b9c9d13 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/documentation.dox
+++ b/plugins/PluginLoader/catchcopy-v0002/documentation.dox
diff --git a/plugins/PluginLoader/catchcopy-v0002/informations.xml b/plugins/PluginLoader/catchcopy-v0002/informations.xml
index d60ebe6..ed8ed49 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/informations.xml
+++ b/plugins/PluginLoader/catchcopy-v0002/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[Plugin loader for catchcopy v0002. Allow to receive copy list from plugin/explorer compatible with catchcopy.]]></description>
<description xml:lang="fr"><![CDATA[Chargeur de plugin pour catchcopy v0002. Permet de recevoir un liste de copie venant d'un plugin/explorateur avec catchcopy.]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>catchcopy-v0002</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/PluginLoader/catchcopy-v0002/plugin.json b/plugins/PluginLoader/catchcopy-v0002/plugin.json
index 9e26dfe..9e26dfe 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/plugin.json
+++ b/plugins/PluginLoader/catchcopy-v0002/plugin.json
diff --git a/plugins/PluginLoader/catchcopy-v0002/pluginLoader.cpp b/plugins/PluginLoader/catchcopy-v0002/pluginLoader.cpp
index e06b1f4..e06b1f4 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/pluginLoader.cpp
+++ b/plugins/PluginLoader/catchcopy-v0002/pluginLoader.cpp
diff --git a/plugins/PluginLoader/catchcopy-v0002/pluginLoader.h b/plugins/PluginLoader/catchcopy-v0002/pluginLoader.h
index 48e3d06..e87904a 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/pluginLoader.h
+++ b/plugins/PluginLoader/catchcopy-v0002/pluginLoader.h
@@ -38,14 +38,14 @@ public:
WindowsExplorerLoader();
~WindowsExplorerLoader();
/// \brief try enable/disable the catching
- void setEnabled(const bool &needBeRegistred);
+ void setEnabled(const bool &needBeRegistred) override;
/// \brief to set resources, writePath can be empty if read only mode
- void setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath,const bool &portableVersion);
+ void setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath,const bool &portableVersion) override;
/// \brief to get the options widget, NULL if not have
- QWidget * options();
+ QWidget * options() override;
public slots:
/// \brief to reload the translation, because the new language have been loaded
- void newLanguageLoaded();
+ void newLanguageLoaded() override;
private:
std::string pluginPath;
std::vector<std::string> importantDll,secondDll;
diff --git a/plugins/PluginLoader/catchcopy-v0002/pluginLoader.pro b/plugins/PluginLoader/catchcopy-v0002/pluginLoader.pro
index 40d5e5e..f7541f4 100644..100755
--- a/plugins/PluginLoader/catchcopy-v0002/pluginLoader.pro
+++ b/plugins/PluginLoader/catchcopy-v0002/pluginLoader.pro
@@ -10,7 +10,7 @@ HEADERS = \
$$PWD/pluginLoader.h \
$$PWD/DebugEngineMacro.h \
$$PWD/Environment.h \
- $$PWD/Variable.h \
+ $$PWD/PluginLoadercatchcopy-v0002Variable.h \
$$PWD/PlatformMacro.h \
$$PWD/../../../interface/PluginInterface_PluginLoader.h \
$$PWD/../../../cpp11addition.h \
diff --git a/plugins/README.md b/plugins/README.md
index f69fcf3..f69fcf3 100644..100755
--- a/plugins/README.md
+++ b/plugins/README.md
diff --git a/plugins/SessionLoader/README.md b/plugins/SessionLoader/README.md
index eb8aedf..eb8aedf 100644..100755
--- a/plugins/SessionLoader/README.md
+++ b/plugins/SessionLoader/README.md
diff --git a/plugins/SessionLoader/Windows/DebugEngineMacro.h b/plugins/SessionLoader/Windows/DebugEngineMacro.h
index 4582010..4582010 100644..100755
--- a/plugins/SessionLoader/Windows/DebugEngineMacro.h
+++ b/plugins/SessionLoader/Windows/DebugEngineMacro.h
diff --git a/plugins/SessionLoader/Windows/Environment.h b/plugins/SessionLoader/Windows/Environment.h
index 265a5a6..ca5a7e7 100644..100755
--- a/plugins/SessionLoader/Windows/Environment.h
+++ b/plugins/SessionLoader/Windows/Environment.h
@@ -3,7 +3,7 @@
\author alpha_one_x86
\licence GPL3, see the file COPYING */
-#include "Variable.h"
+#include "SessionLoaderWindowsVariable.h"
/// \brief The global include
#include "StructEnumDefinition.h"
#include "DebugEngineMacro.h"
diff --git a/plugins/SessionLoader/Windows/README.md b/plugins/SessionLoader/Windows/README.md
index 42b0a24..42b0a24 100644..100755
--- a/plugins/SessionLoader/Windows/README.md
+++ b/plugins/SessionLoader/Windows/README.md
diff --git a/plugins/Listener/catchcopy-v0002/Variable.h b/plugins/SessionLoader/Windows/SessionLoaderWindowsVariable.h
index 963d0c8..075d4da 100644..100755
--- a/plugins/Listener/catchcopy-v0002/Variable.h
+++ b/plugins/SessionLoader/Windows/SessionLoaderWindowsVariable.h
@@ -7,7 +7,7 @@
#define VARIABLE_H
//Un-comment this next line to put ultracopier plugin in debug mode
-#define ULTRACOPIER_PLUGIN_DEBUG
+//#define ULTRACOPIER_PLUGIN_DEBUG
#endif // VARIABLE_H
diff --git a/plugins/SessionLoader/Windows/StructEnumDefinition.h b/plugins/SessionLoader/Windows/StructEnumDefinition.h
index c1758f4..c1758f4 100644..100755
--- a/plugins/SessionLoader/Windows/StructEnumDefinition.h
+++ b/plugins/SessionLoader/Windows/StructEnumDefinition.h
diff --git a/plugins/SessionLoader/Windows/documentation.dox b/plugins/SessionLoader/Windows/documentation.dox
index bfe77f3..bfe77f3 100644..100755
--- a/plugins/SessionLoader/Windows/documentation.dox
+++ b/plugins/SessionLoader/Windows/documentation.dox
diff --git a/plugins/SessionLoader/Windows/informations.xml b/plugins/SessionLoader/Windows/informations.xml
index ab5b852..7101277 100644..100755
--- a/plugins/SessionLoader/Windows/informations.xml
+++ b/plugins/SessionLoader/Windows/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[This plugin allow Ultracopier to be loaded at the session opening under windows]]></description>
<description xml:lang="fr"><![CDATA[Ce plugin permet de charger Ultracopier à l'ouverture de la sessions sous windows]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>Windows</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/SessionLoader/Windows/plugin.json b/plugins/SessionLoader/Windows/plugin.json
index 9e26dfe..9e26dfe 100644..100755
--- a/plugins/SessionLoader/Windows/plugin.json
+++ b/plugins/SessionLoader/Windows/plugin.json
diff --git a/plugins/SessionLoader/Windows/sessionLoader.cpp b/plugins/SessionLoader/Windows/sessionLoader.cpp
index 121bae0..121bae0 100644..100755
--- a/plugins/SessionLoader/Windows/sessionLoader.cpp
+++ b/plugins/SessionLoader/Windows/sessionLoader.cpp
diff --git a/plugins/SessionLoader/Windows/sessionLoader.h b/plugins/SessionLoader/Windows/sessionLoader.h
index b064e50..b064e50 100644..100755
--- a/plugins/SessionLoader/Windows/sessionLoader.h
+++ b/plugins/SessionLoader/Windows/sessionLoader.h
diff --git a/plugins/SessionLoader/Windows/sessionLoader.pro b/plugins/SessionLoader/Windows/sessionLoader.pro
index 1059692..c058dee 100644..100755
--- a/plugins/SessionLoader/Windows/sessionLoader.pro
+++ b/plugins/SessionLoader/Windows/sessionLoader.pro
@@ -8,7 +8,7 @@ LIBS += -ladvapi32
HEADERS = \
$$PWD/sessionLoader.h \
$$PWD/StructEnumDefinition.h \
- $$PWD/Variable.h \
+ $$PWD/SessionLoaderWindowsVariable.h \
$$PWD/Environment.h \
$$PWD/DebugEngineMacro.h \
$$PWD/../../../interface/PluginInterface_SessionLoader.h
diff --git a/plugins/SessionLoader/Windows/sessionLoader.pro.user.4.8-pre1 b/plugins/SessionLoader/Windows/sessionLoader.pro.user.4.8-pre1
new file mode 100755
index 0000000..2a9bc34
--- /dev/null
+++ b/plugins/SessionLoader/Windows/sessionLoader.pro.user.4.8-pre1
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.6.2, 2019-07-02T14:07:35. -->
+<qtcreator>
+ <data>
+ <variable>EnvironmentId</variable>
+ <value type="QByteArray">{74ab603f-f657-4135-92cf-c93af71b2f91}</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.ActiveTarget</variable>
+ <value type="int">0</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.EditorSettings</variable>
+ <valuemap type="QVariantMap">
+ <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+ <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+ <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+ <value type="QString" key="language">Cpp</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+ </valuemap>
+ </valuemap>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
+ <value type="QString" key="language">QmlJS</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
+ </valuemap>
+ </valuemap>
+ <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
+ <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+ <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+ <value type="int" key="EditorConfiguration.IndentSize">4</value>
+ <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+ <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+ <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+ <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+ <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+ <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+ <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+ <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+ <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+ <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+ <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+ <value type="int" key="EditorConfiguration.TabSize">8</value>
+ <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+ <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+ <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+ <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+ <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+ <value type="bool" key="EditorConfiguration.inEntireDocument">true</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.PluginSettings</variable>
+ <valuemap type="QVariantMap"/>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.0</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{23178a1c-09be-4e9f-9aab-ff55e05e7637}</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/plugins/SessionLoader/build-sessionLoader-Desktop-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/plugins/SessionLoader/build-sessionLoader-Desktop-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/plugins/SessionLoader/build-sessionLoader-Desktop-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+ <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+ <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+ <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+ <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+ <value type="int">0</value>
+ <value type="int">1</value>
+ <value type="int">2</value>
+ <value type="int">3</value>
+ <value type="int">4</value>
+ <value type="int">5</value>
+ <value type="int">6</value>
+ <value type="int">7</value>
+ <value type="int">8</value>
+ <value type="int">9</value>
+ <value type="int">10</value>
+ <value type="int">11</value>
+ <value type="int">12</value>
+ <value type="int">13</value>
+ <value type="int">14</value>
+ </valuelist>
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
+ <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
+ <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.TargetCount</variable>
+ <value type="int">1</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+ <value type="int">18</value>
+ </data>
+ <data>
+ <variable>Version</variable>
+ <value type="int">18</value>
+ </data>
+</qtcreator>
diff --git a/plugins/SessionLoader/Windows/sessionLoader.pro.user.74ab603.4.8-pre1 b/plugins/SessionLoader/Windows/sessionLoader.pro.user.74ab603.4.8-pre1
new file mode 100755
index 0000000..2a9bc34
--- /dev/null
+++ b/plugins/SessionLoader/Windows/sessionLoader.pro.user.74ab603.4.8-pre1
@@ -0,0 +1,333 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.6.2, 2019-07-02T14:07:35. -->
+<qtcreator>
+ <data>
+ <variable>EnvironmentId</variable>
+ <value type="QByteArray">{74ab603f-f657-4135-92cf-c93af71b2f91}</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.ActiveTarget</variable>
+ <value type="int">0</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.EditorSettings</variable>
+ <valuemap type="QVariantMap">
+ <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+ <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+ <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+ <value type="QString" key="language">Cpp</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+ </valuemap>
+ </valuemap>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
+ <value type="QString" key="language">QmlJS</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
+ </valuemap>
+ </valuemap>
+ <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
+ <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+ <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+ <value type="int" key="EditorConfiguration.IndentSize">4</value>
+ <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+ <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+ <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+ <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+ <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+ <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+ <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+ <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+ <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+ <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+ <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+ <value type="int" key="EditorConfiguration.TabSize">8</value>
+ <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+ <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+ <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+ <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+ <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+ <value type="bool" key="EditorConfiguration.inEntireDocument">true</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.PluginSettings</variable>
+ <valuemap type="QVariantMap"/>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.0</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{23178a1c-09be-4e9f-9aab-ff55e05e7637}</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/plugins/SessionLoader/build-sessionLoader-Desktop-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/plugins/SessionLoader/build-sessionLoader-Desktop-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/plugins/SessionLoader/build-sessionLoader-Desktop-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+ <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+ <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+ <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+ <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+ <value type="int">0</value>
+ <value type="int">1</value>
+ <value type="int">2</value>
+ <value type="int">3</value>
+ <value type="int">4</value>
+ <value type="int">5</value>
+ <value type="int">6</value>
+ <value type="int">7</value>
+ <value type="int">8</value>
+ <value type="int">9</value>
+ <value type="int">10</value>
+ <value type="int">11</value>
+ <value type="int">12</value>
+ <value type="int">13</value>
+ <value type="int">14</value>
+ </valuelist>
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
+ <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
+ <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.TargetCount</variable>
+ <value type="int">1</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+ <value type="int">18</value>
+ </data>
+ <data>
+ <variable>Version</variable>
+ <value type="int">18</value>
+ </data>
+</qtcreator>
diff --git a/plugins/Themes/Oxygen/DebugEngineMacro.h b/plugins/Themes/Oxygen/DebugEngineMacro.h
index 4582010..4582010 100644..100755
--- a/plugins/Themes/Oxygen/DebugEngineMacro.h
+++ b/plugins/Themes/Oxygen/DebugEngineMacro.h
diff --git a/plugins/Themes/Oxygen/Environment.h b/plugins/Themes/Oxygen/Environment.h
index 265a5a6..bc3418e 100644..100755
--- a/plugins/Themes/Oxygen/Environment.h
+++ b/plugins/Themes/Oxygen/Environment.h
@@ -3,7 +3,7 @@
\author alpha_one_x86
\licence GPL3, see the file COPYING */
-#include "Variable.h"
+#include "OxygenVariable.h"
/// \brief The global include
#include "StructEnumDefinition.h"
#include "DebugEngineMacro.h"
diff --git a/plugins/Themes/Oxygen/Languages/ar/translation.qm b/plugins/Themes/Oxygen/Languages/ar/translation.qm
new file mode 100755
index 0000000..2ac6267
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/ar/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/ar/translation.ts b/plugins/Themes/Oxygen/Languages/ar/translation.ts
index 2af674e..7db7d8a 100644
--- a/plugins/Themes/Oxygen/Languages/ar/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/ar/translation.ts
@@ -1,73 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1">
+<TS version="2.1" language="ar_JO">
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
- <translation type="unfinished"></translation>
+ <translation>شراء النسخة النهائية لتمويل التنمية</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
- <translation type="unfinished"></translation>
+ <translation>الملف %1/%2 ، الحجم: %3/%4</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
- <translation type="unfinished"></translation>
+ <translation>قائمة النسخ</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
- <translation type="unfinished"></translation>
+ <translation>قائمة النقل</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
- <translation type="unfinished"></translation>
+ <translation>عدم الإغلاق في حاله العثور على أخطاء</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
- <translation type="unfinished"></translation>
+ <translation>لا تغلق أبدا</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
- <translation type="unfinished"></translation>
+ <translation>إغلاق دائم</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
- <translation type="unfinished"></translation>
+ <translation>اسم الملف ، 0KB</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
- <translation type="unfinished"></translation>
+ <translation>تحديد لون</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
- <translation type="unfinished"></translation>
+ <translation>%1 %2% من %3</translation>
</message>
</context>
<context>
@@ -75,24 +63,24 @@
<message>
<location filename="../../ThemesFactory.cpp" line="284"/>
<source>Don&apos;t close if errors are found</source>
- <translation type="unfinished"></translation>
+ <translation>عدم الإغلاق في حاله العثور على أخطاء</translation>
</message>
<message>
<location filename="../../ThemesFactory.cpp" line="285"/>
<source>Never close</source>
- <translation type="unfinished"></translation>
+ <translation>لا تغلق أبدا</translation>
</message>
<message>
<location filename="../../ThemesFactory.cpp" line="286"/>
<source>Always close</source>
- <translation type="unfinished"></translation>
+ <translation>إغلاق دائم</translation>
</message>
<message>
<location filename="../../ThemesFactory.cpp" line="482"/>
<location filename="../../ThemesFactory.cpp" line="497"/>
<location filename="../../ThemesFactory.cpp" line="512"/>
<source>Select a color</source>
- <translation type="unfinished"></translation>
+ <translation>تحديد لون</translation>
</message>
</context>
<context>
@@ -100,158 +88,158 @@
<message>
<location filename="../../interface.ui" line="35"/>
<source>From:</source>
- <translation type="unfinished"></translation>
+ <translation>من:</translation>
</message>
<message>
<location filename="../../interface.ui" line="65"/>
<source>To:</source>
- <translation type="unfinished"></translation>
+ <translation>الى:</translation>
</message>
<message>
<location filename="../../interface.ui" line="226"/>
<source>&amp;More</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;تحريك</translation>
</message>
<message>
<location filename="../../interface.ui" line="246"/>
<source>&amp;Pause</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;مهلة</translation>
</message>
<message>
<location filename="../../interface.ui" line="260"/>
<source>&amp;Skip</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;تخطي</translation>
</message>
<message>
<location filename="../../interface.ui" line="271"/>
<source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;الغاء الامر</translation>
</message>
<message>
<location filename="../../interface.ui" line="118"/>
<source>Close on transfer completion</source>
- <translation type="unfinished"></translation>
+ <translation>إغلاق عند إتمام النقل</translation>
</message>
<message>
<location filename="../../interface.ui" line="286"/>
<source>Limit copy speed to:</source>
- <translation type="unfinished"></translation>
+ <translation>الحد من سرعه النسخ إلى:</translation>
</message>
<message>
<location filename="../../interface.ui" line="329"/>
<source>Transfer list</source>
- <translation type="unfinished"></translation>
+ <translation>قائمه النقل</translation>
</message>
<message>
<location filename="../../interface.ui" line="352"/>
<source>Move the selected items to the top</source>
- <translation type="unfinished"></translation>
+ <translation>تحريك المواد المحددة إلى الأعلى</translation>
</message>
<message>
<location filename="../../interface.ui" line="378"/>
<source>Move up the selected items</source>
- <translation type="unfinished"></translation>
+ <translation>تحريك المواد المحددة لاعلي</translation>
</message>
<message>
<location filename="../../interface.ui" line="404"/>
<source>Move down the selected items</source>
- <translation type="unfinished"></translation>
+ <translation>تحريك المواد المحددة لاسفل</translation>
</message>
<message>
<location filename="../../interface.ui" line="430"/>
<source>Move the selected items to the bottom</source>
- <translation type="unfinished"></translation>
+ <translation>تحريك العناصر المحددة إلى الأسفل</translation>
</message>
<message>
<location filename="../../interface.ui" line="456"/>
<source>Add file/folder</source>
- <translation type="unfinished"></translation>
+ <translation>أضافه ملف/مجلد</translation>
</message>
<message>
<location filename="../../interface.ui" line="485"/>
<source>Delete the selected items</source>
- <translation type="unfinished"></translation>
+ <translation>حذف المواد المحددة</translation>
</message>
<message>
<location filename="../../interface.ui" line="511"/>
<source>Search</source>
- <translation type="unfinished"></translation>
+ <translation>بحث</translation>
</message>
<message>
<location filename="../../interface.ui" line="540"/>
<source>Export the transfer list</source>
- <translation type="unfinished"></translation>
+ <translation>تصدير قائمه النقل</translation>
</message>
<message>
<location filename="../../interface.ui" line="566"/>
<source>Import the transfer list</source>
- <translation type="unfinished"></translation>
+ <translation>استيراد قائمه النقل</translation>
</message>
<message>
<location filename="../../interface.ui" line="621"/>
<source>Previous</source>
- <translation type="unfinished"></translation>
+ <translation>السابق</translation>
</message>
<message>
<location filename="../../interface.ui" line="628"/>
<source>Next</source>
- <translation type="unfinished"></translation>
+ <translation>التالي</translation>
</message>
<message>
<location filename="../../interface.ui" line="663"/>
<location filename="../../interface.ui" line="732"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation>الخطا</translation>
</message>
<message>
<location filename="../../interface.ui" line="683"/>
<source>Export the errors into transfer list</source>
- <translation type="unfinished"></translation>
+ <translation>تصدير الأخطاء إلى قائمه النقل</translation>
</message>
<message>
<location filename="../../interface.ui" line="722"/>
<source>Source</source>
- <translation type="unfinished"></translation>
+ <translation>المصدر</translation>
</message>
<message>
<location filename="../../interface.ui" line="727"/>
<source>Destination</source>
- <translation type="unfinished"></translation>
+ <translation>الوجهة</translation>
</message>
<message>
<location filename="../../interface.ui" line="741"/>
<source>Interface</source>
- <translation type="unfinished"></translation>
+ <translation>الواجهه</translation>
</message>
<message>
<location filename="../../interface.ui" line="778"/>
<source>Add file</source>
- <translation type="unfinished"></translation>
+ <translation>اضافة ملف</translation>
</message>
<message>
<location filename="../../interface.ui" line="787"/>
<source>Add folder</source>
- <translation type="unfinished"></translation>
+ <translation>اضافة مجلد</translation>
</message>
<message>
<location filename="../../interface.ui" line="796"/>
<source>Move file(s)</source>
- <translation type="unfinished"></translation>
+ <translation>تحريك الملفات</translation>
</message>
<message>
<location filename="../../interface.ui" line="805"/>
<source>Move folder</source>
- <translation type="unfinished"></translation>
+ <translation>تحريك المجلد</translation>
</message>
<message>
<location filename="../../interface.ui" line="814"/>
<source>Copy file(s)</source>
- <translation type="unfinished"></translation>
+ <translation>نسخ الملفات</translation>
</message>
<message>
<location filename="../../interface.ui" line="823"/>
<source>Copy folder</source>
- <translation type="unfinished"></translation>
+ <translation>نسخ المجلد</translation>
</message>
</context>
<context>
@@ -259,88 +247,88 @@
<message>
<location filename="../../themesOptions.ui" line="267"/>
<source>Show dual progression</source>
- <translation type="unfinished"></translation>
+ <translation>إظهار التقدم المزدوج</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="219"/>
<source>Show speed as main information</source>
- <translation type="unfinished"></translation>
+ <translation>إظهار السرعة كمعلومات رئيسيه</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="44"/>
<source>Use</source>
- <translation type="unfinished"></translation>
+ <translation>استخدام</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="173"/>
<source>Start with the &quot;more button&quot; pushed</source>
- <translation type="unfinished"></translation>
+ <translation>تبدا مع &quot;أكثر زر&quot; دفعت</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="67"/>
<source>Minimize on close to systray</source>
- <translation type="unfinished"></translation>
+ <translation>تصغير بالقرب من الدرج النظام</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="96"/>
<source>At the end of the copy</source>
- <translation type="unfinished"></translation>
+ <translation>في نهاية النسخ</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="103"/>
<location filename="../../themesOptions.ui" line="137"/>
<source>Limit copy speed to</source>
- <translation type="unfinished"></translation>
+ <translation>الحد من سرعه النسخ إلى</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="147"/>
<source> KB/s</source>
- <translation type="unfinished"></translation>
+ <translation>KB/s</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="53"/>
<source>Start minimized</source>
- <translation type="unfinished"></translation>
+ <translation>بدء التصغير</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="190"/>
<source>Save position</source>
- <translation type="unfinished"></translation>
+ <translation>حفظ الموضع</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="213"/>
<source>Informations</source>
- <translation type="unfinished"></translation>
+ <translation>المعلومات</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="251"/>
<source>Display</source>
- <translation type="unfinished"></translation>
+ <translation>عرض</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="257"/>
<source>Speed with progress bar</source>
- <translation type="unfinished"></translation>
+ <translation>السرعة مع شريط التقدم</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="287"/>
<source>Progression color</source>
- <translation type="unfinished"></translation>
+ <translation>تدرج اللون</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="306"/>
<source>Click to edit the color</source>
- <translation type="unfinished"></translation>
+ <translation>انقر لتحرير اللون</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="277"/>
<source>Show progression in the title</source>
- <translation type="unfinished"></translation>
+ <translation>إظهار التقدم في العنوان</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="183"/>
<source>Always on top</source>
- <translation type="unfinished"></translation>
+ <translation>دائما في القمه</translation>
</message>
</context>
</TS>
diff --git a/plugins/Themes/Oxygen/Languages/de/translation.qm b/plugins/Themes/Oxygen/Languages/de/translation.qm
new file mode 100755
index 0000000..6bbb305
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/de/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/de/translation.ts b/plugins/Themes/Oxygen/Languages/de/translation.ts
index af05eee..c4e5996 100644
--- a/plugins/Themes/Oxygen/Languages/de/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/de/translation.ts
@@ -4,70 +4,58 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation>Kaufe die Ultimate Version um die Entwicklung zu finanzieren</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation>Datei %1/%2, Größe:%3/%4</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation>Zu kopierende Dateien</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation>Zu verschiebende Dateien</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation>Nicht schließen, wenn Fehler aufgetreten sind</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation>Niemals schließen</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation>Immer schließen</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation>Dateiname, 0KB</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation>Farbe auswählen</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
- <translation type="unfinished"></translation>
+ <translation>%1 %2% von %3</translation>
</message>
</context>
<context>
@@ -259,7 +247,7 @@
<message>
<location filename="../../themesOptions.ui" line="267"/>
<source>Show dual progression</source>
- <translation>Zweifachen Fortschritt anzeigen</translation>
+ <translation></translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="219"/>
@@ -295,7 +283,7 @@
<message>
<location filename="../../themesOptions.ui" line="53"/>
<source>Start minimized</source>
- <translation type="unfinished"></translation>
+ <translation>Minimiert starten</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="306"/>
@@ -310,7 +298,7 @@
<message>
<location filename="../../themesOptions.ui" line="190"/>
<source>Save position</source>
- <translation type="unfinished"></translation>
+ <translation>Speichere Fensterposition</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="213"/>
@@ -340,7 +328,7 @@
<message>
<location filename="../../themesOptions.ui" line="183"/>
<source>Always on top</source>
- <translation>Fenster immer im Vordergrund</translation>
+ <translation>Fenster immer im Vordergrund halten</translation>
</message>
</context>
</TS>
diff --git a/plugins/Themes/Oxygen/Languages/el/translation.qm b/plugins/Themes/Oxygen/Languages/el/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/el/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/el/translation.ts b/plugins/Themes/Oxygen/Languages/el/translation.ts
index 2af674e..07732b2 100644..100755
--- a/plugins/Themes/Oxygen/Languages/el/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/el/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/en/translation.qm b/plugins/Themes/Oxygen/Languages/en/translation.qm
new file mode 100755
index 0000000..d925dd6
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/en/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/en/translation.ts b/plugins/Themes/Oxygen/Languages/en/translation.ts
index 8889b16..adebfce 100644..100755
--- a/plugins/Themes/Oxygen/Languages/en/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/en/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/es/translation.qm b/plugins/Themes/Oxygen/Languages/es/translation.qm
new file mode 100755
index 0000000..5d258b3
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/es/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/es/translation.ts b/plugins/Themes/Oxygen/Languages/es/translation.ts
index caf9b49..ce6281a 100644..100755
--- a/plugins/Themes/Oxygen/Languages/es/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/es/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation>Comprar la versión Ultimate para financiar el desarrollo</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation>El archivo %1/%2, el tamaño: %3/%4</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation>Lista de copia</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation>Lista de movimiento</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation>No cierre si se encuentran errores</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation>Nunca cierre</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation>Siempre cerrar</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation>Nombre de archivo, 0KB</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation>Seleccione un color</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/fr/translation.qm b/plugins/Themes/Oxygen/Languages/fr/translation.qm
new file mode 100755
index 0000000..3db8765
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/fr/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/fr/translation.ts b/plugins/Themes/Oxygen/Languages/fr/translation.ts
index 3eff652..0171ad9 100644..100755
--- a/plugins/Themes/Oxygen/Languages/fr/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/fr/translation.ts
@@ -4,19 +4,7 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="+303"/>
- <location line="+17"/>
- <source>%1 is deprecated, Use %2</source>
- <translation>%1 est obsolète, utilisez %2</translation>
- </message>
- <message>
- <location line="-14"/>
- <location line="+17"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation>Ce sera la dernière version pour Mac, mais vous pouvez compiler à partir des sources</translation>
- </message>
- <message>
- <location line="+2"/>
+ <location filename="../../interface.cpp" line="+327"/>
<source>Buy the Ultimate version to fund development</source>
<translation>Achetez la version Ultimate pour financer le développement</translation>
</message>
@@ -36,7 +24,7 @@
<translation>Liste de déplacements</translation>
</message>
<message>
- <location line="+421"/>
+ <location line="+428"/>
<source>Don&apos;t close if errors are found</source>
<translation>Garder ouvert s&apos;il y a des erreurs</translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/hi/translation.qm b/plugins/Themes/Oxygen/Languages/hi/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/hi/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/hi/translation.ts b/plugins/Themes/Oxygen/Languages/hi/translation.ts
index 2af674e..07732b2 100644..100755
--- a/plugins/Themes/Oxygen/Languages/hi/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/hi/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/hu/translation.qm b/plugins/Themes/Oxygen/Languages/hu/translation.qm
new file mode 100755
index 0000000..55200d4
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/hu/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/hu/translation.ts b/plugins/Themes/Oxygen/Languages/hu/translation.ts
index 426a524..04c522a 100644..100755
--- a/plugins/Themes/Oxygen/Languages/hu/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/hu/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation>Vásárold meg az Ultimate verziót a fejlesztés támogatásához</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation>Fájl %1/%2, méret: %3/%4</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation>Lista másolása</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation>Lista mozgatása</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation>Ne zárja be, ha hiba történik</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation>Sose zárja be</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation>Mindig zárja be</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation>Fájlnév, 0KB</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation>Válassz egy színt</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/id/translation.qm b/plugins/Themes/Oxygen/Languages/id/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/id/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/id/translation.ts b/plugins/Themes/Oxygen/Languages/id/translation.ts
index 2af674e..07732b2 100644..100755
--- a/plugins/Themes/Oxygen/Languages/id/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/id/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/it/translation.qm b/plugins/Themes/Oxygen/Languages/it/translation.qm
new file mode 100755
index 0000000..003803d
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/it/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/it/translation.ts b/plugins/Themes/Oxygen/Languages/it/translation.ts
index 5eb14bf..6738ae9 100644
--- a/plugins/Themes/Oxygen/Languages/it/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/it/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
- <translation>Acquista la versione Ultimate per finanziare lo sviluppo del programma</translation>
+ <translation>Acquista versione ultimate per finanziare lo sviluppo</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation>File %1/%2, dimensione: %3/%4</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
- <translation>Lista della copia</translation>
+ <translation>Lista di copia</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
- <translation>Lista dello spostamento</translation>
+ <translation>Lista di spostamento</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
- <translation>Non chiudere se vengono rilevati errori</translation>
+ <translation>Non chiudere se vengono trovati errori</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation>Non chiudere mai</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation>Chiudere sempre</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
- <translation>Nome del file, 0KB</translation>
+ <translation>Nome file, 0KB</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
- <translation>Scegliere un colore</translation>
+ <translation>Selezionare colore</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation>%1 %2% di %3</translation>
</message>
@@ -92,7 +80,7 @@
<location filename="../../ThemesFactory.cpp" line="497"/>
<location filename="../../ThemesFactory.cpp" line="512"/>
<source>Select a color</source>
- <translation>Scegliere un colore</translation>
+ <translation>Selezionare colore</translation>
</message>
</context>
<context>
@@ -105,72 +93,72 @@
<message>
<location filename="../../interface.ui" line="65"/>
<source>To:</source>
- <translation>a:</translation>
+ <translation>A:</translation>
</message>
<message>
<location filename="../../interface.ui" line="226"/>
<source>&amp;More</source>
- <translation>Altr&amp;o</translation>
+ <translation>Avanzate</translation>
</message>
<message>
<location filename="../../interface.ui" line="246"/>
<source>&amp;Pause</source>
- <translation>&amp;Pausa</translation>
+ <translation>Pausa</translation>
</message>
<message>
<location filename="../../interface.ui" line="260"/>
<source>&amp;Skip</source>
- <translation>&amp;Salta</translation>
+ <translation>Salta</translation>
</message>
<message>
<location filename="../../interface.ui" line="271"/>
<source>&amp;Cancel</source>
- <translation>&amp;Annulla</translation>
+ <translation>Annulla</translation>
</message>
<message>
<location filename="../../interface.ui" line="118"/>
<source>Close on transfer completion</source>
- <translation>Arresta il sistema a trasferimento comletato</translation>
+ <translation>Chiudi a trasferimento completato</translation>
</message>
<message>
<location filename="../../interface.ui" line="286"/>
<source>Limit copy speed to:</source>
- <translation>Limitare la velocità di copia a:</translation>
+ <translation>Limitare velocità di copia a:</translation>
</message>
<message>
<location filename="../../interface.ui" line="329"/>
<source>Transfer list</source>
- <translation>Lista dei trasferimenti</translation>
+ <translation>Lista di trasferimento</translation>
</message>
<message>
<location filename="../../interface.ui" line="352"/>
<source>Move the selected items to the top</source>
- <translation>Sposta in cima gli elementi selezionati</translation>
+ <translation>Metti elementi selezionati in cima</translation>
</message>
<message>
<location filename="../../interface.ui" line="378"/>
<source>Move up the selected items</source>
- <translation>Sposta sopra gli elementi selezionati</translation>
+ <translation>Sposta elementi selezionati in sù</translation>
</message>
<message>
<location filename="../../interface.ui" line="404"/>
<source>Move down the selected items</source>
- <translation>Sposta sotto gli elementi selezionati</translation>
+ <translation>Sposta elementi selezionati in giù</translation>
</message>
<message>
<location filename="../../interface.ui" line="430"/>
<source>Move the selected items to the bottom</source>
- <translation>Sposta in coda gli elementi selezionati</translation>
+ <translation>Metti elementi selezionati in coda</translation>
</message>
<message>
<location filename="../../interface.ui" line="456"/>
<source>Add file/folder</source>
- <translation>Aggiungi file/cartelle</translation>
+ <translation>Aggiungi file/cartella</translation>
</message>
<message>
<location filename="../../interface.ui" line="485"/>
<source>Delete the selected items</source>
- <translation>Elimina gli elementi selezionati</translation>
+ <translation>Elimina elementi selezionati</translation>
</message>
<message>
<location filename="../../interface.ui" line="511"/>
@@ -180,12 +168,12 @@
<message>
<location filename="../../interface.ui" line="540"/>
<source>Export the transfer list</source>
- <translation>Esporta la lista dei trasferimenti</translation>
+ <translation>Esporta lista di trasferimento</translation>
</message>
<message>
<location filename="../../interface.ui" line="566"/>
<source>Import the transfer list</source>
- <translation>Importa la lista dei trasferimenti</translation>
+ <translation>Importa lista di trasferimento</translation>
</message>
<message>
<location filename="../../interface.ui" line="621"/>
@@ -206,17 +194,17 @@
<message>
<location filename="../../interface.ui" line="683"/>
<source>Export the errors into transfer list</source>
- <translation>Esporta gli errori nella lista dei trasferimenti</translation>
+ <translation>Esporta errori in lista di trasferimento</translation>
</message>
<message>
<location filename="../../interface.ui" line="722"/>
<source>Source</source>
- <translation>Cartella di origine</translation>
+ <translation>Origine</translation>
</message>
<message>
<location filename="../../interface.ui" line="727"/>
<source>Destination</source>
- <translation>Cartella di destinazione</translation>
+ <translation>Destinazione</translation>
</message>
<message>
<location filename="../../interface.ui" line="741"/>
@@ -236,22 +224,22 @@
<message>
<location filename="../../interface.ui" line="796"/>
<source>Move file(s)</source>
- <translation>Sposta file</translation>
+ <translation>Spostare file</translation>
</message>
<message>
<location filename="../../interface.ui" line="805"/>
<source>Move folder</source>
- <translation>Sposta la cartella</translation>
+ <translation>Spostare cartella/e</translation>
</message>
<message>
<location filename="../../interface.ui" line="814"/>
<source>Copy file(s)</source>
- <translation>Copia file</translation>
+ <translation>Copiare file</translation>
</message>
<message>
<location filename="../../interface.ui" line="823"/>
<source>Copy folder</source>
- <translation>Copia la cartella</translation>
+ <translation>Copiare cartella/e</translation>
</message>
</context>
<context>
@@ -259,48 +247,48 @@
<message>
<location filename="../../themesOptions.ui" line="267"/>
<source>Show dual progression</source>
- <translation>Mostrare la doppia progressione</translation>
+ <translation>Mostrare progressione duale</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="219"/>
<source>Show speed as main information</source>
- <translation>Mostrare la velocità come principale informazione</translation>
+ <translation>Mostrare velocità come informazione principale</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="44"/>
<source>Use</source>
- <translation>Utilità</translation>
+ <translation>Funzionalità</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="173"/>
<source>Start with the &quot;more button&quot; pushed</source>
- <translation>Iniziare col pulsante &quot;Altro&quot; attivo</translation>
+ <translation>Avvio con bottone &quot;Avanzate&quot; premuto</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="67"/>
<source>Minimize on close to systray</source>
- <translation>Alla chiusura riduci nella&apos;area di notifica</translation>
+ <translation>Alla chiusura riduci nell&apos;area di notifica</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="96"/>
<source>At the end of the copy</source>
- <translation>Al termine della copia</translation>
+ <translation>A fine copia</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="103"/>
<location filename="../../themesOptions.ui" line="137"/>
<source>Limit copy speed to</source>
- <translation>Limitare la velocità di copia a</translation>
+ <translation>Limitare velocità di copia a</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="53"/>
<source>Start minimized</source>
- <translation type="unfinished"></translation>
+ <translation>Avvia ridotto a icona</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="306"/>
<source>Click to edit the color</source>
- <translation>Clicca per modificare il colore</translation>
+ <translation>Cliccare per modificare colore</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="147"/>
@@ -310,7 +298,7 @@
<message>
<location filename="../../themesOptions.ui" line="190"/>
<source>Save position</source>
- <translation type="unfinished"></translation>
+ <translation>Salva posizione</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="213"/>
@@ -320,22 +308,22 @@
<message>
<location filename="../../themesOptions.ui" line="251"/>
<source>Display</source>
- <translation>Visualizza</translation>
+ <translation>Visualizzazione</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="257"/>
<source>Speed with progress bar</source>
- <translation>Velocità nella barra di progresso</translation>
+ <translation>Velocità in barra progresso</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="287"/>
<source>Progression color</source>
- <translation>Colore della progressione</translation>
+ <translation>Colore progressione</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="277"/>
<source>Show progression in the title</source>
- <translation>Mostrare la percentuale di progresso sul titolo</translation>
+ <translation>Mostra percentuale di progresso nel titolo</translation>
</message>
<message>
<location filename="../../themesOptions.ui" line="183"/>
diff --git a/plugins/Themes/Oxygen/Languages/ja/translation.qm b/plugins/Themes/Oxygen/Languages/ja/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/ja/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/ja/translation.ts b/plugins/Themes/Oxygen/Languages/ja/translation.ts
index 526af3f..6f9cbf8 100644..100755
--- a/plugins/Themes/Oxygen/Languages/ja/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/ja/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/ko/translation.qm b/plugins/Themes/Oxygen/Languages/ko/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/ko/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/ko/translation.ts b/plugins/Themes/Oxygen/Languages/ko/translation.ts
index e1280d7..4581886 100644..100755
--- a/plugins/Themes/Oxygen/Languages/ko/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/ko/translation.ts
@@ -4,19 +4,7 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="+303"/>
- <location line="+17"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="-14"/>
- <location line="+17"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location line="+2"/>
+ <location filename="../../interface.cpp" line="+327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
@@ -36,7 +24,7 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location line="+421"/>
+ <location line="+428"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished">오류 발견시 종료 안함</translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/nl/translation.qm b/plugins/Themes/Oxygen/Languages/nl/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/nl/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/nl/translation.ts b/plugins/Themes/Oxygen/Languages/nl/translation.ts
index 2af674e..07732b2 100644..100755
--- a/plugins/Themes/Oxygen/Languages/nl/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/nl/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/no/translation.qm b/plugins/Themes/Oxygen/Languages/no/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/no/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/no/translation.ts b/plugins/Themes/Oxygen/Languages/no/translation.ts
index 2af674e..07732b2 100644..100755
--- a/plugins/Themes/Oxygen/Languages/no/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/no/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/pl/translation.qm b/plugins/Themes/Oxygen/Languages/pl/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/pl/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/pl/translation.ts b/plugins/Themes/Oxygen/Languages/pl/translation.ts
index 2af674e..07732b2 100644..100755
--- a/plugins/Themes/Oxygen/Languages/pl/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/pl/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/pt/translation.qm b/plugins/Themes/Oxygen/Languages/pt/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/pt/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/pt/translation.ts b/plugins/Themes/Oxygen/Languages/pt/translation.ts
index 2af674e..07732b2 100644..100755
--- a/plugins/Themes/Oxygen/Languages/pt/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/pt/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/ru/translation.qm b/plugins/Themes/Oxygen/Languages/ru/translation.qm
new file mode 100755
index 0000000..ff20604
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/ru/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/ru/translation.ts b/plugins/Themes/Oxygen/Languages/ru/translation.ts
index 3fd1814..0347921 100644..100755
--- a/plugins/Themes/Oxygen/Languages/ru/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/ru/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation>Файл %1/%2, размер: %3/%4</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished">Копировать список</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished">Не закрывать, если найдены ошибки</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished">Никогда не закрывать</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished">Всегда закрывайте</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation>Имя файла, 0KB</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/th/translation.qm b/plugins/Themes/Oxygen/Languages/th/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/th/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/th/translation.ts b/plugins/Themes/Oxygen/Languages/th/translation.ts
index 2af674e..07732b2 100644..100755
--- a/plugins/Themes/Oxygen/Languages/th/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/th/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/tr/translation.qm b/plugins/Themes/Oxygen/Languages/tr/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/tr/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/tr/translation.ts b/plugins/Themes/Oxygen/Languages/tr/translation.ts
index 2af674e..07732b2 100644..100755
--- a/plugins/Themes/Oxygen/Languages/tr/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/tr/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Languages/zh/translation.qm b/plugins/Themes/Oxygen/Languages/zh/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen/Languages/zh/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen/Languages/zh/translation.ts b/plugins/Themes/Oxygen/Languages/zh/translation.ts
index 526af3f..6f9cbf8 100644..100755
--- a/plugins/Themes/Oxygen/Languages/zh/translation.ts
+++ b/plugins/Themes/Oxygen/Languages/zh/translation.ts
@@ -4,68 +4,56 @@
<context>
<name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="303"/>
- <location filename="../../interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="306"/>
- <location filename="../../interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../interface.cpp" line="325"/>
+ <location filename="../../interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="410"/>
+ <location filename="../../interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="644"/>
+ <location filename="../../interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="646"/>
+ <location filename="../../interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1067"/>
+ <location filename="../../interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1068"/>
+ <location filename="../../interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1069"/>
+ <location filename="../../interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1071"/>
+ <location filename="../../interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1265"/>
- <location filename="../../interface.cpp" line="1277"/>
- <location filename="../../interface.cpp" line="1289"/>
+ <location filename="../../interface.cpp" line="1274"/>
+ <location filename="../../interface.cpp" line="1286"/>
+ <location filename="../../interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="1364"/>
- <location filename="../../interface.cpp" line="1368"/>
- <location filename="../../interface.cpp" line="1370"/>
+ <location filename="../../interface.cpp" line="1373"/>
+ <location filename="../../interface.cpp" line="1377"/>
+ <location filename="../../interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins/Themes/Oxygen/Variable.h b/plugins/Themes/Oxygen/OxygenVariable.h
index 9f9af0d..029f6c3 100644..100755
--- a/plugins/Themes/Oxygen/Variable.h
+++ b/plugins/Themes/Oxygen/OxygenVariable.h
@@ -9,7 +9,7 @@
//Un-comment this next line to put ultracopier plugin in debug mode
#ifndef ULTRACOPIER_NODEBUG
-#define ULTRACOPIER_PLUGIN_DEBUG
+//#define ULTRACOPIER_PLUGIN_DEBUG
#endif
#endif // VARIABLE_H
diff --git a/plugins/Themes/Oxygen/README.md b/plugins/Themes/Oxygen/README.md
index b529701..b529701 100644..100755
--- a/plugins/Themes/Oxygen/README.md
+++ b/plugins/Themes/Oxygen/README.md
diff --git a/plugins/Themes/Oxygen/StructEnumDefinition.h b/plugins/Themes/Oxygen/StructEnumDefinition.h
index c1758f4..c1758f4 100644..100755
--- a/plugins/Themes/Oxygen/StructEnumDefinition.h
+++ b/plugins/Themes/Oxygen/StructEnumDefinition.h
diff --git a/plugins/Themes/Oxygen/ThemesFactory.cpp b/plugins/Themes/Oxygen/ThemesFactory.cpp
index 8d3c090..8d3c090 100644..100755
--- a/plugins/Themes/Oxygen/ThemesFactory.cpp
+++ b/plugins/Themes/Oxygen/ThemesFactory.cpp
diff --git a/plugins/Themes/Oxygen/ThemesFactory.h b/plugins/Themes/Oxygen/ThemesFactory.h
index e29d430..e29d430 100644..100755
--- a/plugins/Themes/Oxygen/ThemesFactory.h
+++ b/plugins/Themes/Oxygen/ThemesFactory.h
diff --git a/plugins/Themes/Oxygen/TransferModel.cpp b/plugins/Themes/Oxygen/TransferModel.cpp
index 2959598..2959598 100644..100755
--- a/plugins/Themes/Oxygen/TransferModel.cpp
+++ b/plugins/Themes/Oxygen/TransferModel.cpp
diff --git a/plugins/Themes/Oxygen/TransferModel.h b/plugins/Themes/Oxygen/TransferModel.h
index e572f9e..e572f9e 100644..100755
--- a/plugins/Themes/Oxygen/TransferModel.h
+++ b/plugins/Themes/Oxygen/TransferModel.h
diff --git a/plugins/Themes/Oxygen/documentation.dox b/plugins/Themes/Oxygen/documentation.dox
index d94ce0b..d94ce0b 100644..100755
--- a/plugins/Themes/Oxygen/documentation.dox
+++ b/plugins/Themes/Oxygen/documentation.dox
diff --git a/plugins/Themes/Oxygen/informations.xml b/plugins/Themes/Oxygen/informations.xml
index 1b2222e..048caa3 100644..100755
--- a/plugins/Themes/Oxygen/informations.xml
+++ b/plugins/Themes/Oxygen/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[Oxygen style for Ultracopier]]></description>
<description xml:lang="fr"><![CDATA[Style oxygen pour Ultracopier]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>Oxygen</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Themes/Oxygen/interface.cpp b/plugins/Themes/Oxygen/interface.cpp
index 22d1b24..4a8b83e 100644..100755
--- a/plugins/Themes/Oxygen/interface.cpp
+++ b/plugins/Themes/Oxygen/interface.cpp
@@ -56,13 +56,31 @@ Themes::Themes(const bool &alwaysOnTop,
const bool &minimizeToSystray,
const bool &startMinimized,
const bool &savePosition) :
+ duration(0),
+ durationStarted(false),
ui(new Ui::interfaceCopy()),
- uiOptions(new Ui::themesOptions())
+ uiOptions(new Ui::themesOptions()),
+ currentFile(0),
+ totalFile(0),
+ currentSize(0),
+ totalSize(0),
+ getOldProgression(0),
+ sysTrayIcon(NULL),
+ menu(NULL),
+ action(Ultracopier::EngineActionInProgress::Idle),
+ currentSpeed(0),
+ storeIsInPause(false),
+ modeIsForced(false),
+ type(Ultracopier::CopyType::FileAndFolder),
+ mode(Ultracopier::CopyMode::Copy),
+ haveStarted(false),
+ haveError(false)
{
this->facilityEngine=facilityEngine;
ui->setupUi(this);
uiOptions->setupUi(ui->optionsTab);
+ m_havePause=false;
currentFile = 0;
totalFile = 0;
currentSize = 0;
@@ -298,17 +316,7 @@ Themes::Themes(const bool &alwaysOnTop,
uiOptions->alwaysOnTop->hide();
#endif*/
if(facilityEngine->isUltimate())
- {
- #ifdef SUPERCOPIER
- ui->ad_ultimate->setText(tr("%1 is deprecated, Use %2").arg("<span style=\"color:#ee0000\">Super</span><span style=\"color:#0000cc\">Copier</span>").arg("<a href=\"http://ultracopier.first-world.info/\">Ultracopier</a>"));
- #else
- #ifdef Q_OS_MACOS
- ui->ad_ultimate->setText(tr("This will be the last version for Mac, but you can compile from source"));
- #else
- ui->ad_ultimate->hide();
- #endif
- #endif
- }
+ ui->ad_ultimate->hide();
else
{
QString ultimateUrl=QString::fromStdString(facilityEngine->ultimateUrl());
@@ -316,12 +324,6 @@ Themes::Themes(const bool &alwaysOnTop,
ui->ad_ultimate->hide();
else
ui->ad_ultimate->setText(
- #ifdef SUPERCOPIER
- tr("%1 is deprecated, Use %2").arg("<span style=\"color:#ee0000\">Super</span><span style=\"color:#0000cc\">copier</span>").arg("<a href=\"http://ultracopier.first-world.info/\">Ultracopier</a><br />")+
- #endif
- #ifdef Q_OS_MACOS
- tr("This will be the last version for Mac, but you can compile from source")+
- #endif
QStringLiteral("<a href=\"%1\">%2</a>").arg(ultimateUrl).arg(tr("Buy the Ultimate version to fund development")));
}
@@ -668,6 +670,13 @@ void Themes::isInPause(const bool &isInPause)
updatePause();
}
+/// \brief set have pause
+void Themes::havePause(const bool &havePause)
+{
+ ui->pauseButton->setEnabled(havePause);
+ m_havePause=havePause;
+}
+
void Themes::updatePause()
{
if(storeIsInPause)
@@ -1510,3 +1519,6 @@ void Themes::on_exportErrorToTransferList_clicked()
emit exportErrorIntoTransferList();
}
+void Themes::doneTime(const std::vector<std::pair<uint64_t,uint32_t> > &)
+{
+}
diff --git a/plugins/Themes/Oxygen/interface.h b/plugins/Themes/Oxygen/interface.h
index 10e7a00..41849bd 100644..100755
--- a/plugins/Themes/Oxygen/interface.h
+++ b/plugins/Themes/Oxygen/interface.h
@@ -95,6 +95,8 @@ public:
void haveExternalOrder();
/// \brief set if is in pause
void isInPause(const bool &);
+ /// \brief set if have pause
+ void havePause(const bool &);
/// \brief get the widget for the copy engine
QWidget * getOptionsEngineWidget();
/// \brief to set if the copy engine is found
@@ -104,6 +106,8 @@ public:
public slots:
/// \brief set the translate
void newLanguageLoaded();
+ /// to get by file speed
+ void doneTime(const std::vector<std::pair<uint64_t,uint32_t> > &);
private slots:
void on_putOnTop_clicked();
void on_pushUp_clicked();
@@ -188,6 +192,7 @@ private:
QModelIndexList selectedItems;
/// \brief the custom transfer model
TransferModel transferModel;
+ bool m_havePause;
static QIcon player_play,player_pause,tempExitIcon,editDelete,skinIcon,editFind,documentOpen,documentSave,listAdd;
static bool iconLoaded;
diff --git a/plugins/Themes/Oxygen/interface.pro b/plugins/Themes/Oxygen/interface.pro
index 9b4923d..f5f4fde 100644..100755
--- a/plugins/Themes/Oxygen/interface.pro
+++ b/plugins/Themes/Oxygen/interface.pro
@@ -1,4 +1,6 @@
include($$PWD/../Oxygen/interfaceInclude.pri)
+TEMPLATE = lib
+CONFIG += plugin
!CONFIG(static) {
RESOURCES += \
diff --git a/plugins/Themes/Oxygen/interface.ui b/plugins/Themes/Oxygen/interface.ui
index ef07b17..ef07b17 100644..100755
--- a/plugins/Themes/Oxygen/interface.ui
+++ b/plugins/Themes/Oxygen/interface.ui
diff --git a/plugins/Themes/Oxygen/interfaceInclude.pri b/plugins/Themes/Oxygen/interfaceInclude.pri
index 5f7317b..54507c6 100644..100755
--- a/plugins/Themes/Oxygen/interfaceInclude.pri
+++ b/plugins/Themes/Oxygen/interfaceInclude.pri
@@ -3,14 +3,12 @@ QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
QT += widgets
-TEMPLATE = lib
-CONFIG += plugin
HEADERS = \
$$PWD/ThemesFactory.h \
$$PWD/StructEnumDefinition.h \
$$PWD/DebugEngineMacro.h \
$$PWD/Environment.h \
- $$PWD/Variable.h \
+ $$PWD/OxygenVariable.h \
$$PWD/../../../interface/PluginInterface_Themes.h \
$$PWD/../../../interface/FacilityInterface.h \
$$PWD/../../../interface/OptionInterface.h \
diff --git a/plugins/Themes/Oxygen/interfaceResources.qrc b/plugins/Themes/Oxygen/interfaceResources.qrc
index 60060b3..60060b3 100644..100755
--- a/plugins/Themes/Oxygen/interfaceResources.qrc
+++ b/plugins/Themes/Oxygen/interfaceResources.qrc
diff --git a/plugins/Themes/Oxygen/interfaceResources_unix.qrc b/plugins/Themes/Oxygen/interfaceResources_unix.qrc
index 27fb1d2..27fb1d2 100644..100755
--- a/plugins/Themes/Oxygen/interfaceResources_unix.qrc
+++ b/plugins/Themes/Oxygen/interfaceResources_unix.qrc
diff --git a/plugins/Themes/Oxygen/interfaceResources_windows.qrc b/plugins/Themes/Oxygen/interfaceResources_windows.qrc
index f917ac3..f917ac3 100644..100755
--- a/plugins/Themes/Oxygen/interfaceResources_windows.qrc
+++ b/plugins/Themes/Oxygen/interfaceResources_windows.qrc
diff --git a/plugins/Themes/Oxygen/options.ui b/plugins/Themes/Oxygen/options.ui
index 23b4ac5..23b4ac5 100644..100755
--- a/plugins/Themes/Oxygen/options.ui
+++ b/plugins/Themes/Oxygen/options.ui
diff --git a/plugins/Themes/Oxygen/plugin.json b/plugins/Themes/Oxygen/plugin.json
index 9e26dfe..9e26dfe 100644..100755
--- a/plugins/Themes/Oxygen/plugin.json
+++ b/plugins/Themes/Oxygen/plugin.json
diff --git a/plugins/Themes/Oxygen/resources/SystemTrayIcon/add.png b/plugins/Themes/Oxygen/resources/SystemTrayIcon/add.png
index 7932127..7932127 100644..100755
--- a/plugins/Themes/Oxygen/resources/SystemTrayIcon/add.png
+++ b/plugins/Themes/Oxygen/resources/SystemTrayIcon/add.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/SystemTrayIcon/exit.png b/plugins/Themes/Oxygen/resources/SystemTrayIcon/exit.png
index ae3c4e8..ae3c4e8 100644..100755
--- a/plugins/Themes/Oxygen/resources/SystemTrayIcon/exit.png
+++ b/plugins/Themes/Oxygen/resources/SystemTrayIcon/exit.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/SystemTrayIcon/informations.png b/plugins/Themes/Oxygen/resources/SystemTrayIcon/informations.png
index 5b7b255..5b7b255 100644..100755
--- a/plugins/Themes/Oxygen/resources/SystemTrayIcon/informations.png
+++ b/plugins/Themes/Oxygen/resources/SystemTrayIcon/informations.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/SystemTrayIcon/options.png b/plugins/Themes/Oxygen/resources/SystemTrayIcon/options.png
index 23ec531..23ec531 100644..100755
--- a/plugins/Themes/Oxygen/resources/SystemTrayIcon/options.png
+++ b/plugins/Themes/Oxygen/resources/SystemTrayIcon/options.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Unix.png b/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Unix.png
index 6f5d1cf..6f5d1cf 100644..100755
--- a/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Unix.png
+++ b/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Unix.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Windows.png b/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Windows.png
index 5464856..5464856 100644..100755
--- a/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Windows.png
+++ b/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Windows.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png b/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
index b2bb2e3..b2bb2e3 100644..100755
--- a/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
+++ b/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png b/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
index 0abeb5f..0abeb5f 100644..100755
--- a/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
+++ b/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Uncaught_Unix.png b/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Uncaught_Unix.png
index 5e313b9..5e313b9 100644..100755
--- a/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Uncaught_Unix.png
+++ b/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Uncaught_Unix.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Uncaught_Windows.png b/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Uncaught_Windows.png
index 828e7e6..828e7e6 100644..100755
--- a/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Uncaught_Windows.png
+++ b/plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Uncaught_Windows.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/add.png b/plugins/Themes/Oxygen/resources/add.png
index 7932127..7932127 100644..100755
--- a/plugins/Themes/Oxygen/resources/add.png
+++ b/plugins/Themes/Oxygen/resources/add.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/cancel.png b/plugins/Themes/Oxygen/resources/cancel.png
index ae3c4e8..ae3c4e8 100644..100755
--- a/plugins/Themes/Oxygen/resources/cancel.png
+++ b/plugins/Themes/Oxygen/resources/cancel.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/export-transfer-list.png b/plugins/Themes/Oxygen/resources/export-transfer-list.png
index 3a0aac6..3a0aac6 100644..100755
--- a/plugins/Themes/Oxygen/resources/export-transfer-list.png
+++ b/plugins/Themes/Oxygen/resources/export-transfer-list.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/import-transfer-list.png b/plugins/Themes/Oxygen/resources/import-transfer-list.png
index ee47f0d..ee47f0d 100644..100755
--- a/plugins/Themes/Oxygen/resources/import-transfer-list.png
+++ b/plugins/Themes/Oxygen/resources/import-transfer-list.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/main.png b/plugins/Themes/Oxygen/resources/main.png
index 5464856..5464856 100644..100755
--- a/plugins/Themes/Oxygen/resources/main.png
+++ b/plugins/Themes/Oxygen/resources/main.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/moveDown.png b/plugins/Themes/Oxygen/resources/moveDown.png
index 82a312c..82a312c 100644..100755
--- a/plugins/Themes/Oxygen/resources/moveDown.png
+++ b/plugins/Themes/Oxygen/resources/moveDown.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/moveUp.png b/plugins/Themes/Oxygen/resources/moveUp.png
index 7f7ba72..7f7ba72 100644..100755
--- a/plugins/Themes/Oxygen/resources/moveUp.png
+++ b/plugins/Themes/Oxygen/resources/moveUp.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/player_end.png b/plugins/Themes/Oxygen/resources/player_end.png
index 18982db..18982db 100644..100755
--- a/plugins/Themes/Oxygen/resources/player_end.png
+++ b/plugins/Themes/Oxygen/resources/player_end.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/player_pause.png b/plugins/Themes/Oxygen/resources/player_pause.png
index 68ee21f..68ee21f 100644..100755
--- a/plugins/Themes/Oxygen/resources/player_pause.png
+++ b/plugins/Themes/Oxygen/resources/player_pause.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/player_play.png b/plugins/Themes/Oxygen/resources/player_play.png
index a1c5b83..a1c5b83 100644..100755
--- a/plugins/Themes/Oxygen/resources/player_play.png
+++ b/plugins/Themes/Oxygen/resources/player_play.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/putOnBottom.png b/plugins/Themes/Oxygen/resources/putOnBottom.png
index 512286e..512286e 100644..100755
--- a/plugins/Themes/Oxygen/resources/putOnBottom.png
+++ b/plugins/Themes/Oxygen/resources/putOnBottom.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/putOnTop.png b/plugins/Themes/Oxygen/resources/putOnTop.png
index 30fe96b..30fe96b 100644..100755
--- a/plugins/Themes/Oxygen/resources/putOnTop.png
+++ b/plugins/Themes/Oxygen/resources/putOnTop.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/remove.png b/plugins/Themes/Oxygen/resources/remove.png
index b711740..b711740 100644..100755
--- a/plugins/Themes/Oxygen/resources/remove.png
+++ b/plugins/Themes/Oxygen/resources/remove.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/resources/search.png b/plugins/Themes/Oxygen/resources/search.png
index cef1836..cef1836 100644..100755
--- a/plugins/Themes/Oxygen/resources/search.png
+++ b/plugins/Themes/Oxygen/resources/search.png
Binary files differ
diff --git a/plugins/Themes/Oxygen/themesOptions.ui b/plugins/Themes/Oxygen/themesOptions.ui
index 366ca68..366ca68 100644..100755
--- a/plugins/Themes/Oxygen/themesOptions.ui
+++ b/plugins/Themes/Oxygen/themesOptions.ui
diff --git a/plugins/Themes/Oxygen2/DarkButton.cpp b/plugins/Themes/Oxygen2/DarkButton.cpp
new file mode 100755
index 0000000..06b09f1
--- /dev/null
+++ b/plugins/Themes/Oxygen2/DarkButton.cpp
@@ -0,0 +1,99 @@
+#include "DarkButton.h"
+#include <QPainter>
+
+DarkButton::DarkButton(QWidget *parent) :
+ QPushButton(parent)
+{
+ setMinimumHeight(36);
+ setMaximumHeight(36);
+ setStyleSheet("border:none;color:#afb;");
+ over=false;
+ enabled=true;
+}
+
+void DarkButton::paintEvent(QPaintEvent * event)
+{
+ if(backgroundLeft.isNull() || backgroundLeft.height()!=height())
+ {
+ QPixmap background(":/Themes/Oxygen2/resources/darkButton.png");
+ if(background.isNull())
+ abort();
+ QPixmap backgroundPushed(":/Themes/Oxygen2/resources/darkButtonPushed.png");
+ if(backgroundPushed.isNull())
+ abort();
+ QPixmap over(":/Themes/Oxygen2/resources/darkButtonOver.png");
+ if(over.isNull())
+ abort();
+ if(height()==background.height())
+ {
+ backgroundLeft=background.copy(0,0,10,36);
+ backgroundMiddle=background.copy(10,0,46,36);
+ backgroundRight=background.copy(56,0,10,36);
+ backgroundPushedLeft=backgroundPushed.copy(0,0,10,36);
+ backgroundPushedMiddle=backgroundPushed.copy(10,0,46,36);
+ backgroundPushedRight=backgroundPushed.copy(56,0,10,36);
+ overLeft=over.copy(0,0,10,36);
+ overMiddle=over.copy(10,0,46,36);
+ overRight=over.copy(56,0,10,36);
+ }
+ else
+ {
+ backgroundLeft=background.copy(0,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundMiddle=background.copy(10,0,46,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundRight=background.copy(56,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundPushedLeft=backgroundPushed.copy(0,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundPushedMiddle=backgroundPushed.copy(10,0,46,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundPushedRight=backgroundPushed.copy(56,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ overLeft=over.copy(0,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ overMiddle=over.copy(10,0,46,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ overRight=over.copy(56,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ }
+ }
+ QPainter paint;
+ paint.begin(this);
+ if(enabled && !isEnabled())
+ {
+ setStyleSheet("border:none;color:#fab;");
+ enabled=false;
+ }
+ if(!enabled && isEnabled())
+ {
+ setStyleSheet("border:none;color:#afb;");
+ enabled=true;
+ }
+ if(isDown() && isEnabled())
+ {
+ paint.drawPixmap(0,0,backgroundPushedLeft.width(), backgroundPushedLeft.height(), backgroundPushedLeft);
+ paint.drawPixmap(backgroundPushedLeft.width(), 0,
+ width()-backgroundPushedLeft.width()-backgroundPushedRight.width(), backgroundPushedLeft.height(),backgroundPushedMiddle);
+ paint.drawPixmap(width()-backgroundPushedRight.width(),0, backgroundPushedRight.width(), backgroundPushedRight.height(),backgroundPushedRight);
+ }
+ else
+ {
+ paint.drawPixmap(0,0,backgroundLeft.width(), backgroundLeft.height(), backgroundLeft);
+ paint.drawPixmap(backgroundLeft.width(), 0,
+ width()-backgroundLeft.width()-backgroundRight.width(), backgroundLeft.height(),backgroundMiddle);
+ paint.drawPixmap(width()-backgroundRight.width(),0, backgroundRight.width(), backgroundRight.height(),backgroundRight);
+ }
+ if(over && isEnabled())
+ {
+ paint.drawPixmap(0,0,overLeft.width(), overLeft.height(), overLeft);
+ paint.drawPixmap(overLeft.width(), 0,
+ width()-overLeft.width()-overRight.width(), overLeft.height(),overMiddle);
+ paint.drawPixmap(width()-overRight.width(),0, overRight.width(), overRight.height(),overRight);
+ }
+ QPushButton::paintEvent(event);
+}
+
+void DarkButton::enterEvent(QEvent *e)
+{
+ over=true;
+ QWidget::enterEvent(e);
+ update();
+}
+void DarkButton::leaveEvent(QEvent *e)
+{
+ over=false;
+ QWidget::leaveEvent(e);
+ update();
+}
diff --git a/plugins/Themes/Oxygen2/DarkButton.h b/plugins/Themes/Oxygen2/DarkButton.h
new file mode 100755
index 0000000..38dbb60
--- /dev/null
+++ b/plugins/Themes/Oxygen2/DarkButton.h
@@ -0,0 +1,22 @@
+#ifndef DarkButton_H
+#define DarkButton_H
+
+#include <QPushButton>
+
+class DarkButton : public QPushButton
+{
+public:
+ DarkButton(QWidget *parent = nullptr);
+ void paintEvent(QPaintEvent *) override;
+protected:
+ void enterEvent(QEvent *e) override;
+ void leaveEvent(QEvent *e) override;
+private:
+ QPixmap backgroundLeft,backgroundMiddle,backgroundRight;
+ QPixmap backgroundPushedLeft,backgroundPushedMiddle,backgroundPushedRight;
+ QPixmap overLeft,overMiddle,overRight;
+ bool over;
+ bool enabled;
+};
+
+#endif // PROGRESSBARDARK_H
diff --git a/plugins/Themes/Oxygen2/DebugEngineMacro.h b/plugins/Themes/Oxygen2/DebugEngineMacro.h
new file mode 100755
index 0000000..4582010
--- /dev/null
+++ b/plugins/Themes/Oxygen2/DebugEngineMacro.h
@@ -0,0 +1,28 @@
+/** \file DebugEngineMacro.h
+\brief Define the macro for the debug
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef DEBUGENGINEMACRO_H
+#define DEBUGENGINEMACRO_H
+
+#ifdef WIN32
+# define __func__ __FUNCTION__
+#endif
+
+/// \brief Macro for the debug log
+#ifdef ULTRACOPIER_PLUGIN_DEBUG
+ #if defined (__FILE__) && defined (__LINE__)
+ #define ULTRACOPIER_DEBUGCONSOLE(a,b) emit debugInformation(a,__func__,b,__FILE__,__LINE__)
+ #else
+ #define ULTRACOPIER_DEBUGCONSOLE(a,b) emit debugInformation(a,__func__,b)
+ #endif
+#else // ULTRACOPIER_DEBUG
+ #define ULTRACOPIER_DEBUGCONSOLE(a,b) void()
+#endif // ULTRACOPIER_DEBUG
+
+#endif // DEBUGENGINEMACRO_H
+
+
+
+
diff --git a/plugins/Themes/Oxygen2/Environment.h b/plugins/Themes/Oxygen2/Environment.h
new file mode 100755
index 0000000..265a5a6
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Environment.h
@@ -0,0 +1,10 @@
+/** \file Environment.h
+\brief Define the environment variable and global function
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include "Variable.h"
+/// \brief The global include
+#include "StructEnumDefinition.h"
+#include "DebugEngineMacro.h"
+
diff --git a/plugins/Themes/Oxygen2/Languages/ar/translation.qm b/plugins/Themes/Oxygen2/Languages/ar/translation.qm
new file mode 100755
index 0000000..563a429
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/ar/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/ar/translation.ts b/plugins/Themes/Oxygen2/Languages/ar/translation.ts
new file mode 100644
index 0000000..383e6a3
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/ar/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ar_JO">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation>ملفات %1</translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation>%1 ملف ، بمتوسط حجم %2</translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation>إلى ملفات %1</translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation>شراء النسخة النهائية لتمويل التنمية</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation>الملف %1/%2 ، الحجم: %3/%4</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation>قائمة النسخ</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation>قائمة التحريك</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>لا تغلق إذا تم العثور على أخطاء</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation>لا تغلق</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation>إغلاق دائما</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation>اسم الملف ، 0KB</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation>تحديد لون</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation>%1 %2% من %3 إلى ملفات %4</translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>عدم الإغلاق في حاله العثور على أخطاء</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation>لا تغلق أبدا</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation>إغلاق دائما</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation>تحديد لون</translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation>من:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation>&amp;اكثر </translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;مهلة</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;تخطي</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;الغاء الامر</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation>إغلاق عند إتمام النقل</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation>100MB+</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation>الحد من سرعه النسخ إلى:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation>قائمه النقل</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation>تحريك المواد المحددة إلى الأعلى</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation>تحريك المواد المحددة لاعلى</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation>تحريك المواد المحددة لأسفل</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation>تحريك العناصر المحددة إلى الأسفل</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation>أضافه ملف/مجلد</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation>حذف المواد المحددة</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation>بحث</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation>تصدير قائمه النقل</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation>استيراد قائمه النقل</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation>السابق</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation>التالي</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation>خطا</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation>تصدير الأخطاء إلى قائمه النقل</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation>المصدر</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation>الوجهه</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation>الواجهه</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation>اضافة ملف</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation>اضافة مجلد</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation>نقل الملفات</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation>نقل المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation>نسخ الملفات</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation>نسخ المجلد</translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation>إظهار التقدم المزدوج</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation>إظهار السرعة كمعلومات رئيسيه</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation>استخدام</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation>تبدا مع &quot;أكثر زر&quot; دفعت</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation>تصغير بالقرب من درج النظام</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation>في نهاية النسخ</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation>الحد من سرعه النسخ إلى</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation>KB/s</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation>بدء التصغير</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation>الموضع في البداية</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation>واجهه مستخدم داكنه</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation>افتراضي</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation>حفظ كسابق</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation>في الوسط</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation>المعلومات</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation>عرض</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation>السرعة مع شريط التقدم</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation>تدرج اللون</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation>انقر لتحرير اللون</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation>إظهار التقدم في العنوان</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation>دائما في القمه</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/de/translation.qm b/plugins/Themes/Oxygen2/Languages/de/translation.qm
new file mode 100755
index 0000000..ef742de
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/de/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/de/translation.ts b/plugins/Themes/Oxygen2/Languages/de/translation.ts
new file mode 100644
index 0000000..db34222
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/de/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="de" sourcelanguage="en">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation>%1 Dateien</translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation>%1 Datei, mit einer ungefähren Größe von %2</translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation> in%1 Dateien</translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation>Kaufe die Ultimate Version um die Entwicklung zu finanzieren</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation>Datei %1/%2, Größe:%3/%4</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation>Zu kopierende Dateien</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation>Zu verschiebende Dateien</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>Nicht schließen, wenn Fehler aufgetreten sind</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation>Niemals schließen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation>Immer schließen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation>Dateiname, 0KB</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation>Farbe auswählen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation>%1 %2 von %3 in %4 Dateien</translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>Nicht schließen, wenn Fehler aufgetreten sind</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation>Niemals schließen</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation>Immer schließen</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation>Wählen Sie eine Farbe</translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation>Von:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation>&amp;Mehr</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Pause</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation>Über&amp;springen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation>Abbrechen (&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation>Dateiliste</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation>Ausgewählte Einträge löschen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation>Dateiliste exportieren</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation>Dateiliste importieren</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation>Vorherige</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation>Nächste</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation>Darstellungsoptionen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation>Ausgewählte Einträge an den Listenanfang verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation>100MB+</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation>Am Ende des Transfers schließen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation>Begrenze Kopiergeschwindigkeit auf:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation>Ausgewählte Einträge einen Platz nach oben verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation>Ausgewählte Einträge einen Platz nach unten verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation>Ausgewählte Einträge an das Listenende verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation>Datei/Ordner hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation>In Dateiliste suchen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation>Fehlerprotokoll</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation>Fehlgeschlagene Dateien exportieren</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation>Quelle</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation>Ziel</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation>Datei hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation>Ordner hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation>Datei(en) verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation>Ordner verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation>Datei(en) kopieren</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation>Verzeichnis kopieren</translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation>Zweifachen Fortschrittsbalken anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation>Geschwindigkeitsbegrenzungsschieberegler anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation>Benutzung</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation>Standardmäßig &quot;Mehr&quot; Informationen anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation>Beim Schließen ins Systray minimieren</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation>Am Ende des Vorgangs</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation>Begrenze Übertragungsgeschwindigkeit auf</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation>Minimiert starten</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation>Zum Bearbeiten der Farbe klicken</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation> KB/s</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation>Dunkles Design</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation>Informationen</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation>Anzeige</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation>Geschwindigkeit als Fortschrittsbalken anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation>Farbe des Fortschrittsbalken</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation>Fortschritt im Fenstertitel zeigen</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation>Fenster immer im Vordergrund halten</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/el/translation.qm b/plugins/Themes/Oxygen2/Languages/el/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/el/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/el/translation.ts b/plugins/Themes/Oxygen2/Languages/el/translation.ts
new file mode 100755
index 0000000..24ac139
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/el/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/en/translation.qm b/plugins/Themes/Oxygen2/Languages/en/translation.qm
new file mode 100755
index 0000000..d925dd6
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/en/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/en/translation.ts b/plugins/Themes/Oxygen2/Languages/en/translation.ts
new file mode 100755
index 0000000..4b62856
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/en/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="en">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/es/translation.qm b/plugins/Themes/Oxygen2/Languages/es/translation.qm
new file mode 100755
index 0000000..e18e87a
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/es/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/es/translation.ts b/plugins/Themes/Oxygen2/Languages/es/translation.ts
new file mode 100755
index 0000000..43e63df
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/es/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="es" sourcelanguage="en">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation>Comprar la versión Ultimate para financiar el desarrollo</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation>El archivo %1/%2, el tamaño: %3/%4</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation>Lista de copia</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation>Lista de movimiento</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>No cierre si se encuentran errores</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation>Nunca cierre</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation>Siempre cerrar</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation>Nombre de archivo, 0KB</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation>Seleccione un color</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>No cierre si se encuentran errores</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation>Nunca cierre</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation>Siempre cerrar</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation>Seleccione un color</translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation>De:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation>&amp;Más</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Pausa</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Omitir</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation>Cerca de finalización de transferencia</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation>Limitar la velocidad de copia en:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation>Lista de transferencia</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation>Mueve los elementos seleccionados a la parte superior</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation>Mueva los elementos seleccionados</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation>Bajar los elementos seleccionados</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation>Mueve los elementos seleccionados a la parte inferior</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation>Agregar archivo/carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation>Eliminar los elementos seleccionados</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation>Buscar</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation>Exportar la lista de transferencias</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation>Importe la lista de transferencias</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation>Anterior</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation>Próximo</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation>Exportar los errores en la lista de transferencias</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation>Fuente</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation>Destino</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation>Interfaz</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation>Añadir archivo</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation>Añadir carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation>Mover archivo(s)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation>Mueva la carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation>Copia el archivo(s)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation>Copia la carpeta</translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation>Mostrar progresión dual</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation>Mostrar la velocidad como principales informaciones</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation>Uso</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation>Comience con el &quot;botón más&quot; empujada</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation>Minimizar en cerca de la bandeja del sistema</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation>Al final de la copia</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation>Limitar la velocidad de copia de</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation>Haga clic para editar el color</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation> KB/s</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation>Informations</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation>Visualización</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation>Velocidad con barra de progreso</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation>Progresión de color</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation>Mostrar progresión en el título</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation>Siempre visible</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/fr/translation.qm b/plugins/Themes/Oxygen2/Languages/fr/translation.qm
new file mode 100755
index 0000000..c6039f5
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/fr/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/fr/translation.ts b/plugins/Themes/Oxygen2/Languages/fr/translation.ts
new file mode 100755
index 0000000..2fedb8b
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/fr/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="fr" sourcelanguage="en">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="+108"/>
+ <source>%1 files</source>
+ <translation>%1 fichiers</translation>
+ </message>
+ <message>
+ <location line="+96"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation>%1 fichiers, avec une taille moyenne de %2</translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="+194"/>
+ <location line="+2"/>
+ <source> into %1 files</source>
+ <translation> dans %1 fichiers</translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="+292"/>
+ <location line="+21"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation>Achetez la version Ultimate pour financer le développement</translation>
+ </message>
+ <message>
+ <location line="+197"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation>Fichier %1/%2, taille: %3/%4</translation>
+ </message>
+ <message>
+ <location line="+307"/>
+ <source>Copy list</source>
+ <translation>Liste de copies</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Move list</source>
+ <translation>Liste de déplacements</translation>
+ </message>
+ <message>
+ <location line="+501"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>Garder ouvert s&apos;il y a des erreurs</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Never close</source>
+ <translation>Ne jamais fermer</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Always close</source>
+ <translation>Toujours fermer</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>File Name, 0KB</source>
+ <translation>Nom de fichier, 0Ko</translation>
+ </message>
+ <message>
+ <location line="+195"/>
+ <location line="+12"/>
+ <location line="+12"/>
+ <source>Select a color</source>
+ <translation>Selectionner une coleur</translation>
+ </message>
+ <message>
+ <location line="+88"/>
+ <location line="+11"/>
+ <location line="+9"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation>%1 %2% de %3 dans %4 fichiers</translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="+320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>Garder ouvert s&apos;il y a des erreurs</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Never close</source>
+ <translation>Ne jamais fermer</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Always close</source>
+ <translation>Toujours fermer</translation>
+ </message>
+ <message>
+ <location line="+196"/>
+ <location line="+15"/>
+ <location line="+15"/>
+ <source>Select a color</source>
+ <translation>Selectionner une coleur</translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="+420"/>
+ <source>From:</source>
+ <translation>Depuis:</translation>
+ </message>
+ <message>
+ <location line="-119"/>
+ <source>&amp;More</source>
+ <translation>Pl&amp;us</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Pause</translation>
+ </message>
+ <message>
+ <location line="+161"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Passer</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Annuler</translation>
+ </message>
+ <message>
+ <location line="-104"/>
+ <source>Close on transfer completion</source>
+ <translation>Fermer à la fin des transferts</translation>
+ </message>
+ <message>
+ <location line="-157"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>100MB+</source>
+ <translation>100Mo+</translation>
+ </message>
+ <message>
+ <location line="+275"/>
+ <source>Limit copy speed to:</source>
+ <translation>Limiter la vitesse de copie à:</translation>
+ </message>
+ <message>
+ <location line="+43"/>
+ <source>Transfer list</source>
+ <translation>Liste de transferts</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>Move the selected items to the top</source>
+ <translation>Déplacer l&apos;item selectionné au debut</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Move up the selected items</source>
+ <translation>Déplacer l&apos;item selectionné vers le haut</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Move down the selected items</source>
+ <translation>Déplacer l&apos;item selectionné vers le bas</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Move the selected items to the bottom</source>
+ <translation>Déplacer l&apos;item selectionné à la fin</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Add file/folder</source>
+ <translation>Ajouter fichier/dossier</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Delete the selected items</source>
+ <translation>Supprimer les items sélectionnés</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Search</source>
+ <translation>Rechercher</translation>
+ </message>
+ <message>
+ <location line="+29"/>
+ <source>Export the transfer list</source>
+ <translation>Exporter la liste de transfert</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Import the transfer list</source>
+ <translation>Importer la liste de transfert</translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Previous</source>
+ <translation>Précédent</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Next</source>
+ <translation>Suivant</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <location line="+69"/>
+ <source>Error</source>
+ <translation>Erreur</translation>
+ </message>
+ <message>
+ <location line="-49"/>
+ <source>Export the errors into transfer list</source>
+ <translation>Exporter les erreurs dans une liste de transfert</translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>Source</source>
+ <translation>Source</translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Destination</source>
+ <translation>Destination</translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <source>Interface</source>
+ <translation>Interface</translation>
+ </message>
+ <message>
+ <location line="+46"/>
+ <source>Add file</source>
+ <translation>Ajouter un fichier</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Add folder</source>
+ <translation>Ajouter un répertoire</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Move file(s)</source>
+ <translation>Déplacer le(s) fichier(s)</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Move folder</source>
+ <translation>Déplacer un répertoire</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Copy file(s)</source>
+ <translation>Copier le(s) fichier(s)</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Copy folder</source>
+ <translation>Copier un répertoire</translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="+293"/>
+ <source>Show dual progression</source>
+ <translation>Afficher une double progression</translation>
+ </message>
+ <message>
+ <location line="-48"/>
+ <source>Show speed as main information</source>
+ <translation>Afficher la vitesse comme information principale</translation>
+ </message>
+ <message>
+ <location line="-201"/>
+ <source>Use</source>
+ <translation>Utilisation</translation>
+ </message>
+ <message>
+ <location line="+66"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation>Déplier automatiquement les détails</translation>
+ </message>
+ <message>
+ <location line="-53"/>
+ <source>Minimize on close to systray</source>
+ <translation>Minimiser à la fermeture dans le systray</translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>At the end of the copy</source>
+ <translation>À la fin de la copie</translation>
+ </message>
+ <message>
+ <location line="-10"/>
+ <location line="+17"/>
+ <source>Limit copy speed to</source>
+ <translation>Limiter la vitesse de copie à</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>Start minimized</source>
+ <translation>Démarrer minimisé</translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+188"/>
+ <source>Click to edit the color</source>
+ <translation>Cliquer pour éditer la couleur</translation>
+ </message>
+ <message>
+ <location line="-235"/>
+ <source> KB/s</source>
+ <translation> Ko/s</translation>
+ </message>
+ <message>
+ <location line="+107"/>
+ <source>Dark UI</source>
+ <translation>UI obscure</translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Informations</source>
+ <translation>Informations</translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Display</source>
+ <translation>Affichage</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Speed with progress bar</source>
+ <translation>Vitesse avec barre de progression</translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>Progression color</source>
+ <translation>Couleur de progression</translation>
+ </message>
+ <message>
+ <location line="-10"/>
+ <source>Show progression in the title</source>
+ <translation>Afficher la progression dans le titre</translation>
+ </message>
+ <message>
+ <location line="-166"/>
+ <source>Always on top</source>
+ <translation>Toujours au 1er plan</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/hi/translation.qm b/plugins/Themes/Oxygen2/Languages/hi/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/hi/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/hi/translation.ts b/plugins/Themes/Oxygen2/Languages/hi/translation.ts
new file mode 100755
index 0000000..24ac139
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/hi/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/hu/translation.qm b/plugins/Themes/Oxygen2/Languages/hu/translation.qm
new file mode 100755
index 0000000..6567c41
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/hu/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/hu/translation.ts b/plugins/Themes/Oxygen2/Languages/hu/translation.ts
new file mode 100755
index 0000000..1d6d670
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/hu/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="hu">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation>Vásárold meg az Ultimate verziót a fejlesztés támogatásához</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation>Fájl %1/%2, méret: %3/%4</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation>Lista másolása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation>Lista mozgatása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>Ne zárja be, ha hiba történik</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation>Sose zárja be</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation>Mindig zárja be</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation>Fájlnév, 0KB</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation>Válassz egy színt</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>Ne zárja be, ha hiba történik</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation>Sose zárja be</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation>Mindig zárja be</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation>Válassz egy színt</translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation>Forrás:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation>&amp;Több</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Szünet</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Kihagy</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Mégse</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation>Átviteli lista</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation>Előző</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation>Következő</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation>Kezelőfelület</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation>Kijelölések elemek mozgatása legfelülre</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation>Átvitel végeztével zárja be</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation>Másolási sebesség korlátozása:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation>Kijelölt elemek mozgatása fel</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation>Kijelölt elemek mozgatása le</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation>Kijelölések elemek mozgatása legalulra</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation>Fájl/mappa hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation>Kijelölt elemek törlése</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation>Keresés</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation>Átviteli lista exportálása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation>Átviteli lista importálása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation>Hiba</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation>Hibák exportálása az átviteli listába</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation>Forrás</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation>Cél</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation>Fájl hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation>Mappa hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation>Fájl(ok) mozgatása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation>Mappa mozgatása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation>Fájl(ok) másolása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation>Mappa másolása</translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation>Páros folyamat mutatása</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation>Sebesség mutatása, mint fő információ</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation>Használ</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation>Indítás a &quot;több gomb&quot; lenyomásával</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation>Bezáráskor minimalizálás a tálcára</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation>A másolás befejezésekor</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation>Másolási sebesség korlátozása</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation>Kattints a szín szerkesztéséhez</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation> KB/s</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation>Információk</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation>Megjelenítés</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation>Sebesség folyamatsávval</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation>Folyamat színe</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation>Folyamat mutatása a címsorban</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation>Mindig legfelül</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/id/translation.qm b/plugins/Themes/Oxygen2/Languages/id/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/id/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/id/translation.ts b/plugins/Themes/Oxygen2/Languages/id/translation.ts
new file mode 100755
index 0000000..24ac139
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/id/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/it/translation.qm b/plugins/Themes/Oxygen2/Languages/it/translation.qm
new file mode 100755
index 0000000..5afbca5
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/it/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/it/translation.ts b/plugins/Themes/Oxygen2/Languages/it/translation.ts
new file mode 100644
index 0000000..1c6eb21
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/it/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it" sourcelanguage="en">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation>%1 file</translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation>%1 file, con una dimensione media di %2</translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation> in %1 file</translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation>Acquista la versione Ultimate per finanziare lo sviluppo del programma</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation>File %1/%2, dimensione: %3/%4</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation>Lista della copia</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation>Lista dello spostamento</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>Non chiudere se vengono rilevati errori</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation>Non chiudere mai</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation>Chiudere sempre</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation>Nome del file, 0KB</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation>Scegliere un colore</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation>%1 %2% di %3 in %4 file</translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>Non chiudere se vengono rilevati errori</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation>Non chiudere mai</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation>Chiudere sempre</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation>Scegliere un colore</translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation>Da:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation>Avanzate</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation>Pausa</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation>Salta</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation>Annulla</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation>Arresta il sistema a trasferimento comletato</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation>0</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation>100MB+</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation>Limitare la velocità di copia a:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation>Lista dei trasferimenti</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation>Sposta in cima gli elementi selezionati</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation>Sposta sopra gli elementi selezionati</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation>Sposta sotto gli elementi selezionati</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation>Sposta in coda gli elementi selezionati</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation>Aggiungi file/cartelle</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation>Elimina gli elementi selezionati</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation>Cerca</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation>Esporta la lista dei trasferimenti</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation>Importa la lista dei trasferimenti</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation>Precedente</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation>Successivo</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation>Errore</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation>Esporta gli errori nella lista dei trasferimenti</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation>Cartella di origine</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation>Cartella di destinazione</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation>Interfaccia</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation>Aggiungi file</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation>Aggiungi cartella</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation>Sposta file</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation>Sposta la cartella</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation>Copia file</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation>Copia la cartella</translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation>Mostrare la doppia progressione</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation>Mostrare la velocità come principale informazione</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation>Utilità</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation>Iniziare col pulsante &quot;Altro&quot; attivo</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation>Alla chiusura riduci nella&apos;area di notifica</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation>Al termine della copia</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation>Limitare velocità di copia a:</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation>Avvia ridotto a icona</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation>Posizione di partenza</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation>Clicca per modificare il colore</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation> KB/s</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation>Interfaccia utente scura</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation>Predefinito</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation>Mantenere come precedente</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation>Centrale</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation>Informazioni</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation>Visualizza</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation>Velocità nella barra di progresso</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation>Colore della progressione</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation>Mostrare la percentuale di progresso sul titolo</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation>Sempre in primo piano</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/ja/translation.qm b/plugins/Themes/Oxygen2/Languages/ja/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/ja/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/ja/translation.ts b/plugins/Themes/Oxygen2/Languages/ja/translation.ts
new file mode 100755
index 0000000..851343e
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/ja/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/ko/translation.qm b/plugins/Themes/Oxygen2/Languages/ko/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/ko/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/ko/translation.ts b/plugins/Themes/Oxygen2/Languages/ko/translation.ts
new file mode 100755
index 0000000..689ea9e
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/ko/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ko_KR">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="+108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+96"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="+194"/>
+ <location line="+2"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="+292"/>
+ <location line="+21"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+197"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished">파일 %1/%2, 크기: %3/%4</translation>
+ </message>
+ <message>
+ <location line="+307"/>
+ <source>Copy list</source>
+ <translation type="unfinished">복사 목록</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+501"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished">오류 발견시 종료 안함</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Never close</source>
+ <translation type="unfinished">절대 종료 안함</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Always close</source>
+ <translation type="unfinished">항상 종료</translation>
+ </message>
+ <message>
+ <location line="+2"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished">파일명, 0KB</translation>
+ </message>
+ <message>
+ <location line="+195"/>
+ <location line="+12"/>
+ <location line="+12"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+88"/>
+ <location line="+11"/>
+ <location line="+9"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="+320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished">오류 발견시 종료 안함</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Never close</source>
+ <translation type="unfinished">절대 종료 안함</translation>
+ </message>
+ <message>
+ <location line="+1"/>
+ <source>Always close</source>
+ <translation type="unfinished">항상 종료</translation>
+ </message>
+ <message>
+ <location line="+196"/>
+ <location line="+15"/>
+ <location line="+15"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="+420"/>
+ <source>From:</source>
+ <translation type="unfinished">원본:</translation>
+ </message>
+ <message>
+ <location line="-119"/>
+ <source>&amp;More</source>
+ <translation type="unfinished">&amp;자세히</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished">&amp;일시 정지</translation>
+ </message>
+ <message>
+ <location line="+161"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished">&amp;건너뛰기</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished">&amp;취소</translation>
+ </message>
+ <message>
+ <location line="+77"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+156"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Previous</source>
+ <translation type="unfinished">이전</translation>
+ </message>
+ <message>
+ <location line="+7"/>
+ <source>Next</source>
+ <translation type="unfinished">다음</translation>
+ </message>
+ <message>
+ <location line="+113"/>
+ <source>Interface</source>
+ <translation type="unfinished">인터페이스</translation>
+ </message>
+ <message>
+ <location line="-389"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-361"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+137"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+138"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+92"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+55"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+152"/>
+ <location line="+69"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-49"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+39"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+60"/>
+ <source>Add file</source>
+ <translation type="unfinished">파일 추가</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Add folder</source>
+ <translation type="unfinished">폴더 추가</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished">파일 이동</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Move folder</source>
+ <translation type="unfinished">폴더 이동</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished">파일 복사</translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>Copy folder</source>
+ <translation type="unfinished">폴더 복사</translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="+293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-48"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished">메인 정보에 속도 표시</translation>
+ </message>
+ <message>
+ <location line="-201"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+66"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-53"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+23"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-10"/>
+ <location line="+17"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+27"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+188"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-235"/>
+ <source> KB/s</source>
+ <translation type="unfinished"> KB/초</translation>
+ </message>
+ <message>
+ <location line="+107"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+8"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+5"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+17"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+38"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+30"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-10"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-166"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/nl/translation.qm b/plugins/Themes/Oxygen2/Languages/nl/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/nl/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/nl/translation.ts b/plugins/Themes/Oxygen2/Languages/nl/translation.ts
new file mode 100755
index 0000000..24ac139
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/nl/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/no/translation.qm b/plugins/Themes/Oxygen2/Languages/no/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/no/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/no/translation.ts b/plugins/Themes/Oxygen2/Languages/no/translation.ts
new file mode 100755
index 0000000..24ac139
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/no/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/pl/translation.qm b/plugins/Themes/Oxygen2/Languages/pl/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/pl/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/pl/translation.ts b/plugins/Themes/Oxygen2/Languages/pl/translation.ts
new file mode 100755
index 0000000..24ac139
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/pl/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/pt/translation.qm b/plugins/Themes/Oxygen2/Languages/pt/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/pt/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/pt/translation.ts b/plugins/Themes/Oxygen2/Languages/pt/translation.ts
new file mode 100755
index 0000000..24ac139
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/pt/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/ru/translation.qm b/plugins/Themes/Oxygen2/Languages/ru/translation.qm
new file mode 100755
index 0000000..59964bb
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/ru/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/ru/translation.ts b/plugins/Themes/Oxygen2/Languages/ru/translation.ts
new file mode 100755
index 0000000..512bece
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/ru/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ru" sourcelanguage="en">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation>Файл %1/%2, размер: %3/%4</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation type="unfinished">Копировать список</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished">Не закрывать, если найдены ошибки</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation type="unfinished">Никогда не закрывать</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation type="unfinished">Всегда закрывайте</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation>Имя файла, 0KB</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished">Не закрывать, если найдены ошибки</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation type="unfinished">Никогда не закрывать</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation type="unfinished">Всегда закрывайте</translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation>С:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation>больше</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation>пауза</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation>пропускать</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation>отменить</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation>предыдущий</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation>следующий</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation>интерфейс</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation>Добавить файл</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation>Добавить папку</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation>Перемещение файла(ов)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation>Перемещение папки</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation>Копировать файл (ы)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation>Копировать папку</translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished">Показать скорости в качестве основной информации</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation type="unfinished"> Кб/с</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/th/translation.qm b/plugins/Themes/Oxygen2/Languages/th/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/th/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/th/translation.ts b/plugins/Themes/Oxygen2/Languages/th/translation.ts
new file mode 100755
index 0000000..24ac139
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/th/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/tr/translation.qm b/plugins/Themes/Oxygen2/Languages/tr/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/tr/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/tr/translation.ts b/plugins/Themes/Oxygen2/Languages/tr/translation.ts
new file mode 100755
index 0000000..24ac139
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/tr/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Languages/zh/translation.qm b/plugins/Themes/Oxygen2/Languages/zh/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/zh/translation.qm
Binary files differ
diff --git a/plugins/Themes/Oxygen2/Languages/zh/translation.ts b/plugins/Themes/Oxygen2/Languages/zh/translation.ts
new file mode 100755
index 0000000..851343e
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Languages/zh/translation.ts
@@ -0,0 +1,382 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="108"/>
+ <source>%1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../radialMap/map.cpp" line="204"/>
+ <source>%1 file, with an average size of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RadialMap::Widget</name>
+ <message>
+ <location filename="../../radialMap/widgetEvents.cpp" line="194"/>
+ <location filename="../../radialMap/widgetEvents.cpp" line="196"/>
+ <source> into %1 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="292"/>
+ <location filename="../../interface.cpp" line="313"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="510"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="817"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="819"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1324"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1519"/>
+ <location filename="../../interface.cpp" line="1531"/>
+ <location filename="../../interface.cpp" line="1543"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1631"/>
+ <location filename="../../interface.cpp" line="1642"/>
+ <location filename="../../interface.cpp" line="1651"/>
+ <source>%1 %2% of %3 into %4 files</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="320"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="321"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="322"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../ThemesFactory.cpp" line="518"/>
+ <location filename="../../ThemesFactory.cpp" line="533"/>
+ <location filename="../../ThemesFactory.cpp" line="548"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="420"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="301"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="321"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="493"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="570"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="726"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="781"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="807"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="862"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="869"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="982"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="593"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>0</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="252"/>
+ <source>100MB+</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="389"/>
+ <source>Close on transfer completion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="527"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="619"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="645"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="671"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="697"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="752"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="904"/>
+ <location filename="../../interface.ui" line="973"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="924"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="963"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="968"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1028"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1037"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1046"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1055"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1064"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="1073"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="293"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="245"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="44"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="110"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="57"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="80"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="70"/>
+ <location filename="../../themesOptions.ui" line="87"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="117"/>
+ <source>Start minimized</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="144"/>
+ <source>Position at start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Dark UI</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="212"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="217"/>
+ <source>Save as previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="222"/>
+ <source>At Center</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="239"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="277"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="283"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="313"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="332"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="303"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="137"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/Themes/Oxygen2/Oxygen2Environment.h b/plugins/Themes/Oxygen2/Oxygen2Environment.h
new file mode 100755
index 0000000..71b9141
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Oxygen2Environment.h
@@ -0,0 +1,10 @@
+/** \file Environment.h
+\brief Define the environment variable and global function
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include "Oxygen2Variable.h"
+/// \brief The global include
+#include "StructEnumDefinition.h"
+#include "DebugEngineMacro.h"
+
diff --git a/plugins/Themes/Oxygen2/Oxygen2Variable.h b/plugins/Themes/Oxygen2/Oxygen2Variable.h
new file mode 100755
index 0000000..81a97d7
--- /dev/null
+++ b/plugins/Themes/Oxygen2/Oxygen2Variable.h
@@ -0,0 +1,18 @@
+/** \file Variable.h
+\brief Define the environment variable
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef VARIABLEINTERFACEO2_H
+#define VARIABLEINTERFACEO2_H
+
+
+//Un-comment this next line to put ultracopier plugin in debug mode
+#ifndef ULTRACOPIER_NODEBUG
+//#define ULTRACOPIER_PLUGIN_DEBUG
+#endif
+
+#endif // VARIABLEINTERFACEO2_H
+
+
+
diff --git a/plugins/Themes/Oxygen2/ProgressBarDark.cpp b/plugins/Themes/Oxygen2/ProgressBarDark.cpp
new file mode 100755
index 0000000..3a6b414
--- /dev/null
+++ b/plugins/Themes/Oxygen2/ProgressBarDark.cpp
@@ -0,0 +1,69 @@
+#include "ProgressBarDark.h"
+#include <QPainter>
+
+ProgressBarDark::ProgressBarDark(QWidget *parent) :
+ QProgressBar(parent)
+{
+ setMinimumHeight(22);
+ setMaximumHeight(55);
+}
+
+ProgressBarDark::~ProgressBarDark()
+{
+}
+
+void ProgressBarDark::paintEvent(QPaintEvent *)
+{
+ if(backgroundLeft.isNull() || backgroundLeft.height()!=height())
+ {
+ QPixmap background(":/Themes/Oxygen2/resources/progressBarout.png");
+ if(background.isNull())
+ abort();
+ QPixmap bar(":/Themes/Oxygen2/resources/progressBarin.png");
+ if(bar.isNull())
+ abort();
+ if(height()==background.height())
+ {
+ backgroundLeft=background.copy(0,0,24,55);
+ backgroundMiddle=background.copy(24,0,701,55);
+ backgroundRight=background.copy(725,0,24,55);
+ barLeft=bar.copy(0,0,24,55);
+ barMiddle=bar.copy(24,0,701,55);
+ barRight=bar.copy(725,0,24,55);
+ }
+ else
+ {
+ backgroundLeft=background.copy(0,0,24,55).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundMiddle=background.copy(24,0,701,55).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundRight=background.copy(725,0,24,55).scaledToHeight(height(),Qt::SmoothTransformation);
+ barLeft=bar.copy(0,0,24,55).scaledToHeight(height(),Qt::SmoothTransformation);
+ barMiddle=bar.copy(24,0,701,55).scaledToHeight(height(),Qt::SmoothTransformation);
+ barRight=bar.copy(725,0,24,55).scaledToHeight(height(),Qt::SmoothTransformation);
+ }
+ }
+ QPainter paint;
+ paint.begin(this);
+
+ if(maximum()<=0)
+ {
+ paint.drawPixmap(0,0,backgroundLeft.width(), backgroundLeft.height(), backgroundLeft);
+ paint.drawPixmap(backgroundLeft.width(), 0,
+ width()-backgroundLeft.width()-backgroundRight.width(), backgroundLeft.height(),backgroundMiddle);
+ paint.drawPixmap(width()-backgroundRight.width(),0, backgroundRight.width(), backgroundRight.height(),backgroundRight);
+ return;
+ }
+
+ int size=width()-barLeft.width()-barRight.width();
+ int inpixel=value()*size/maximum();
+
+ paint.drawPixmap(0,0,backgroundLeft.width(), backgroundLeft.height(), backgroundLeft);
+ paint.drawPixmap(0,0,barLeft.width(), barLeft.height(), barLeft);
+
+ paint.drawPixmap(backgroundLeft.width(), 0,
+ width()-backgroundLeft.width()-backgroundRight.width(), backgroundLeft.height(),backgroundMiddle);
+ paint.drawPixmap(barLeft.width(), 0,
+ inpixel, barLeft.height(),barMiddle);
+
+ paint.drawPixmap(width()-backgroundRight.width(),0, backgroundRight.width(), backgroundRight.height(),backgroundRight);
+ paint.drawPixmap(barLeft.width()+inpixel, 0, barRight.width(), barRight.height(),barRight);
+}
diff --git a/plugins/Themes/Oxygen2/ProgressBarDark.h b/plugins/Themes/Oxygen2/ProgressBarDark.h
new file mode 100755
index 0000000..7c8e168
--- /dev/null
+++ b/plugins/Themes/Oxygen2/ProgressBarDark.h
@@ -0,0 +1,17 @@
+#ifndef PROGRESSBARDARK_H
+#define PROGRESSBARDARK_H
+
+#include <QProgressBar>
+
+class ProgressBarDark : public QProgressBar
+{
+public:
+ ProgressBarDark(QWidget *parent = nullptr);
+ ~ProgressBarDark();
+ void paintEvent(QPaintEvent *) override;
+private:
+ QPixmap backgroundLeft,backgroundMiddle,backgroundRight;
+ QPixmap barLeft,barMiddle,barRight;
+};
+
+#endif // PROGRESSBARDARK_H
diff --git a/plugins/Themes/Oxygen2/README.md b/plugins/Themes/Oxygen2/README.md
new file mode 100755
index 0000000..b529701
--- /dev/null
+++ b/plugins/Themes/Oxygen2/README.md
@@ -0,0 +1,4 @@
+# Themes: Oxygen
+
+This theme is based on the the Oxygen project for KDE Plasma desktops. It is the
+default theme for _Ultracopier_.
diff --git a/plugins/Themes/Oxygen2/StructEnumDefinition.h b/plugins/Themes/Oxygen2/StructEnumDefinition.h
new file mode 100755
index 0000000..c1758f4
--- /dev/null
+++ b/plugins/Themes/Oxygen2/StructEnumDefinition.h
@@ -0,0 +1 @@
+#include "../../../StructEnumDefinition.h"
diff --git a/plugins/Themes/Oxygen2/ThemesFactory.cpp b/plugins/Themes/Oxygen2/ThemesFactory.cpp
new file mode 100755
index 0000000..111cbaa
--- /dev/null
+++ b/plugins/Themes/Oxygen2/ThemesFactory.cpp
@@ -0,0 +1,573 @@
+/** \file factory.cpp
+\brief Define the factory core
+\author alpha_one_x86 */
+
+#include <QColorDialog>
+#include <QDesktopWidget>
+#include <QScreen>
+
+#include "ThemesFactory.h"
+#include "../../../cpp11addition.h"
+
+ThemesFactory::ThemesFactory()
+{
+ optionsEngine=NULL;
+ tempWidget=new QWidget();
+ ui=new Ui::themesOptions();
+ ui->setupUi(tempWidget);
+ ui->toolBox->setCurrentIndex(0);
+ currentSpeed = 0;
+ updateSpeed();
+
+ qRegisterMetaType<QList<QPersistentModelIndex> >("QList<QPersistentModelIndex>");
+}
+
+ThemesFactory::~ThemesFactory()
+{
+}
+
+PluginInterface_Themes * ThemesFactory::getInstance()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, currentSpeed: "+std::to_string(currentSpeed));
+
+ Themes * newInterface=new Themes(
+ ui->alwaysOnTop->isChecked(),
+ ui->showProgressionInTheTitle->isChecked(),
+ progressColorWrite,progressColorRead,progressColorRemaining,
+ ui->showDualProgression->isChecked(),
+ ui->comboBox_copyEnd->currentIndex(),
+ ui->speedWithProgressBar->isChecked(),
+ currentSpeed,
+ ui->checkBoxShowSpeed->isChecked(),
+ facilityEngine,
+ ui->checkBoxStartWithMoreButtonPushed->isChecked(),
+ ui->minimizeToSystray->isChecked(),
+ ui->startMinimized->isChecked(),
+ ui->savePosition->currentIndex(),
+ ui->dark->isChecked()
+ );
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(!connect(newInterface,&Themes::debugInformation,this,&PluginInterface_ThemesFactory::debugInformation))
+ abort();
+ #endif
+ if(!connect(this,&ThemesFactory::reloadLanguage,newInterface,&Themes::newLanguageLoaded))
+ abort();
+ if(!connect(newInterface,&Themes::destroyed,this,&ThemesFactory::savePositionBeforeClose))
+ abort();
+ switch(ui->savePosition->currentIndex())
+ {
+ default:
+ case 0:
+ break;
+ case 1:
+ newInterface->move(
+ stringtouint32(optionsEngine->getOptionValue("savePositionX")),
+ stringtouint32(optionsEngine->getOptionValue("savePositionY"))
+ );
+ break;
+ case 2:
+ if(!qApp->screens().isEmpty())
+ newInterface->setGeometry(
+ QStyle::alignedRect(
+ Qt::LeftToRight,
+ Qt::AlignCenter,
+ newInterface->size(),
+ #if QT_VERSION < QT_VERSION_CHECK(5, 12, 0)
+ qApp->desktop()->availableGeometry()
+ #else
+ qApp->screens().front()->geometry()
+ #endif
+ )
+ );
+ break;
+ }
+ return newInterface;
+}
+
+void ThemesFactory::savePositionBeforeClose(QObject *obj)
+{
+ if(ui->savePosition->currentIndex()!=1)
+ return;
+ if(obj == nullptr)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"obj == nullptr");
+ return;
+ }
+ const QWidget * const widget=static_cast<QWidget *>(obj);
+ optionsEngine->setOptionValue("savePositionX",std::to_string(widget->x()));
+ optionsEngine->setOptionValue("savePositionY",std::to_string(widget->y()));
+}
+
+void ThemesFactory::setResources(OptionInterface * optionsEngine,const std::string &
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ writePath
+ #endif
+ ,const std::string &
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ pluginPath
+ #endif
+ ,FacilityInterface * facilityEngine,const bool &
+ )
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, writePath: "+writePath+", pluginPath: "+pluginPath);
+ this->facilityEngine=facilityEngine;
+ if(optionsEngine!=NULL)
+ {
+ this->optionsEngine=optionsEngine;
+ //load the options
+ std::vector<std::pair<std::string, std::string> > KeysList;
+ KeysList.push_back(std::pair<std::string, std::string>("checkBoxShowSpeed","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("moreButtonPushed","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("speedWithProgressBar","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("currentSpeed","0"));
+ KeysList.push_back(std::pair<std::string, std::string>("comboBox_copyEnd","0"));
+ KeysList.push_back(std::pair<std::string, std::string>("showDualProgression","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("showProgressionInTheTitle","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("progressColorWrite",QApplication::palette().color(QPalette::Highlight).name().toStdString()));
+ KeysList.push_back(std::pair<std::string, std::string>("progressColorRead",QApplication::palette().color(QPalette::AlternateBase).name().toStdString()));
+ KeysList.push_back(std::pair<std::string, std::string>("progressColorRemaining",QApplication::palette().color(QPalette::Base).name().toStdString()));
+ KeysList.push_back(std::pair<std::string, std::string>("alwaysOnTop","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("minimizeToSystray","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("startMinimized","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("savePosition","0"));
+ KeysList.push_back(std::pair<std::string, std::string>("savePositionX","0"));
+ KeysList.push_back(std::pair<std::string, std::string>("savePositionY","0"));
+ KeysList.push_back(std::pair<std::string, std::string>("dark","true"));
+ optionsEngine->addOptionGroup(KeysList);
+ connect(optionsEngine,&OptionInterface::resetOptions,this,&ThemesFactory::resetOptions);
+ updateSpeed();
+
+ ui->comboBox_copyEnd->setCurrentIndex(stringtouint32(optionsEngine->getOptionValue("comboBox_copyEnd")));
+ ui->speedWithProgressBar->setChecked(stringtobool(optionsEngine->getOptionValue("speedWithProgressBar")));
+ ui->checkBoxShowSpeed->setChecked(stringtobool(optionsEngine->getOptionValue("checkBoxShowSpeed")));
+ ui->checkBoxStartWithMoreButtonPushed->setChecked(stringtobool(optionsEngine->getOptionValue("moreButtonPushed")));
+ ui->showDualProgression->setChecked(stringtobool(optionsEngine->getOptionValue("showDualProgression")));
+ ui->showProgressionInTheTitle->setChecked(stringtobool(optionsEngine->getOptionValue("showProgressionInTheTitle")));
+ ui->alwaysOnTop->setChecked(stringtobool(optionsEngine->getOptionValue("alwaysOnTop")));
+ ui->minimizeToSystray->setChecked(stringtobool(optionsEngine->getOptionValue("minimizeToSystray")));
+ ui->startMinimized->setChecked(stringtobool(optionsEngine->getOptionValue("startMinimized")));
+ ui->savePosition->setCurrentIndex(stringtouint8(optionsEngine->getOptionValue("savePosition")));
+ ui->dark->setChecked(stringtobool(optionsEngine->getOptionValue("dark")));
+ }
+ #ifndef __GNUC__
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"__GNUC__ is not set");
+ #else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"__GNUC__ is set");
+ #endif
+}
+
+QWidget * ThemesFactory::options()
+{
+ if(optionsEngine!=NULL)
+ {
+ bool ok;
+ currentSpeed=stringtouint32(optionsEngine->getOptionValue("currentSpeed"),&ok);
+ if(!ok)
+ currentSpeed=0;
+
+ progressColorWrite=QVariant(QString::fromStdString(optionsEngine->getOptionValue("progressColorWrite"))).value<QColor>();
+ progressColorRead=QVariant(QString::fromStdString(optionsEngine->getOptionValue("progressColorRead"))).value<QColor>();
+ progressColorRemaining=QVariant(QString::fromStdString(optionsEngine->getOptionValue("progressColorRemaining"))).value<QColor>();
+
+ QPixmap pixmap(75,20);
+ pixmap.fill(progressColorWrite);
+ ui->progressColorWrite->setIcon(pixmap);
+ pixmap.fill(progressColorRead);
+ ui->progressColorRead->setIcon(pixmap);
+ pixmap.fill(progressColorRemaining);
+ ui->progressColorRemaining->setIcon(pixmap);
+ updateSpeed();
+ updateProgressionColorBar();
+
+ if(!connect(ui->alwaysOnTop,&QCheckBox::stateChanged,this,&ThemesFactory::alwaysOnTop))
+ abort();
+ if(!connect(ui->checkBoxShowSpeed,&QCheckBox::stateChanged,this,&ThemesFactory::checkBoxShowSpeed))
+ abort();
+ if(!connect(ui->minimizeToSystray,&QCheckBox::stateChanged,this,&ThemesFactory::minimizeToSystray))
+ abort();
+ if(!connect(ui->checkBox_limitSpeed,&QCheckBox::stateChanged,this,&ThemesFactory::uiUpdateSpeed))
+ abort();
+ if(!connect(ui->SliderSpeed,&QAbstractSlider::valueChanged,this,&ThemesFactory::on_SliderSpeed_valueChanged))
+ abort();
+ if(!connect(ui->limitSpeed,static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &ThemesFactory::uiUpdateSpeed))
+ abort();
+ if(!connect(ui->checkBoxShowSpeed,&QAbstractButton::toggled,this,&ThemesFactory::checkBoxShowSpeedHaveChanged))
+ abort();
+ if(!connect(ui->checkBoxStartWithMoreButtonPushed,&QAbstractButton::toggled,this,&ThemesFactory::checkBoxStartWithMoreButtonPushedHaveChanged))
+ abort();
+ if(!connect(ui->speedWithProgressBar,&QAbstractButton::toggled,this,&ThemesFactory::speedWithProgressBar))
+ abort();
+ if(!connect(ui->comboBox_copyEnd, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&ThemesFactory::comboBox_copyEnd))
+ abort();
+ if(!connect(ui->showDualProgression,&QCheckBox::stateChanged,this,&ThemesFactory::showDualProgression))
+ abort();
+ if(!connect(ui->showDualProgression,&QCheckBox::stateChanged,this,&ThemesFactory::updateProgressionColorBar))
+ abort();
+ if(!connect(ui->showProgressionInTheTitle,&QCheckBox::stateChanged,this,&ThemesFactory::setShowProgressionInTheTitle))
+ abort();
+ if(!connect(ui->progressColorWrite,&QAbstractButton::clicked,this,&ThemesFactory::progressColorWrite_clicked))
+ abort();
+ if(!connect(ui->progressColorRead, &QAbstractButton::clicked,this,&ThemesFactory::progressColorRead_clicked))
+ abort();
+ if(!connect(ui->progressColorRemaining,&QAbstractButton::clicked,this,&ThemesFactory::progressColorRemaining_clicked))
+ abort();
+ if(!connect(ui->startMinimized,&QCheckBox::stateChanged,this,&ThemesFactory::startMinimized))
+ abort();
+ if(!connect(ui->savePosition,static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged),this,&ThemesFactory::savePositionHaveChanged))
+ abort();
+ if(!connect(ui->dark,&QCheckBox::stateChanged,this,&ThemesFactory::setDark))
+ abort();
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"return the options");
+ return tempWidget;
+}
+
+QIcon ThemesFactory::getIcon(const std::string &fileName) const
+{
+ if(fileName=="SystemTrayIcon/exit.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("application-exit");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ else if(fileName=="SystemTrayIcon/add.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("list-add");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ else if(fileName=="SystemTrayIcon/informations.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("help-about");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ else if(fileName=="SystemTrayIcon/options.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("applications-system");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ return QIcon(":/Themes/Oxygen2/resources/"+QString::fromStdString(fileName));
+}
+
+void ThemesFactory::resetOptions()
+{
+ ui->checkBoxShowSpeed->setChecked(true);
+ ui->checkBoxStartWithMoreButtonPushed->setChecked(false);
+ ui->savePosition->setCurrentIndex(0);
+}
+
+void ThemesFactory::checkBoxShowSpeedHaveChanged(bool toggled)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("checkBoxShowSpeed",std::to_string(toggled));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::checkBoxStartWithMoreButtonPushedHaveChanged(bool toggled)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("moreButtonPushed",std::to_string(toggled));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::savePositionHaveChanged(int value)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("savePosition",std::to_string(value));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::setDark(bool toggled)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("dark",std::to_string(toggled));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::comboBox_copyEnd(int value)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("comboBox_copyEnd",std::to_string(value));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::speedWithProgressBar(bool toggled)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("speedWithProgressBar",std::to_string(toggled));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::newLanguageLoaded()
+{
+ ui->retranslateUi(tempWidget);
+ ui->comboBox_copyEnd->setItemText(0,tr("Don't close if errors are found"));
+ ui->comboBox_copyEnd->setItemText(1,tr("Never close"));
+ ui->comboBox_copyEnd->setItemText(2,tr("Always close"));
+ emit reloadLanguage();
+}
+
+void ThemesFactory::checkBoxShowSpeed(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ Q_UNUSED(checked);
+ updateSpeed();
+}
+
+void ThemesFactory::minimizeToSystray(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("minimizeToSystray",std::to_string(checked));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::alwaysOnTop(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("alwaysOnTop",std::to_string(checked));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::showDualProgression(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("showDualProgression",std::to_string(checked));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::startMinimized(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("startMinimized",std::to_string(checked));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::on_SliderSpeed_valueChanged(int value)
+{
+ if(optionsEngine==NULL)
+ return;
+ if(!ui->checkBoxShowSpeed->isChecked())
+ return;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"value: "+std::to_string(value));
+ switch(value)
+ {
+ case 0:
+ currentSpeed=0;
+ break;
+ case 1:
+ currentSpeed=1024;
+ break;
+ case 2:
+ currentSpeed=1024*4;
+ break;
+ case 3:
+ currentSpeed=1024*16;
+ break;
+ case 4:
+ currentSpeed=1024*64;
+ break;
+ case 5:
+ currentSpeed=1024*128;
+ break;
+ }
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+ updateSpeed();
+}
+
+void ThemesFactory::uiUpdateSpeed()
+{
+ if(optionsEngine==NULL)
+ return;
+ if(ui->checkBoxShowSpeed->isChecked())
+ return;
+ if(!ui->checkBox_limitSpeed->isChecked())
+ currentSpeed=0;
+ else
+ currentSpeed=ui->limitSpeed->value();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit newSpeedLimitation: "+std::to_string(currentSpeed));
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::updateSpeed()
+{
+ if(optionsEngine==NULL)
+ return;
+ ui->label_Slider_speed->setVisible(ui->checkBoxShowSpeed->isChecked());
+ ui->SliderSpeed->setVisible(ui->checkBoxShowSpeed->isChecked());
+ ui->label_SpeedMaxValue->setVisible(ui->checkBoxShowSpeed->isChecked());
+ ui->limitSpeed->setVisible(!ui->checkBoxShowSpeed->isChecked());
+ ui->checkBox_limitSpeed->setVisible(!ui->checkBoxShowSpeed->isChecked());
+
+ if(ui->checkBoxShowSpeed->isChecked())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"checked, currentSpeed: "+std::to_string(currentSpeed));
+ ui->limitSpeed->setEnabled(false);
+ if(currentSpeed==0)
+ {
+ ui->SliderSpeed->setValue(0);
+ ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->translateText("Unlimited")));
+ }
+ else if(currentSpeed<=1024)
+ {
+ if(currentSpeed!=1024)
+ {
+ currentSpeed=1024;
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+ }
+ ui->SliderSpeed->setValue(1);
+ ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*1)));
+ }
+ else if(currentSpeed<=1024*4)
+ {
+ if(currentSpeed!=1024*4)
+ {
+ currentSpeed=1024*4;
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+ }
+ ui->SliderSpeed->setValue(2);
+ ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*4)));
+ }
+ else if(currentSpeed<=1024*16)
+ {
+ if(currentSpeed!=1024*16)
+ {
+ currentSpeed=1024*16;
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+ }
+ ui->SliderSpeed->setValue(3);
+ ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*16)));
+ }
+ else if(currentSpeed<=1024*64)
+ {
+ if(currentSpeed!=1024*64)
+ {
+ currentSpeed=1024*64;
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+ }
+ ui->SliderSpeed->setValue(4);
+ ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*64)));
+ }
+ else
+ {
+ if(currentSpeed!=1024*128)
+ {
+ currentSpeed=1024*128;
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("currentSpeed",std::to_string(currentSpeed));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+ }
+ ui->SliderSpeed->setValue(5);
+ ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*128)));
+ }
+ }
+ else
+ {
+ ui->checkBox_limitSpeed->setChecked(currentSpeed>0);
+ if(currentSpeed>0)
+ ui->limitSpeed->setValue(currentSpeed);
+ ui->checkBox_limitSpeed->setEnabled(currentSpeed!=-1);
+ ui->limitSpeed->setEnabled(ui->checkBox_limitSpeed->isChecked());
+ }
+}
+
+void ThemesFactory::progressColorWrite_clicked()
+{
+ QColor color=QColorDialog::getColor(progressColorWrite,NULL,tr("Select a color"));
+ if(!color.isValid())
+ return;
+ progressColorWrite=color;
+ QPixmap pixmap(75,20);
+ pixmap.fill(progressColorWrite);
+ ui->progressColorWrite->setIcon(pixmap);
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("progressColorWrite",progressColorWrite.name().toStdString());
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::progressColorRead_clicked()
+{
+ QColor color=QColorDialog::getColor(progressColorRead,NULL,tr("Select a color"));
+ if(!color.isValid())
+ return;
+ progressColorRead=color;
+ QPixmap pixmap(75,20);
+ pixmap.fill(progressColorRead);
+ ui->progressColorRead->setIcon(pixmap);
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("progressColorRead",progressColorRead.name().toStdString());
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::progressColorRemaining_clicked()
+{
+ QColor color=QColorDialog::getColor(progressColorRemaining,NULL,tr("Select a color"));
+ if(!color.isValid())
+ return;
+ progressColorRemaining=color;
+ QPixmap pixmap(75,20);
+ pixmap.fill(progressColorRemaining);
+ ui->progressColorRemaining->setIcon(pixmap);
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("progressColorRemaining",progressColorRemaining.name().toStdString());
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
+
+void ThemesFactory::updateProgressionColorBar()
+{
+ ui->labelProgressionColor->setVisible(ui->showDualProgression->isChecked());
+ ui->frameProgressionColor->setVisible(ui->showDualProgression->isChecked());
+}
+
+void ThemesFactory::setShowProgressionInTheTitle()
+{
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("showProgressionInTheTitle",std::to_string(ui->showProgressionInTheTitle->isChecked()));
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
diff --git a/plugins/Themes/Oxygen2/ThemesFactory.h b/plugins/Themes/Oxygen2/ThemesFactory.h
new file mode 100755
index 0000000..bd6095e
--- /dev/null
+++ b/plugins/Themes/Oxygen2/ThemesFactory.h
@@ -0,0 +1,89 @@
+/** \file factory.h
+\brief Define the factory, to create instance of the interface
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef FACTORYTHEMEOXYGEN_H
+#define FACTORYTHEMEOXYGEN_H
+
+#include <QObject>
+#include <QWidget>
+#include <QMenu>
+#include <QCloseEvent>
+#include <QFile>
+#include <QIcon>
+#include <QColor>
+#include <QPixmap>
+
+#include "../../../interface/PluginInterface_Themes.h"
+#include "ui_themesOptions.h"
+#include "interface.h"
+#include "Oxygen2Environment.h"
+
+namespace Ui {
+ class themesOptions;
+}
+
+/// \brief Define the factory, to create instance of the interface
+class ThemesFactory : public PluginInterface_ThemesFactory
+{
+ Q_OBJECT
+ #ifndef ULTRACOPIER_PLUGIN_ALL_IN_ONE_DIRECT
+ Q_PLUGIN_METADATA(IID "first-world.info.ultracopier.PluginInterface.ThemesFactory/1.0.1.0" FILE "plugin.json")
+ Q_INTERFACES(PluginInterface_ThemesFactory)
+ #endif
+public:
+ ThemesFactory();
+ ~ThemesFactory();
+ /// \brief to return the instance of the copy engine
+ PluginInterface_Themes * getInstance() override;
+ /// \brief set the resources, to store options, to have facilityInterface
+ void setResources(OptionInterface * optionsEngine,const std::string &
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ writePath
+ #endif
+ ,const std::string &
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ pluginPath
+ #endif
+ ,FacilityInterface * facilityEngine,const bool &portableVersion) override;
+ /// \brief to get the default options widget
+ QWidget * options() override;
+ /// \brief to get a resource icon
+ QIcon getIcon(const std::string &fileName) const override;
+private slots:
+ void checkBoxShowSpeedHaveChanged(bool toggled);
+ void checkBoxStartWithMoreButtonPushedHaveChanged(bool toggled);
+ void comboBox_copyEnd(int value);
+ void speedWithProgressBar(bool toggled);
+ void checkBoxShowSpeed(bool checked);
+ void minimizeToSystray(bool checked);
+ void alwaysOnTop(bool checked);
+ void showDualProgression(bool checked);
+ void on_SliderSpeed_valueChanged(int value);
+ void uiUpdateSpeed();
+ void updateSpeed();
+ void progressColorWrite_clicked();
+ void progressColorRead_clicked();
+ void progressColorRemaining_clicked();
+ void updateProgressionColorBar();
+ void setShowProgressionInTheTitle();
+ void startMinimized(bool checked);
+ void savePositionBeforeClose(QObject *obj);
+ void savePositionHaveChanged(int value);
+ void setDark(bool toggled);
+public slots:
+ void resetOptions() override;
+ void newLanguageLoaded() override;
+private:
+ OptionInterface * optionsEngine;
+ Ui::themesOptions *ui;
+ QWidget *tempWidget;
+ FacilityInterface * facilityEngine;
+ int32_t currentSpeed;///< in KB/s, assume as 0KB/s as default like every where
+ QColor progressColorWrite,progressColorRead,progressColorRemaining;
+signals:
+ void reloadLanguage() const;
+};
+
+#endif // FACTORY_H
diff --git a/plugins/Themes/Oxygen2/TransferModel.cpp b/plugins/Themes/Oxygen2/TransferModel.cpp
new file mode 100755
index 0000000..5a97aab
--- /dev/null
+++ b/plugins/Themes/Oxygen2/TransferModel.cpp
@@ -0,0 +1,755 @@
+#include "TransferModel.h"
+#include "../../../cpp11addition.h"
+#include <iostream>
+
+#define COLUMN_COUNT 3
+
+// Model
+
+QIcon *TransferModel::start=NULL;
+QIcon *TransferModel::stop=NULL;
+
+TransferModel::TransferModel()
+{
+ /// \warning to prevent Must construct a QGuiApplication before QPixmap IN STATIC WINDOWS VERSION ONLY
+ if(TransferModel::start==NULL)
+ TransferModel::start=new QIcon(QStringLiteral(":/resources/player_play.png"));
+ if(TransferModel::stop==NULL)
+ TransferModel::stop=new QIcon(QStringLiteral(":/resources/player_pause.png"));
+ currentIndexSearch=0;
+ haveSearchItem=false;
+ loop_size=0,index_for_loop=0;
+ sub_loop_size=0,sub_index_for_loop=0;
+ row=0,column=0;
+ facilityEngine=NULL;
+ currentIndexSearch=0;
+ haveSearchItem=false;
+ searchId=0;
+
+ tree=NULL;
+}
+
+int TransferModel::columnCount( const QModelIndex& parent ) const
+{
+ return parent == QModelIndex() ? COLUMN_COUNT : 0;
+}
+
+QVariant TransferModel::data( const QModelIndex& index, int role ) const
+{
+ int row,column;
+ row=index.row();
+ column=index.column();
+ if(index.parent()!=QModelIndex() || row < 0 || (unsigned int)row >= transfertItemList.size() || column < 0 || column >= COLUMN_COUNT)
+ return QVariant();
+
+ const TransfertItem& item = transfertItemList.at(row);
+ if(role==Qt::UserRole)
+ return (quint64)item.id;
+ else if(role==Qt::DisplayRole)
+ {
+ switch(column)
+ {
+ case 0:
+ return QString::fromStdString(item.source);
+ break;
+ case 1:
+ return QString::fromStdString(item.size);
+ break;
+ case 2:
+ return QString::fromStdString(item.destination);
+ break;
+ default:
+ return QVariant();
+ }
+ }
+ else if(role==Qt::DecorationRole)
+ {
+ switch(column)
+ {
+ case 0:
+ if(stopId.find(item.id)!=stopId.cend())
+ return *stop;
+ else if(startId.find(item.id)!=startId.cend())
+ return *start;
+ else
+ return QVariant();
+ break;
+ default:
+ return QVariant();
+ }
+ }
+ else if(role==Qt::BackgroundRole)
+ {
+ if(!search_text.empty() && (item.source.find(search_text)!=std::string::npos ||
+ item.destination.find(search_text)!=std::string::npos))
+ {
+ if(haveSearchItem && searchId==item.id)
+ return QColor(255,150,150,100);
+ else
+ return QColor(255,255,0,100);
+ }
+ else
+ return QVariant();
+ }
+ return QVariant();
+}
+
+int TransferModel::rowCount( const QModelIndex& parent ) const
+{
+ return parent == QModelIndex() ? transfertItemList.size() : 0;
+}
+
+uint64_t TransferModel::firstId() const
+{
+ if(transfertItemList.size()>0)
+ return transfertItemList.front().id;
+ else
+ return 0;
+}
+
+QVariant TransferModel::headerData( int section, Qt::Orientation orientation, int role ) const
+{
+ if(facilityEngine==NULL)
+ abort();
+ if ( role == Qt::DisplayRole && orientation == Qt::Horizontal && section >= 0 && section < COLUMN_COUNT ) {
+ switch ( section ) {
+ case 0:
+ return QString::fromStdString(facilityEngine->translateText("Source"));
+ case 1:
+ return QString::fromStdString(facilityEngine->translateText("Size"));
+ case 2:
+ return QString::fromStdString(facilityEngine->translateText("Destination"));
+ }
+ }
+
+ return QAbstractTableModel::headerData( section, orientation, role );
+}
+
+bool TransferModel::setData( const QModelIndex& index, const QVariant& value, int role )
+{
+ row=index.row();
+ column=index.column();
+ if(index.parent()!=QModelIndex() || row < 0 || (unsigned int)row >= transfertItemList.size() || column < 0 || column >= COLUMN_COUNT)
+ return false;
+
+ TransfertItem& item = transfertItemList[row];
+ if(role==Qt::UserRole)
+ {
+ item.id=value.toULongLong();
+ return true;
+ }
+ else if(role==Qt::DisplayRole)
+ {
+ switch(column)
+ {
+ case 0:
+ item.source=value.toString().toStdString();
+ emit dataChanged(index,index);
+ return true;
+ break;
+ case 1:
+ item.size=value.toString().toStdString();
+ emit dataChanged(index,index);
+ return true;
+ break;
+ case 2:
+ item.destination=value.toString().toStdString();
+ emit dataChanged(index,index);
+ return true;
+ break;
+ default:
+ return false;
+ }
+ }
+ return false;
+}
+
+Folder * TransferModel::appendToTreeR(Folder * const tree, const std::string &subPath,Folder * const oldTree)
+{
+ const std::string::size_type n=subPath.find('/');
+
+ //isolate the name
+ std::string name;
+ if(n == std::string::npos)
+ name=subPath;
+ else
+ name=subPath.substr(0,n);
+ //search
+ auto search = tree->folders.find(name);
+ Folder * folder=nullptr;
+ if(search == tree->folders.end())
+ {
+ //append or remplace the existing
+ if(oldTree!=NULL && (n+1)==subPath.size())
+ {
+ oldTree->setName(subPath.substr(0,n).c_str());
+ folder=oldTree;
+ }
+ else
+ folder=new Folder(name);
+ if(!folder->isFolder())
+ {
+ if(oldTree!=NULL)
+ abort();
+ return nullptr;
+ }
+ tree->append(folder);
+ }
+ else
+ {
+ //create a new leaf
+ File * file=search->second;
+ if(!file->isFolder())
+ return nullptr;
+ folder=static_cast<Folder *>(file);
+ }
+ if(n == std::string::npos || n+1==subPath.size())
+ return folder;
+ else
+ return appendToTreeR(folder,subPath.substr(n+1),oldTree);
+}
+
+void TransferModel::appendToTree(const std::string &path,const uint64_t &size)
+{
+ if(size==0)
+ return;
+ const std::string::size_type n=path.rfind('/');
+ if(n == std::string::npos)
+ return;
+ if(treePath.empty())
+ {
+ treePath=path.substr(0,n+1);
+ tree->append(path.c_str()+n+1,size);
+ }
+ else
+ {
+ const std::string &newPath=path.substr(0,n+1);
+ unsigned int index=0;
+ while(index<newPath.size() && index<treePath.size())
+ {
+ if(treePath.at(index)!=newPath.at(index))
+ break;
+ index++;
+ }
+ //append to current path
+ if(index==treePath.size())
+ {
+ //get the next path, found or create
+ Folder * finalTree=tree;
+ if((n+1)>index)
+ {
+ const std::string &subPath=path.substr(index,(n+1)-index);
+ finalTree=appendToTreeR(tree,subPath);
+ }
+ finalTree->append(path.c_str()+n+1,size);
+ }
+ else //new root is to be created
+ {
+ //save the old values
+ const std::string oldTreePath=treePath;
+ Folder * const oldTree=tree;
+ tree=new Folder("");
+ treePath=path.substr(0,index);
+
+ //path switch to rebase the root
+ if(oldTreePath.size()>index)
+ appendToTreeR(tree,oldTreePath.substr(index),oldTree);
+
+ Folder * finalTree=tree;
+ //make the new sub path if have
+ if((n+1)>index)
+ finalTree=appendToTreeR(tree,path.substr(index));
+
+ //do the file
+ finalTree->append(path.c_str()+n+1,size);
+ }
+ }
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ //check the integrity of tree
+ /*now it's mostly stable checkIntegrityChildren(tree);
+ checkIntegritySize(tree);*/
+ #endif
+}
+
+#ifdef ULTRACOPIER_PLUGIN_DEBUG
+//check the integrity of tree size
+uint64_t TransferModel::checkIntegritySize(const Folder * const tree)
+{
+ uint64_t size=0;
+ unsigned int index=0;
+ while(index<tree->onlyFiles.size())
+ {
+ File * file=tree->onlyFiles.at(index);
+ if(file->parent()!=tree)
+ {
+ std::cerr << "tree parrent corrupted" << std::endl;
+ abort();
+ }
+ size+=file->size();
+ index++;
+ }
+ for(const auto& n : tree->folders)
+ {
+ Folder * folder=n.second;
+ if(folder->parent()!=tree)
+ {
+ std::cerr << "tree parrent corrupted" << std::endl;
+ abort();
+ }
+ size+=checkIntegritySize(folder);
+ }
+ if(size!=tree->size())
+ {
+ std::cerr << "tree corrupted" << std::endl;
+ abort();
+ }
+ return tree->size();
+}
+
+//check the integrity of tree children
+uint64_t TransferModel::checkIntegrityChildren(const Folder * const tree)
+{
+ uint64_t childrens=0;
+ childrens+=tree->onlyFiles.size();
+ for(const auto& n : tree->folders)
+ {
+ Folder * folder=n.second;
+ if(folder->parent()!=tree)
+ {
+ std::cerr << "tree parrent corrupted" << std::endl;
+ abort();
+ }
+ childrens+=checkIntegrityChildren(folder);
+ }
+ if(childrens!=tree->children())
+ {
+ std::cerr << "tree corrupted" << std::endl;
+ abort();
+ }
+ return tree->children();
+}
+#endif
+
+/*
+ Return[0]: totalFile
+ Return[1]: totalSize
+ Return[2]: currentFile
+ */
+std::vector<uint64_t> TransferModel::synchronizeItems(const std::vector<Ultracopier::ReturnActionOnCopyList>& returnActions)
+{
+ const QModelIndexList oldIndexes = persistentIndexList();
+ QModelIndexList newIndexes=oldIndexes;
+ QMap<int, quint64> oldMapping; // model index row in model before update, item id
+ QMap<quint64, int> newMapping; // item id, model index row in model after update
+ for ( int i = 0; i < oldIndexes.count(); i++ ) {
+ const QModelIndex& index = oldIndexes.at(i);
+ oldMapping[index.row()] = index.data( Qt::UserRole ).value<quint64>();
+ }
+
+ loop_size=returnActions.size();
+ index_for_loop=0;
+ quint64 totalFile=0,totalSize=0,currentFile=0;
+ emit layoutAboutToBeChanged();
+ while(index_for_loop<loop_size)
+ {
+ const Ultracopier::ReturnActionOnCopyList& action=returnActions.at(index_for_loop);
+ switch(action.type)
+ {
+ case Ultracopier::AddingItem:
+ {
+ TransfertItem newItem;
+ newItem.id=action.addAction.id;
+ newItem.source=action.addAction.sourceFullPath;
+ newItem.size=facilityEngine->sizeToString(action.addAction.size);
+ newItem.destination=action.addAction.destinationFullPath;
+ transfertItemList.push_back(newItem);
+ totalFile++;
+ totalSize+=action.addAction.size;
+
+ appendToTree(action.addAction.sourceFullPath,action.addAction.size);
+ }
+ break;
+ case Ultracopier::MoveItem:
+ {
+ //bool current_entry=
+ if(action.userAction.position<0)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString());
+ break;
+ }
+ if((unsigned int)action.userAction.position>(transfertItemList.size()-1))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString());
+ break;
+ }
+ if(action.userAction.moveAt<0)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString());
+ break;
+ }
+ if((unsigned int)action.userAction.moveAt>(transfertItemList.size()-1))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, position is wrong: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString());
+ break;
+ }
+ if(action.userAction.position==action.userAction.moveAt)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("id: %1, move at same position: %2").arg(action.addAction.id).arg(action.userAction.position).toStdString());
+ break;
+ }
+ const TransfertItem transfertItem=transfertItemList.at(action.userAction.position);
+ transfertItemList.erase(transfertItemList.cbegin()+action.userAction.position);
+ transfertItemList.insert(transfertItemList.cbegin()+action.userAction.moveAt,transfertItem);
+ //newIndexes.move(action.userAction.position,action.userAction.moveAt);
+ }
+ break;
+ case Ultracopier::RemoveItem:
+ {
+ if(currentIndexSearch>0 && action.userAction.position<=currentIndexSearch)
+ currentIndexSearch--;
+ if(action.userAction.position<0)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position).toStdString());
+ break;
+ }
+ if((unsigned int)action.userAction.position>(transfertItemList.size()-1))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position).toStdString());
+ break;
+ }
+ transfertItemList.erase(transfertItemList.cbegin()+action.userAction.position);
+ currentFile++;
+ startId.erase(action.addAction.id);
+ stopId.erase(action.addAction.id);
+ internalRunningOperation.erase(action.addAction.id);
+ //newIndexes.remove(action.userAction.moveAt);
+ }
+ break;
+ case Ultracopier::PreOperation:
+ {
+ ItemOfCopyListWithMoreInformations tempItem;
+ tempItem.currentReadProgression=0;
+ tempItem.currentWriteProgression=0;
+ tempItem.generalData=action.addAction;
+ tempItem.actionType=action.type;
+ internalRunningOperation[action.addAction.id]=tempItem;
+ }
+ break;
+ case Ultracopier::Transfer:
+ {
+ if(startId.find(action.addAction.id)==startId.cend())
+ startId.insert(action.addAction.id);
+ stopId.erase(action.addAction.id);
+ if(internalRunningOperation.find(action.addAction.id)!=internalRunningOperation.cend())
+ internalRunningOperation[action.addAction.id].actionType=action.type;
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unable to found entry for file %1: actionType: Transfer").arg(action.addAction.id).toStdString());
+ }
+ break;
+ case Ultracopier::PostOperation:
+ {
+ if(stopId.find(action.addAction.id)==stopId.cend())
+ stopId.insert(action.addAction.id);
+ startId.erase(action.addAction.id);
+ }
+ break;
+ case Ultracopier::CustomOperation:
+ {
+ bool custom_with_progression=(action.addAction.size==1);
+ //without progression
+ if(custom_with_progression)
+ {
+ if(startId.find(action.addAction.id)!=startId.cend())
+ {
+ startId.erase(action.addAction.id);
+ if(stopId.find(action.addAction.id)==stopId.cend())
+ stopId.insert(action.addAction.id);
+ }
+ }
+ //with progression
+ else
+ {
+ stopId.erase(action.addAction.id);
+ if(startId.find(action.addAction.id)==startId.cend())
+ startId.insert(action.addAction.id);
+ }
+ if(internalRunningOperation.find(action.addAction.id)!=internalRunningOperation.cend())
+ {
+ ItemOfCopyListWithMoreInformations &item=internalRunningOperation[action.addAction.id];
+ item.actionType=action.type;
+ item.custom_with_progression=custom_with_progression;
+ item.currentReadProgression=0;
+ item.currentWriteProgression=0;
+ }
+ }
+ break;
+ default:
+ //unknow code, ignore it
+ break;
+ }
+ index_for_loop++;
+ }
+
+ if(!oldIndexes.isEmpty())
+ {
+ const QSet<quint64> ids = oldMapping.values().toSet();
+
+ for ( unsigned int i = 0; i < transfertItemList.size(); i++ ) {
+ const TransferModel::TransfertItem& item = transfertItemList.at(i);
+
+ if ( ids.contains( item.id ) ) {
+ newMapping[ item.id ] = i;
+ }
+ }
+
+ for ( int i = 0; i < oldIndexes.count(); i++ ) {
+ const QModelIndex& index = oldIndexes.at(i);
+ const int newRow = newMapping.value( oldMapping.value(index.row()), -1 );
+ newIndexes[ i ] = newRow == -1 ? QModelIndex() : QAbstractTableModel::index( newRow, index.column(), index.parent() );
+ }
+ }
+
+ changePersistentIndexList( oldIndexes, newIndexes );
+ emit layoutChanged();
+ {
+ std::vector<uint64_t> newList;
+ newList.resize(3);
+ newList[0]=totalFile;
+ newList[1]=totalSize;
+ newList[2]=currentFile;
+ return newList;
+ }
+}
+
+void TransferModel::setFacilityEngine(FacilityInterface * facilityEngine)
+{
+ this->facilityEngine=facilityEngine;
+}
+
+int TransferModel::search(const std::string &text, bool searchNext)
+{
+ emit layoutAboutToBeChanged();
+ search_text=text;
+ emit layoutChanged();
+ if(transfertItemList.size()==0)
+ return -1;
+ if(text.empty())
+ return -1;
+ if(searchNext)
+ {
+ currentIndexSearch++;
+ if(currentIndexSearch>=loop_size)
+ currentIndexSearch=0;
+ }
+ index_for_loop=0;
+ loop_size=transfertItemList.size();
+ while(index_for_loop<loop_size)
+ {
+ const TransfertItem &transfertItem=transfertItemList.at(currentIndexSearch);
+ if(transfertItem.source.find(search_text)!=std::string::npos ||
+ transfertItem.destination.find(search_text)!=std::string::npos)
+ {
+ haveSearchItem=true;
+ searchId=transfertItemList.at(currentIndexSearch).id;
+ return currentIndexSearch;
+ }
+ currentIndexSearch++;
+ if(currentIndexSearch>=loop_size)
+ currentIndexSearch=0;
+ index_for_loop++;
+ }
+ haveSearchItem=false;
+ return -1;
+}
+
+int TransferModel::searchPrev(const std::string &text)
+{
+ emit layoutAboutToBeChanged();
+ search_text=text;
+ emit layoutChanged();
+ if(transfertItemList.size()==0)
+ return -1;
+ if(text.empty())
+ return -1;
+ if(currentIndexSearch==0)
+ currentIndexSearch=loop_size-1;
+ else
+ currentIndexSearch--;
+ index_for_loop=0;
+ loop_size=transfertItemList.size();
+ while(index_for_loop<loop_size)
+ {
+ const TransfertItem &transfertItem=transfertItemList.at(currentIndexSearch);
+ if(transfertItem.source.find(search_text)!=std::string::npos ||
+ transfertItem.destination.find(search_text)!=std::string::npos)
+ {
+ haveSearchItem=true;
+ searchId=transfertItemList.at(currentIndexSearch).id;
+ return currentIndexSearch;
+ }
+ if(currentIndexSearch==0)
+ currentIndexSearch=loop_size-1;
+ else
+ currentIndexSearch--;
+ index_for_loop++;
+ }
+ haveSearchItem=false;
+ return -1;
+}
+
+void TransferModel::setFileProgression(std::vector<Ultracopier::ProgressionItem> &progressionList)
+{
+ loop_size=progressionList.size();
+ index_for_loop=0;
+ while(index_for_loop<loop_size)
+ {
+ if(internalRunningOperation.find(progressionList.at(index_for_loop).id)!=internalRunningOperation.cend())
+ {
+ internalRunningOperation[progressionList.at(index_for_loop).id].generalData.size=progressionList.at(index_for_loop).total;
+ internalRunningOperation[progressionList.at(index_for_loop).id].currentReadProgression=progressionList.at(index_for_loop).currentRead;
+ internalRunningOperation[progressionList.at(index_for_loop).id].currentWriteProgression=progressionList.at(index_for_loop).currentWrite;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ progressionList.erase(progressionList.cbegin()+index_for_loop);
+ index_for_loop--;
+ loop_size--;
+ #endif
+ }
+ index_for_loop++;
+ }
+}
+
+TransferModel::currentTransfertItem TransferModel::getCurrentTransfertItem() const
+{
+ currentTransfertItem returnItem;
+ returnItem.progressBar_read=-1;
+ returnItem.progressBar_write=0;
+ returnItem.haveItem=startId.size()>0;
+ if(returnItem.haveItem)
+ {
+ if(internalRunningOperation.find(*startId.cbegin())==internalRunningOperation.cend())
+ {
+ returnItem.haveItem=false;
+ return returnItem;
+ }
+ const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation.at(*startId.cbegin());
+ returnItem.from=itemTransfer.generalData.sourceFullPath;
+ returnItem.to=itemTransfer.generalData.destinationFullPath;
+ returnItem.current_file=itemTransfer.generalData.destinationFileName+", "+facilityEngine->sizeToString(itemTransfer.generalData.size);
+ returnItem.id=itemTransfer.generalData.id;
+ switch(itemTransfer.actionType)
+ {
+ case Ultracopier::CustomOperation:
+ if(!itemTransfer.custom_with_progression)
+ returnItem.progressBar_read=-1;
+ else
+ {
+ if(itemTransfer.generalData.size>0)
+ {
+ returnItem.progressBar_read=((double)itemTransfer.currentReadProgression/itemTransfer.generalData.size)*65535;
+ returnItem.progressBar_write=((double)itemTransfer.currentWriteProgression/itemTransfer.generalData.size)*65535;
+ }
+ else
+ returnItem.progressBar_read=-1;
+ }
+ break;
+ case Ultracopier::Transfer:
+ if(itemTransfer.generalData.size>0)
+ {
+ returnItem.progressBar_read=((double)itemTransfer.currentReadProgression/itemTransfer.generalData.size)*65535;
+ returnItem.progressBar_write=((double)itemTransfer.currentWriteProgression/itemTransfer.generalData.size)*65535;
+ }
+ else
+ {
+ returnItem.progressBar_read=0;
+ returnItem.progressBar_write=0;
+ }
+ break;
+ //should never pass here
+ case Ultracopier::PostOperation:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString());
+ returnItem.progressBar_read=65535;
+ returnItem.progressBar_write=65535;
+ break;
+ //should pass here if in wait of new name for renaming
+ case Ultracopier::PreOperation:
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString());
+ returnItem.progressBar_read=0;
+ returnItem.progressBar_write=0;
+ break;
+ default:
+ returnItem.progressBar_read=0;
+ returnItem.progressBar_write=0;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unknow action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString());
+ break;
+ }
+ }
+ else
+ {
+ returnItem.haveItem=stopId.size()>0;
+ if(returnItem.haveItem)
+ {
+ if(internalRunningOperation.find(*stopId.cbegin())==internalRunningOperation.cend())
+ {
+ returnItem.haveItem=false;
+ return returnItem;
+ }
+ const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation.at(*stopId.cbegin());
+ returnItem.from=itemTransfer.generalData.sourceFullPath;
+ returnItem.to=itemTransfer.generalData.destinationFullPath;
+ returnItem.current_file=itemTransfer.generalData.destinationFileName+", "+facilityEngine->sizeToString(itemTransfer.generalData.size);
+ returnItem.id=itemTransfer.generalData.id;
+ switch(itemTransfer.actionType)
+ {
+ case Ultracopier::CustomOperation:
+ if(!itemTransfer.custom_with_progression)
+ returnItem.progressBar_read=-1;
+ else
+ {
+ if(itemTransfer.generalData.size>0)
+ {
+ returnItem.progressBar_read=((double)itemTransfer.currentReadProgression/itemTransfer.generalData.size)*65535;
+ returnItem.progressBar_write=((double)itemTransfer.currentWriteProgression/itemTransfer.generalData.size)*65535;
+ }
+ else
+ returnItem.progressBar_read=-1;
+ }
+ break;
+ case Ultracopier::Transfer:
+ if(itemTransfer.generalData.size>0)
+ {
+ returnItem.progressBar_read=((double)itemTransfer.currentReadProgression/itemTransfer.generalData.size)*65535;
+ returnItem.progressBar_write=((double)itemTransfer.currentWriteProgression/itemTransfer.generalData.size)*65535;
+ }
+ else
+ {
+ returnItem.progressBar_read=0;
+ returnItem.progressBar_write=0;
+ }
+ break;
+ case Ultracopier::PostOperation:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString());
+ returnItem.progressBar_read=65535;
+ returnItem.progressBar_write=65535;
+ break;
+ //should never pass here
+ case Ultracopier::PreOperation:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString());
+ returnItem.progressBar_read=0;
+ returnItem.progressBar_write=0;
+ break;
+ default:
+ returnItem.progressBar_read=65535;
+ returnItem.progressBar_write=65535;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unknow action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType).toStdString());
+ break;
+ }
+ }
+ }
+ if(returnItem.haveItem && returnItem.progressBar_read!=-1 && returnItem.progressBar_write>returnItem.progressBar_read)
+ {
+ int tempVar=returnItem.progressBar_write;
+ returnItem.progressBar_write=returnItem.progressBar_read;
+ returnItem.progressBar_read=tempVar;
+ }
+ return returnItem;
+}
diff --git a/plugins/Themes/Oxygen2/TransferModel.h b/plugins/Themes/Oxygen2/TransferModel.h
new file mode 100755
index 0000000..94ccdae
--- /dev/null
+++ b/plugins/Themes/Oxygen2/TransferModel.h
@@ -0,0 +1,106 @@
+#ifndef TRANSFERMODEL_H
+#define TRANSFERMODEL_H
+
+#include <QAbstractTableModel>
+#include <QItemSelectionModel>
+#include <QModelIndex>
+#include <QVariant>
+#include <QList>
+#include <QSet>
+#include <QIcon>
+#include <QString>
+#include <unordered_map>
+#include <unordered_set>
+#include <set>
+#include <vector>
+
+#include "StructEnumDefinition.h"
+#include "Oxygen2Environment.h"
+
+#include "../../../interface/FacilityInterface.h"
+#include "fileTree.h"
+
+/// \brief model to store the transfer list
+class TransferModel : public QAbstractTableModel
+{
+ Q_OBJECT
+public:
+ /// \brief the transfer item displayed
+ struct TransfertItem
+ {
+ uint64_t id;
+ std::string source;
+ std::string size;
+ std::string destination;
+ };
+ /// \brief the transfer item with progression
+ struct ItemOfCopyListWithMoreInformations
+ {
+ uint64_t currentReadProgression,currentWriteProgression;
+ Ultracopier::ItemOfCopyList generalData;
+ Ultracopier::ActionTypeCopyList actionType;
+ bool custom_with_progression;
+ };
+ /// \brief returned first transfer item
+ struct currentTransfertItem
+ {
+ uint64_t id;
+ bool haveItem;
+ std::string from;
+ std::string to;
+ std::string current_file;
+ int progressBar_read,progressBar_write;
+ };
+
+ TransferModel();
+
+ virtual int columnCount(const QModelIndex& parent = QModelIndex()) const;
+ virtual QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const;
+ virtual int rowCount(const QModelIndex& parent = QModelIndex()) const;
+ virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
+ virtual bool setData(const QModelIndex& index, const QVariant& value, int role = Qt::EditRole);
+
+ std::vector<uint64_t> synchronizeItems(const std::vector<Ultracopier::ReturnActionOnCopyList>& returnActions);
+ void appendToTree(const std::string &path, const uint64_t &size);
+ Folder * appendToTreeR(Folder * const tree, const std::string &subPath,Folder * const oldTree=NULL);
+ void setFacilityEngine(FacilityInterface * facilityEngine);
+
+ int search(const std::string &text,bool searchNext);
+ int searchPrev(const std::string &text);
+
+ void setFileProgression(std::vector<Ultracopier::ProgressionItem> &progressionList);
+
+ currentTransfertItem getCurrentTransfertItem() const;
+
+ uint64_t firstId() const;
+ Folder * tree;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ //check the integrity of tree
+ uint64_t checkIntegrityChildren(const Folder * const tree);
+ uint64_t checkIntegritySize(const Folder * const tree);
+ #endif
+protected:
+ std::vector<TransfertItem> transfertItemList;///< To have a transfer list for the user
+ std::set<uint64_t> startId,stopId;///< To show what is started, what is stopped
+ std::unordered_map<uint64_t,ItemOfCopyListWithMoreInformations> internalRunningOperation;///< to have progression and stat
+private:
+ int loop_size,index_for_loop;
+ int sub_loop_size,sub_index_for_loop;
+ int row,column;
+ FacilityInterface * facilityEngine;
+ std::string search_text;
+ /// \brief index from start the search, decresed by remove before it
+ int currentIndexSearch;
+ bool haveSearchItem;
+ uint64_t searchId;
+ static QIcon *start;
+ static QIcon *stop;
+ std::string treePath;
+signals:
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,std::string fonction,std::string text,std::string file,int ligne) const;
+ #endif
+};
+
+#endif // TRANSFERMODEL_H
diff --git a/plugins/Themes/Oxygen2/VerticalLabel.cpp b/plugins/Themes/Oxygen2/VerticalLabel.cpp
new file mode 100755
index 0000000..bda9ab8
--- /dev/null
+++ b/plugins/Themes/Oxygen2/VerticalLabel.cpp
@@ -0,0 +1,44 @@
+#include "VerticalLabel.h"
+#include <QPainter>
+#include <QApplication>
+
+VerticalLabel::VerticalLabel(QWidget *parent)
+ : QLabel(parent)
+{
+ color=QApplication::palette().text().color();
+}
+
+VerticalLabel::VerticalLabel(const QString &text, QWidget *parent)
+ : QLabel(text, parent)
+{
+}
+
+VerticalLabel::~VerticalLabel()
+{
+}
+
+void VerticalLabel::paintEvent(QPaintEvent*)
+{
+ QPainter painter(this);
+ painter.setPen(color);
+ painter.setBrush(Qt::Dense1Pattern);
+ painter.rotate(90);
+ painter.drawText(0,0, text());
+}
+
+void VerticalLabel::setColor(QColor color)
+{
+ this->color=color;
+}
+
+QSize VerticalLabel::minimumSizeHint() const
+{
+ QSize s = QLabel::minimumSizeHint();
+ return QSize(s.height(), s.width());
+}
+
+QSize VerticalLabel::sizeHint() const
+{
+ QSize s = QLabel::sizeHint();
+ return QSize(s.height(), s.width());
+}
diff --git a/plugins/Themes/Oxygen2/VerticalLabel.h b/plugins/Themes/Oxygen2/VerticalLabel.h
new file mode 100755
index 0000000..4c01012
--- /dev/null
+++ b/plugins/Themes/Oxygen2/VerticalLabel.h
@@ -0,0 +1,21 @@
+#ifndef VERTICALLABELCUSTOM_H
+#define VERTICALLABELCUSTOM_H
+
+#include <QLabel>
+
+class VerticalLabel : public QLabel
+{
+public:
+ explicit VerticalLabel(QWidget *parent=0);
+ explicit VerticalLabel(const QString &text, QWidget *parent=0);
+ ~VerticalLabel() override;
+ void setColor(QColor color);
+protected:
+ void paintEvent(QPaintEvent*) override;
+ QSize sizeHint() const override;
+ QSize minimumSizeHint() const override;
+private:
+ QColor color;
+};
+
+#endif // VERTICALLABELCUSTOM_H
diff --git a/plugins/Themes/Oxygen2/chartarea.cpp b/plugins/Themes/Oxygen2/chartarea.cpp
new file mode 100755
index 0000000..9378458
--- /dev/null
+++ b/plugins/Themes/Oxygen2/chartarea.cpp
@@ -0,0 +1,117 @@
+#include "chartarea.h"
+
+#include <QWidget>
+#include <QPainter>
+#include <QVector>
+#include <QPointF>
+#include <iostream>
+
+ChartArea::Widget::Widget(FacilityInterface * facilityEngine,QWidget *parent)
+ : QWidget(parent)
+{
+ this->facilityEngine=facilityEngine;
+ setSizePolicy(QSizePolicy::Preferred,QSizePolicy::MinimumExpanding);
+ setMinimumHeight(20);
+ setMinimumWidth(100);
+}
+
+ChartArea::Widget::~Widget()
+{
+}
+
+void ChartArea::Widget::invalidate()
+{
+}
+
+void ChartArea::Widget::resizeEvent(QResizeEvent*)
+{
+}
+
+void ChartArea::Widget::addValue(uint64_t value)
+{
+ m_values.push_back(value);
+ while(m_values.size()>64)
+ m_values.erase(m_values.begin());
+ update();
+}
+
+void ChartArea::Widget::paintEvent(QPaintEvent*)
+{
+ QPainter painter;
+ painter.begin(this);
+ painter.setBrush(QColor(160,160,160,30));
+ painter.drawRect(0,0,width()-1,height()-1);
+ painter.setRenderHint(QPainter::Antialiasing,true);
+ painter.setRenderHint(QPainter::SmoothPixmapTransform,true);
+ painter.setRenderHint(QPainter::HighQualityAntialiasing,true);
+
+ while(m_values.size()<64)
+ m_values.insert(m_values.begin(),0);
+ std::vector<uint64_t> values=m_values;
+ QVector<QPointF> points;
+ {
+ uint64_t max=0;
+ unsigned int index=0;
+ while(index<values.size())
+ {
+ if(max<values.at(index))
+ max=values.at(index);
+ index++;
+ }
+ if(max<=0)
+ {
+ points << QPointF(0, height()-1);
+ points << QPointF(width()/2, height()-1);
+ points << QPointF(width()-1, height()-1);
+ }
+ else
+ {
+ index=0;
+ while(index<values.size())
+ {
+ int w=width()-1;
+ int nw=w*index/(m_values.size()-1);
+ points << QPointF(nw, height()-values.at(index)*height()/max);
+ index++;
+ }
+ }
+ }
+
+ painter.setPen(Qt::NoPen);
+ QLinearGradient gradient(0,height()*0.5,0,height());
+ gradient.setColorAt(0, QColor(160,240,160,150));
+ //gradient.setColorAt(0.2, QColor(100,220,100,200));
+ gradient.setColorAt(1, QColor(160,240,160,0));
+ painter.setBrush(gradient);
+ points.push_front(QPointF(0, height()-1));
+ points.push_back(QPointF(width()-1, height()-1));
+ painter.drawPolygon(QPolygonF(points));
+
+ if(width()*height()>250000)
+ painter.setPen(QPen(QColor(160,240,160), 3));
+ else
+ painter.setPen(QPen(QColor(160,240,160), 2));
+ painter.drawPolyline(QPolygonF(points));
+
+
+ // todo: bounding rect + center flag
+ if(height()>30)
+ {
+ QFont font = painter.font();
+ int heightTemp=height()/5;
+ if(heightTemp<14)
+ heightTemp=14;
+ font.setPixelSize(heightTemp);
+ painter.setFont(font);
+
+ painter.setPen(QPen(QColor(140,140,140), 3));
+ painter.drawText(0,0,width(),height(),Qt::AlignHCenter | Qt::AlignBottom,
+ QString::fromStdString(
+ facilityEngine->speedToString(
+ m_values.back()
+ )
+ )
+ );
+ }
+ painter.end();
+}
diff --git a/plugins/Themes/Oxygen2/chartarea.h b/plugins/Themes/Oxygen2/chartarea.h
new file mode 100755
index 0000000..dbfa36c
--- /dev/null
+++ b/plugins/Themes/Oxygen2/chartarea.h
@@ -0,0 +1,31 @@
+#ifndef ChartAreaWIDGET_H
+#define ChartAreaWIDGET_H
+
+#include <QResizeEvent>
+#include <QWidget>
+
+#include "../../../interface/FacilityInterface.h"
+
+namespace ChartArea
+{
+
+class Widget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit Widget(FacilityInterface * facilityEngine,QWidget* = nullptr);
+ ~Widget() override;
+ void addValue(uint64_t value);
+public Q_SLOTS:
+ void invalidate();
+protected:
+ void paintEvent(QPaintEvent*) override;
+ void resizeEvent(QResizeEvent*) override;
+private:
+ FacilityInterface * facilityEngine;
+ std::vector<uint64_t> m_values;
+};
+}
+
+#endif
diff --git a/plugins/Themes/Oxygen2/documentation.dox b/plugins/Themes/Oxygen2/documentation.dox
new file mode 100755
index 0000000..d94ce0b
--- /dev/null
+++ b/plugins/Themes/Oxygen2/documentation.dox
@@ -0,0 +1,31 @@
+/* -*- mode: C++ ; c-file-style: "stroustrup" -*- **/
+
+/*
+ This file contains NO source code, just some documentation for doxygen to
+ parse.
+*/
+
+/*!
+ \mainpage Oxygen
+
+ \section mainpage_overview Overview
+
+ It's the default interface for Ultracopier.\n
+ More informations on <a href="http://ultracopier-wiki.first-world.info/">the wiki of ultracopier</a>.
+
+ \section mainpage_platforms Platforms
+
+ Ultracopier might be usable in all environments where you find Qt 5.\n
+ Ultracopier requires Qt 5.0 or newer. Tested on Qt 5.0.
+
+ \section mainpage_downloads Downloads
+
+ You can find the link on <a href="http://ultracopier.first-world.info/">Ultracopier</a> project page, via git, snapshot sources, ...
+
+ \section license GPL Version 3
+ The code source is under GPL3. The image is extacted from Oxygen icon pack of KDE4.\n
+ resources/export-transfer-list.png and resources/import-transfer-list.png done by png manipulation of KDE's oxygen icon pack (16x16/actions/format-indent-more.png + 16x16/actions/format-list-unordered.png), document-save.png -> all SystemTrayIcon/systray_* (color alteration).\n
+ From 16x16/actions/: list-add.png -> add.png and SystemTrayIcon/add.png, process-stop.png -> remove.png, document-save.png -> main.png and, arrow-down.png -> moveDown.png, arrow-up.png -> moveUp.png, system-shutdown.png -> cancel.png and SystemTrayIcon/exit.png, arrow-down-double.png -> putOnBottom.png, arrow-up-double.png -> putOnTop.png, media-skip-forward.png -> player_end.png, media-playback-pause.png -> player_pause.png, media-playback-start.png -> player_play.png, document-preview.png -> search.png, help-about.png -> SystemTrayIcon/informations.png \n
+ And 16x16/categories/applications-development.png -> SystemTrayIcon/options.png
+
+*/
diff --git a/plugins/Themes/Oxygen2/fileTree.cpp b/plugins/Themes/Oxygen2/fileTree.cpp
new file mode 100755
index 0000000..501657c
--- /dev/null
+++ b/plugins/Themes/Oxygen2/fileTree.cpp
@@ -0,0 +1,149 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+* Copyright 2017 Harald Sitter <sitter@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+
+#include "fileTree.h"
+
+FacilityInterface *File::facilityEngine=NULL;
+
+#include <QDir>
+#include <QUrl>
+
+QString File::displayName() const {
+ const QString decodedName = QString::fromStdString(m_name);
+ return url().isLocalFile() ? QDir::toNativeSeparators(decodedName) : decodedName;
+}
+
+QString File::displayPath(const Folder *root) const
+{
+ // Use QUrl to sanitize the path for display and then run it through
+ // QDir to make sure we use native path separators.
+ const QUrl url = this->url(root);
+ const QString cleanPath = url.toDisplayString(QUrl::PreferLocalFile | QUrl::NormalizePathSegments);
+ return url.isLocalFile() ? QDir::toNativeSeparators(cleanPath) : cleanPath;
+}
+
+QUrl File::url(const Folder *root) const
+{
+ QString path;
+
+ if (root == this)
+ root = nullptr; //prevent returning empty string when there is something we could return
+
+ for (const Folder *d = (Folder*)this; d != root && d; d = d->parent()) {
+ const QString &name=QString::fromStdString(d->name());
+ if(!name.isEmpty() && !path.isEmpty())
+ path.prepend(QDir::separator());
+ path.prepend(name);
+ }
+
+ return path;
+}
+
+void Folder::append(File *p)
+{
+ if(p->isFolder())
+ {
+ folders[p->name()]=static_cast<Folder *>(p);
+ Folder *d = this;
+ while(d != nullptr) {
+ d->m_children+=static_cast<Folder *>(p)->children();
+ d->m_size += p->size();
+ d=d->m_parent;
+ }
+ }
+ else
+ {
+ onlyFiles.push_back(p);
+ Folder *d = this;
+ while(d != nullptr) {
+ /*if(p->isFolder())
+ d->m_children+=static_cast<Folder *>(p)->children();
+ else*/
+ d->m_children++;
+ d->m_size += p->size();
+ d=d->m_parent;
+ }
+ }
+}
+
+///appends a Folder
+void Folder::append(Folder *d, const std::string &name)
+{
+ if (!name.empty())
+ m_name=name;
+
+ //do into append() m_children += d->children(); //doesn't include the dir itself
+ d->m_parent = this;
+ append((File*)d); //will add 1 to filecount for the dir itself
+}
+
+void Folder::append(Folder *d)
+{
+ //do into append() m_children += d->children(); //doesn't include the dir itself
+ d->m_parent = this;
+ append((File*)d); //will add 1 to filecount for the dir itself
+}
+
+///appends a File
+void Folder::append(const std::string &name, uint64_t size)
+{
+ append(new File(name, size, this));
+}
+
+/// removes a file
+void Folder::remove(const File *f) {
+ bool found=false;
+ uint64_t sizeToRemove=0;
+ uint64_t childToRemove=0;
+ for(const auto& n : folders)
+ {
+ Folder * folder=n.second;
+ if(f==folder)
+ {
+ sizeToRemove+=f->size();
+ childToRemove+=static_cast<const Folder *>(f)->children();
+ found=true;
+ break;
+ }
+ }
+ if(!found)
+ {
+ for (unsigned int i = 0; i < onlyFiles.size();)
+ {
+ if(onlyFiles.at(i)==f)
+ {
+ delete f;
+ sizeToRemove+=f->size();
+ childToRemove++;
+ break;
+ }
+ else
+ i++;
+ }
+ }
+ Folder *d = this;
+ while(d != nullptr) {
+ d->m_size -= sizeToRemove;
+ d->m_children-=childToRemove;
+ d=d->m_parent;
+ }
+}
diff --git a/plugins/Themes/Oxygen2/fileTree.h b/plugins/Themes/Oxygen2/fileTree.h
new file mode 100755
index 0000000..e0ea1c7
--- /dev/null
+++ b/plugins/Themes/Oxygen2/fileTree.h
@@ -0,0 +1,133 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+* Copyright 2017 Harald Sitter <sitter@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* 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/>.
+***********************************************************************/
+
+#ifndef FILETREE_H
+#define FILETREE_H
+
+#include <QByteArray> //qstrdup
+#include <QFile> //decodeName()
+#include <QLocale>
+#include <unordered_map>
+#include <string>
+
+#include <stdlib.h>
+#include "../../../interface/FacilityInterface.h"
+
+class Folder;
+
+class File
+{
+public:
+ friend class Folder;
+ static FacilityInterface *facilityEngine;
+
+public:
+ File(const std::string &name, uint64_t size) : m_parent(nullptr), m_name(name), m_size(size) {}
+ File(const std::string &name, uint64_t size, Folder * parent) : m_parent(parent), m_name(name), m_size(size) {}
+ virtual ~File() {
+ }
+
+ Folder *parent() const {
+ return m_parent;
+ }
+
+ /** Do not use for user visible strings. Use name instead. */
+ const std::string name() const {
+ return m_name;
+ }
+ void setName(const std::string &name) {
+ m_name=name;
+ }
+ /** Decoded name. Use when you need a QString. */
+ QString decodedName() const {
+ return QString::fromStdString(m_name);
+ }
+ /**
+ * Human readable name (including native separators where applicable).
+ * Only use for display.
+ */
+ QString displayName() const;
+
+ uint64_t size() const {
+ return m_size;
+ }
+
+ virtual bool isFolder() const {
+ return false;
+ }
+
+ /**
+ * Human readable path for display (including native separators where applicable.
+ * Only use for display.
+ */
+ QString displayPath(const Folder * = nullptr) const;
+ QString humanReadableSize() const {
+ return QString::fromStdString(facilityEngine->sizeToString(m_size));
+ }
+
+ /** Builds a complete QUrl by walking up to root. */
+ QUrl url(const Folder *root = nullptr) const;
+
+protected:
+ File(const char *name, uint64_t size, Folder *parent) : m_parent(parent), m_name(qstrdup(name)), m_size(size) {}
+
+ Folder *m_parent; //0 if this is treeRoot
+ std::string m_name;//speed boost with std::string in compare with char * due to string size defined without read all
+ uint64_t m_size; //in Bytes
+
+private:
+ File(const File&);
+ void operator=(const File&);
+};
+
+
+class Folder : public File
+{
+public:
+ Folder(const std::string &name) : File(name, 0), m_children(0) {} //DON'T pass the full path!
+
+ uint children() const {
+ return m_children;
+ }
+ bool isFolder() const override {
+ return true;
+ }
+
+ ///appends a Folder
+ void append(Folder *d, const std::string &name);
+ void append(Folder *d);
+ ///appends a File
+ void append(const std::string &name, uint64_t size);
+ /// removes a file
+ void remove(const File *f);
+ std::unordered_map<std::string,Folder *> folders;
+ std::vector<File *> onlyFiles;
+private:
+ void append(File *p);
+
+ uint m_children;
+private:
+ Folder(const Folder&); //undefined
+ void operator=(const Folder&); //undefined
+};
+
+#endif
diff --git a/plugins/Themes/Oxygen2/informations.xml b/plugins/Themes/Oxygen2/informations.xml
new file mode 100755
index 0000000..d4ada14
--- /dev/null
+++ b/plugins/Themes/Oxygen2/informations.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package>
+ <title xml:lang="en"><![CDATA[Oxygen2 style for Ultracopier]]></title><!-- english is required -->
+ <title xml:lang="fr"><![CDATA[Style oxygen2 pour Ultracopier]]></title>
+ <!-- What kind of plugin this is -->
+ <category>Themes</category>
+ <!-- Who wrote this plugin -->
+ <author><![CDATA[BRULE Herman, alpha_one_x86 (alpha_one_x86@first-world.info)]]></author>
+ <!-- URL of page or site for this plugin (may provide additional information, bug reports, feature requests). -->
+ <website xml:lang="en"><![CDATA[http://ultracopier.first-world.info/]]></website><!-- not required -->
+ <website xml:lang="fr"><![CDATA[http://ultracopier-fr.first-world.info/]]></website><!-- not required -->
+ <!-- the date-time format should be in timestamps format -->
+ <pubDate>1287496800</pubDate>
+ <!-- the architecture code of this plugin, found PlatformMacro.h into ultracopier source -->
+ <architecture>windows-x86</architecture>
+ <!-- Detailed description -->
+ <description xml:lang="en"><![CDATA[Oxygen2 style for Ultracopier]]></description>
+ <description xml:lang="fr"><![CDATA[Style oxygen2 pour Ultracopier]]></description>
+ <!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
+ <version>2.2.4.4</version>
+ <!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
+ <name>Oxygen2</name>
+ <!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
+ <dependencies><![CDATA[
+ ]]></dependencies>
+</package>
diff --git a/plugins/Themes/Oxygen2/interface.cpp b/plugins/Themes/Oxygen2/interface.cpp
new file mode 100755
index 0000000..13ec028
--- /dev/null
+++ b/plugins/Themes/Oxygen2/interface.cpp
@@ -0,0 +1,1995 @@
+/** \file interface.cpp
+\brief Define the interface core
+\author alpha_one_x86 */
+
+#include <QMessageBox>
+#include <QMimeData>
+#include <QScrollArea>
+#include <QColorDialog>
+#include <QRect>
+#include <QPainter>
+#include <QDebug>
+#include <cmath>
+#include <chrono>
+#include <ctime>
+#ifdef Q_OS_WIN32
+#include <windows.h>
+#endif
+
+#define ULTRACOPIERO2_MAXREMAININGTIMECOL 10
+#define ULTRACOPIERO2_MAXVALUESPEEDSTORED 5
+
+#include "interface.h"
+#include "ui_interface.h"
+#include "ThemesFactory.h"
+#include "ProgressBarDark.h"
+
+QIcon Themes::player_play;
+QIcon Themes::player_pause;
+QIcon Themes::tempExitIcon;
+QIcon Themes::editDelete;
+QIcon Themes::skinIcon;
+QIcon Themes::editFind;
+QIcon Themes::documentOpen;
+QIcon Themes::documentSave;
+QIcon Themes::listAdd;
+bool Themes::iconLoaded=false;
+
+Themes::Themes(const bool &alwaysOnTop,
+ const bool &showProgressionInTheTitle,
+ const QColor &progressColorWrite,
+ const QColor &progressColorRead,
+ const QColor &progressColorRemaining,
+ const bool &showDualProgression,
+ const quint8 &comboBox_copyEnd,
+ const bool &speedWithProgressBar,
+ const qint32 &currentSpeed,
+ const bool &checkBoxShowSpeed,
+ FacilityInterface * facilityEngine,
+ const bool &moreButtonPushed,
+ const bool &minimizeToSystray,
+ const bool &startMinimized,
+ const quint8 &position,
+ const bool &dark) :
+ duration(0),
+ durationStarted(false),
+ ui(new Ui::interfaceCopy()),
+ uiOptions(new Ui::themesOptions()),
+ currentFile(0),
+ totalFile(0),
+ currentSize(0),
+ totalSize(0),
+ getOldProgression(0),
+ sysTrayIcon(NULL),
+ menu(NULL),
+ action(Ultracopier::EngineActionInProgress::Idle),
+ currentSpeed(0),
+ storeIsInPause(false),
+ modeIsForced(false),
+ type(Ultracopier::CopyType::FileAndFolder),
+ mode(Ultracopier::CopyMode::Copy),
+ haveStarted(false),
+ haveError(false)
+ #ifdef Q_OS_WIN32
+ ,winTaskbarProgress(this)
+ #endif
+{
+ darkUi=dark;
+ this->facilityEngine=facilityEngine;
+ File::facilityEngine=facilityEngine;
+ ui->setupUi(this);
+ uiOptions->setupUi(ui->optionsTab);
+
+ m_havePause=false;
+ currentFile = 0;
+ totalFile = 0;
+ currentSize = 0;
+ totalSize = 0;
+ getOldProgression = 200;
+ haveError = false;
+ stat = status_never_started;
+ modeIsForced = false;
+ haveStarted = false;
+ storeIsInPause = false;
+ durationStarted = false;
+ if(startMinimized)
+ this->showMinimized();
+
+ this->progressColorWrite = progressColorWrite;
+ this->progressColorRead = progressColorRead;
+ this->progressColorRemaining= progressColorRemaining;
+ this->currentSpeed = currentSpeed;
+ uiOptions->showProgressionInTheTitle->setChecked(showProgressionInTheTitle);
+ uiOptions->speedWithProgressBar->setChecked(speedWithProgressBar);
+ uiOptions->showDualProgression->setChecked(showDualProgression);
+ uiOptions->startMinimized->setEnabled(false);
+ uiOptions->alwaysOnTop->setChecked(alwaysOnTop);
+ uiOptions->minimizeToSystray->setChecked(minimizeToSystray);
+ //uiOptions->setupUi(ui->tabWidget->widget(ui->tabWidget->count()-1));
+ uiOptions->labelStartWithMoreButtonPushed->setVisible(false);
+ uiOptions->checkBoxStartWithMoreButtonPushed->setVisible(false);
+ uiOptions->labelSavePosition->setVisible(false);
+ uiOptions->savePosition->setVisible(false);
+ uiOptions->savePosition->setCurrentIndex(position);
+ uiOptions->label_Slider_speed->setVisible(false);
+ uiOptions->SliderSpeed->setVisible(false);
+ uiOptions->label_SpeedMaxValue->setVisible(false);
+ uiOptions->comboBox_copyEnd->setCurrentIndex(comboBox_copyEnd);
+ ui->progressBar->setValue(0);
+ ui->progressBar_2->setValue(0);
+ ui->progressBar_3->setValue(0);
+ ui->progressBar_4->setValue(0);
+ ui->progressBar_5->setValue(0);
+ ui->progressBar_6->setValue(0);
+ speedWithProgressBar_toggled(speedWithProgressBar);
+ QPixmap pixmap(75,20);
+ pixmap.fill(progressColorWrite);
+ uiOptions->progressColorWrite->setIcon(pixmap);
+ pixmap.fill(progressColorRead);
+ uiOptions->progressColorRead->setIcon(pixmap);
+ pixmap.fill(progressColorRemaining);
+ uiOptions->progressColorRemaining->setIcon(pixmap);
+ ui->labelTimeRemaining->setText(QString());
+
+ transferModel.setFacilityEngine(facilityEngine);//need be before ui->TransferList->setModel(&transferModel); due to call of TransferModel::headerData()
+ ui->TransferList->setModel(&transferModel);
+ ui->tabWidget->setCurrentIndex(0);
+ uiOptions->toolBox->setCurrentIndex(0);
+ uiOptions->checkBoxShowSpeed->setChecked(checkBoxShowSpeed);
+ menu=new QMenu(this);
+ ui->add->setMenu(menu);
+
+ //connect the options
+ checkBoxShowSpeed_toggled(uiOptions->checkBoxShowSpeed->isChecked());
+ connect(uiOptions->checkBoxShowSpeed,&QCheckBox::stateChanged,this,&Themes::checkBoxShowSpeed_toggled);
+ connect(uiOptions->speedWithProgressBar,&QCheckBox::stateChanged,this,&Themes::speedWithProgressBar_toggled);
+ connect(uiOptions->showProgressionInTheTitle,&QCheckBox::stateChanged,this,&Themes::updateTitle);
+ connect(uiOptions->showDualProgression,&QCheckBox::stateChanged,this,&Themes::showDualProgression_toggled);
+ connect(uiOptions->progressColorWrite,&QAbstractButton::clicked,this,&Themes::progressColorWrite_clicked);
+ connect(uiOptions->progressColorRead, &QAbstractButton::clicked,this,&Themes::progressColorRead_clicked);
+ connect(uiOptions->progressColorRemaining,&QAbstractButton::clicked,this,&Themes::progressColorRemaining_clicked);
+ connect(uiOptions->alwaysOnTop,&QAbstractButton::clicked,this,&Themes::alwaysOnTop_clickedSlot);
+
+ connect(uiOptions->limitSpeed, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &Themes::uiUpdateSpeed);
+ connect(uiOptions->checkBox_limitSpeed,&QAbstractButton::toggled, this, &Themes::uiUpdateSpeed);
+
+ connect(ui->actionAddFile,&QAction::triggered,this,&Themes::forcedModeAddFile);
+ connect(ui->actionAddFileToCopy,&QAction::triggered,this,&Themes::forcedModeAddFileToCopy);
+ connect(ui->actionAddFileToMove,&QAction::triggered,this,&Themes::forcedModeAddFileToMove);
+ connect(ui->actionAddFolderToCopy,&QAction::triggered,this,&Themes::forcedModeAddFolderToCopy);
+ connect(ui->actionAddFolderToMove,&QAction::triggered,this,&Themes::forcedModeAddFolderToMove);
+ connect(ui->actionAddFolder,&QAction::triggered,this,&Themes::forcedModeAddFolder);
+ connect(ui->exportErrorToTransferList,&QToolButton::triggered,this,&Themes::exportErrorIntoTransferList);
+
+ ui->overall->hide();
+
+ //setup the search part
+ closeTheSearchBox();
+ TimerForSearch = new QTimer(this);
+ TimerForSearch->setInterval(500);
+ TimerForSearch->setSingleShot(true);
+ searchShortcut = new QShortcut(QKeySequence(QKeySequence::Find),this);
+ searchShortcut2 = new QShortcut(QKeySequence(QKeySequence::FindNext),this);
+ searchShortcut3 = new QShortcut(QKeySequence(Qt::Key_Escape),this);
+
+ //connect the search part
+ connect(TimerForSearch, &QTimer::timeout, this, &Themes::hilightTheSearchSlot);
+ connect(searchShortcut, &QShortcut::activated, this, &Themes::searchBoxShortcut);
+ connect(searchShortcut2, &QShortcut::activated, this, &Themes::on_pushButtonSearchNext_clicked);
+ connect(ui->pushButtonCloseSearch, &QPushButton::clicked, this, &Themes::closeTheSearchBox);
+ connect(searchShortcut3, &QShortcut::activated, this, &Themes::closeTheSearchBox);
+
+ //remaining time
+ {
+ int index=0;
+ while(index<ULTRACOPIERO2_MAXREMAININGTIMECOL)
+ {
+ RemainingTimeLogarithmicColumn newEntry;
+ remainingTimeLogarithmicValue.push_back(newEntry);
+ index++;
+ }
+ }
+
+ //reload directly untranslatable text
+ newLanguageLoaded();
+
+ //unpush the more button
+ ui->moreButton->setChecked(moreButtonPushed);
+ on_moreButton_toggled(moreButtonPushed);
+
+ /// \note important for drag and drop, \see dropEvent()
+ setAcceptDrops(true);
+
+ const QString themePath=":/Themes/Oxygen2/";
+
+ // try set the OS icon
+ if(!iconLoaded)
+ {
+ iconLoaded=true;
+ tempExitIcon=QIcon::fromTheme(QStringLiteral("application-exit"));
+ editDelete=QIcon::fromTheme(QStringLiteral("edit-delete"));
+ player_pause=QIcon::fromTheme(QStringLiteral("media-playback-pause"));
+ if(player_pause.isNull())
+ player_pause=QIcon(themePath+QStringLiteral("resources/player_pause.png"));
+ player_play=QIcon::fromTheme(QStringLiteral("media-playback-play"));
+ if(player_play.isNull())
+ player_play=QIcon(themePath+QStringLiteral("resources/player_play.png"));
+ skinIcon=QIcon::fromTheme(QStringLiteral("media-skip-forward"));
+ editFind=QIcon::fromTheme(QStringLiteral("edit-find"));
+ documentOpen=QIcon::fromTheme(QStringLiteral("document-open"));
+ documentSave=QIcon::fromTheme(QStringLiteral("document-save"));
+ listAdd=QIcon::fromTheme(QStringLiteral("list-add"));
+ }
+ if(!tempExitIcon.isNull())
+ {
+ ui->cancelButton->setIcon(tempExitIcon);
+ ui->pushButtonCloseSearch->setIcon(tempExitIcon);
+ ui->shutdown->setIcon(tempExitIcon);
+ }
+ if(!editDelete.isNull())
+ ui->del->setIcon(editDelete);
+ if(!player_pause.isNull())
+ ui->pauseButton->setIcon(player_pause);
+ if(!skinIcon.isNull())
+ ui->skipButton->setIcon(skinIcon);
+ if(!editFind.isNull())
+ ui->searchButton->setIcon(editFind);
+ if(!documentOpen.isNull())
+ ui->importTransferList->setIcon(documentOpen);
+ if(!documentSave.isNull())
+ {
+ ui->exportTransferList->setIcon(documentSave);
+ ui->exportErrorToTransferList->setIcon(documentSave);
+ }
+ if(!listAdd.isNull())
+ {
+ ui->add->setIcon(listAdd);
+ ui->actionAddFile->setIcon(listAdd);
+ ui->actionAddFileToCopy->setIcon(listAdd);
+ ui->actionAddFileToMove->setIcon(listAdd);
+ ui->actionAddFolder->setIcon(listAdd);
+ ui->actionAddFolderToCopy->setIcon(listAdd);
+ ui->actionAddFolderToMove->setIcon(listAdd);
+ }
+ #ifdef Q_OS_WIN32
+ pixmapTop=QPixmap(themePath+QStringLiteral("resources/SystemTrayIcon/systray_Uncaught_Windows.png"));
+ pixmapBottom=QPixmap(themePath+QStringLiteral("resources/SystemTrayIcon/systray_Caught_Windows.png"));
+ #else
+ pixmapTop=QPixmap(themePath+QStringLiteral("resources/SystemTrayIcon/systray_Uncaught_Unix.png"));
+ pixmapBottom=QPixmap(themePath+QStringLiteral("resources/SystemTrayIcon/systray_Caught_Unix.png"));
+ #endif
+
+ shutdown=facilityEngine->haveFunctionality("shutdown");
+ ui->shutdown->setVisible(shutdown);
+ radial=new RadialMap::Widget(dark,this);
+ ui->verticalLayouMiddle->addWidget(radial);
+
+ chartarea=new ChartArea::Widget(facilityEngine,this);
+ ui->verticalLayoutRight->insertWidget(0,chartarea);
+
+ selectionModel=ui->TransferList->selectionModel();
+
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ connect(&transferModel,&TransferModel::debugInformation,this,&Themes::debugInformation);
+ #endif
+
+ updateSpeed();
+ alwaysOnTop_clicked(false);
+ /*#ifdef Q_OS_WIN32
+ uiOptions->labelAlwaysOnTop->hide();
+ uiOptions->alwaysOnTop->hide();
+ #endif*/
+ QString ultimateUrl;
+ if(facilityEngine->isUltimate())
+ ui->ad_ultimate->hide();
+ else
+ {
+ ultimateUrl=QString::fromStdString(facilityEngine->ultimateUrl());
+ if(ultimateUrl.isEmpty())
+ ui->ad_ultimate->hide();
+ else
+ ui->ad_ultimate->setText(
+ QStringLiteral("<a href=\"%1\">%2</a>").arg(ultimateUrl).arg(tr("Buy the Ultimate version to fund development"))+", "
+ +QStringLiteral("Follow us: ")+QStringLiteral("<a href=\"%1\"><img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAAAe0lEQVR4AWOAAPesxQQRUBlCNZEIu+qIjSfPvvn45c/f//////17vLxrJrIsugan3i3HoUq/fPj46c27gwWts/FpsF1x5O2/f////z5+th0uiFNDyb3n/1HBx0+LAwsWUaIB00krj7wHqfx94HgbXJBUDaMaSE58JCdvAAioiiB5mraWAAAAAElFTkSuQmCC\"/></a>").arg("https://www.facebook.com/Ultracopier/")
+ );
+ }
+
+ sysTrayIcon = new QSystemTrayIcon(this);
+ connect(sysTrayIcon,&QSystemTrayIcon::activated,this,&Themes::catchAction);
+ #ifdef Q_OS_WIN32
+ winTaskbarProgress.show();
+ #endif
+
+ verticalLabel=new VerticalLabel();
+ verticalLabel->setText(QString::fromStdString(facilityEngine->speedToString(50*1000*1000)));
+ ui->verticalLayoutVL->insertWidget(0,verticalLabel);
+
+ if(darkUi)
+ {
+ if(ultimateUrl.isEmpty())
+ ui->ad_ultimate->hide();
+ else
+ ui->ad_ultimate->setText(
+ QStringLiteral("<a href=\"%1\"><span style=\"color:#cdf;\">%2</span></a>").arg(ultimateUrl).arg(tr("Buy the Ultimate version to fund development"))+", "
+ +QStringLiteral("<span style=\"color:#fff;\">Follow us:</span> ")+QStringLiteral("<a href=\"%1\"><img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAAAe0lEQVR4AWOAAPesxQQRUBlCNZEIu+qIjSfPvvn45c/f//////17vLxrJrIsugan3i3HoUq/fPj46c27gwWts/FpsF1x5O2/f////z5+th0uiFNDyb3n/1HBx0+LAwsWUaIB00krj7wHqfx94HgbXJBUDaMaSE58JCdvAAioiiB5mraWAAAAAElFTkSuQmCC\"/></a>").arg("https://www.facebook.com/Ultracopier/")
+ );
+ //ui->frame->setStyleSheet("#frame{background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgb(70, 70, 70), stop:1 rgb(40, 40, 40));}");
+ ui->labelTimeRemaining->setStyleSheet("color:#fff;");
+ ui->labelSPStart->setStyleSheet("color:#aaa;");
+ ui->labelSPStop->setStyleSheet("color:#aaa;");
+ ui->from_label->setStyleSheet("color:#aaa;");
+ ui->current_file->setStyleSheet("color:#fff;");
+ ui->from->setStyleSheet("color:#fff;");
+ verticalLabel->setColor(QColor(160,160,160));
+
+ //ui->ad_ultimate->setStyleSheet("color:#fff;background-color:rgb(50, 50, 50);");
+
+ QString labelTimeRemaining;
+ labelTimeRemaining+="<html><body style=\"white-space:nowrap;\"><small style=\"color:#aaa\">";
+ labelTimeRemaining+=QString::fromStdString(facilityEngine->translateText("Remaining:"));
+ labelTimeRemaining+="</small>";
+ labelTimeRemaining+=QStringLiteral(" <b>");
+ labelTimeRemaining+=QStringLiteral("&#8734;");
+ labelTimeRemaining+=QStringLiteral("</b></body></html>");
+ ui->labelTimeRemaining->setText(labelTimeRemaining);
+
+ ui->frameS->setStyleSheet("#frameS{border: 1px solid #b0c0f0;} QProgressBar{background-color: rgba(160,180,240,100);border: 0 solid grey; } QProgressBar::chunk {background-color: rgba(160,180,240,200);}");
+
+ int tempIndex=ui->verticalLayoutLeft->indexOf(ui->progressBar_all);
+ progressBar_all=new ProgressBarDark(ui->frameLeft);
+ progressBar_all->setMaximum(ui->progressBar_all->maximum());
+ progressBar_all->setValue(ui->progressBar_all->value());
+ ui->progressBar_all->hide();
+ ui->verticalLayoutLeft->insertWidget(tempIndex,progressBar_all);
+
+ tempIndex=ui->verticalLayoutRight->indexOf(ui->progressBar_file);
+ progressBar_file=new ProgressBarDark(ui->frameRight);
+ progressBar_file->setMaximum(ui->progressBar_file->maximum());
+ progressBar_file->setValue(ui->progressBar_file->value());
+ ui->progressBar_file->hide();
+ ui->verticalLayoutRight->insertWidget(tempIndex,progressBar_file);
+
+ tempIndex=ui->horizontalLayoutLeft->indexOf(ui->moreButton);
+ moreButton=new DarkButton(ui->frameLeft);
+ moreButton->setText(ui->moreButton->text());
+ moreButton->setCheckable(ui->moreButton->isCheckable());
+ moreButton->setMinimumWidth(60);
+ ui->moreButton->hide();
+ ui->horizontalLayoutLeft->insertWidget(tempIndex,moreButton);
+ {
+ QIcon i;
+ i.addFile(QString::fromUtf8(":/Themes/Oxygen/resources/darkmoveUp.png"), QSize(), QIcon::Normal, QIcon::Off);
+ i.addFile(QString::fromUtf8(":/Themes/Oxygen/resources/darkmoveDown.png"), QSize(), QIcon::Normal, QIcon::On);
+ moreButton->setIcon(i);
+ }
+ connect(moreButton,&QPushButton::toggled,ui->moreButton,&QPushButton::toggled);
+
+ tempIndex=ui->horizontalLayoutLeft->indexOf(ui->pauseButton);
+ pauseButton=new DarkButton(ui->frameLeft);
+ pauseButton->setText(ui->pauseButton->text());
+ pauseButton->setCheckable(ui->pauseButton->isCheckable());
+ pauseButton->setMinimumWidth(60);
+ ui->pauseButton->hide();
+ ui->horizontalLayoutLeft->insertWidget(tempIndex,pauseButton);
+ {
+ QIcon i;
+ i.addFile(QString::fromUtf8(":/Themes/Oxygen/resources/darkplayer_pause.png"), QSize(), QIcon::Normal, QIcon::Off);
+ i.addFile(QString::fromUtf8(":/Themes/Oxygen/resources/darkplayer_play.png"), QSize(), QIcon::Normal, QIcon::On);
+ pauseButton->setIcon(i);
+ }
+ connect(pauseButton,&QPushButton::toggled,ui->pauseButton,&QPushButton::toggled);
+ connect(pauseButton,&QPushButton::clicked,ui->pauseButton,&QPushButton::clicked);
+
+ tempIndex=ui->horizontalLayoutRight->indexOf(ui->skipButton);
+ skipButton=new DarkButton(ui->frameLeft);
+ skipButton->setText(ui->skipButton->text());
+ skipButton->setCheckable(ui->skipButton->isCheckable());
+ skipButton->setMinimumWidth(60);
+ ui->skipButton->hide();
+ ui->horizontalLayoutRight->insertWidget(tempIndex,skipButton);
+ {
+ QIcon i;
+ i.addFile(QString::fromUtf8(":/Themes/Oxygen/resources/darkplayer_end.png"));
+ skipButton->setIcon(i);
+ }
+ connect(skipButton,&QPushButton::toggled,ui->skipButton,&QPushButton::toggled);
+ connect(skipButton,&QPushButton::clicked,ui->skipButton,&QPushButton::clicked);
+
+ tempIndex=ui->horizontalLayoutRight->indexOf(ui->cancelButton);
+ cancelButton=new DarkButton(ui->frameLeft);
+ cancelButton->setText(ui->cancelButton->text());
+ cancelButton->setCheckable(ui->cancelButton->isCheckable());
+ cancelButton->setMinimumWidth(60);
+ ui->cancelButton->hide();
+ ui->horizontalLayoutRight->insertWidget(tempIndex,cancelButton);
+ {
+ QIcon i;
+ i.addFile(QString::fromUtf8(":/Themes/Oxygen/resources/cancelDarkE.png"));
+ cancelButton->setIcon(i);
+ }
+ connect(cancelButton,&QPushButton::toggled,ui->cancelButton,&QPushButton::toggled);
+ connect(cancelButton,&QPushButton::clicked,ui->cancelButton,&QPushButton::clicked);
+
+ #if defined(__EMSCRIPTEN__) && defined(ULTRACOPIER_LITTLE_RANDOM)
+ cancelButton->setEnabled(false);
+ #endif
+ }
+ else
+ {
+ progressBar_all=nullptr;
+ progressBar_file=nullptr;
+
+ moreButton=nullptr;
+ pauseButton=nullptr;
+ skipButton=nullptr;
+ cancelButton=nullptr;
+ #if defined(__EMSCRIPTEN__) && defined(ULTRACOPIER_LITTLE_RANDOM)
+ ui->cancelButton->setEnabled(false);
+ #endif
+ }
+ isInPause(false);
+ showDualProgression_toggled(showDualProgression);
+
+ show();
+}
+
+Themes::~Themes()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ //disconnect(ui->actionAddFile);
+ //disconnect(ui->actionAddFolder);
+ if(progressBar_all!=nullptr)
+ delete progressBar_all;
+ if(progressBar_file!=nullptr)
+ delete progressBar_file;
+ if(moreButton!=nullptr)
+ delete moreButton;
+ if(pauseButton!=nullptr)
+ delete pauseButton;
+ if(skipButton!=nullptr)
+ delete skipButton;
+ if(cancelButton!=nullptr)
+ delete cancelButton;
+ delete radial;
+ delete selectionModel;
+ delete menu;
+ delete sysTrayIcon;
+}
+
+QWidget * Themes::getOptionsEngineWidget()
+{
+ return &optionEngineWidget;
+}
+
+void Themes::getOptionsEngineEnabled(const bool &isEnabled)
+{
+ if(isEnabled)
+ {
+ QScrollArea *scrollArea=new QScrollArea(ui->tabWidget);
+ scrollArea->setWidgetResizable(true);
+ scrollArea->setWidget(&optionEngineWidget);
+ ui->tabWidget->addTab(scrollArea,QString::fromStdString(facilityEngine->translateText("Copy engine")));
+ }
+}
+
+void Themes::closeEvent(QCloseEvent *event)
+{
+ event->ignore();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ this->hide();
+ if(uiOptions->minimizeToSystray->isChecked())
+ {
+ updateSysTrayIcon();
+ sysTrayIcon->show();
+ }
+ else
+ emit cancel();
+}
+
+void Themes::updateSysTrayIcon()
+{
+ if(totalSize==0)
+ {
+ sysTrayIcon->setIcon(dynaIcon(0,"-"));
+ return;
+ }
+ quint64 currentNew=currentSize*100;
+ //update systray icon
+ quint16 getVarProgression=currentNew/totalSize;
+ if(getOldProgression!=getVarProgression)
+ {
+ getOldProgression=getVarProgression;
+ sysTrayIcon->setIcon(dynaIcon(getVarProgression));
+ }
+}
+
+void Themes::updateOverallInformation()
+{
+ if(uiOptions->showProgressionInTheTitle->isChecked())
+ updateTitle();
+ ui->overall->setText(tr("File %1/%2, size: %3/%4")
+ .arg(currentFile)
+ .arg(totalFile)
+ .arg(QString::fromStdString(facilityEngine->sizeToString(currentSize)))
+ .arg(QString::fromStdString(facilityEngine->sizeToString(totalSize)))
+ );
+}
+
+void Themes::actionInProgess(const Ultracopier::EngineActionInProgress &action)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"start: "+std::to_string(action));
+ this->action=action;
+ switch(action)
+ {
+ case Ultracopier::Copying:
+ case Ultracopier::CopyingAndListing:
+ if(darkUi)
+ {
+ progressBar_all->setMaximum(65535);
+ progressBar_all->setMinimum(0);
+ }
+ else
+ {
+ ui->progressBar_all->setMaximum(65535);
+ ui->progressBar_all->setMinimum(0);
+ }
+ #ifdef Q_OS_WIN32
+ winTaskbarProgress.setMaximum(65535);
+ winTaskbarProgress.setMinimum(0);
+ #endif
+ break;
+ case Ultracopier::Listing:
+ if(darkUi)
+ {
+ progressBar_all->setMaximum(0);
+ progressBar_all->setMinimum(0);
+ }
+ else
+ {
+ ui->progressBar_all->setMaximum(0);
+ ui->progressBar_all->setMinimum(0);
+ }
+ #ifdef Q_OS_WIN32
+ winTaskbarProgress.setMaximum(0);
+ winTaskbarProgress.setMinimum(0);
+ #endif
+ break;
+ case Ultracopier::Idle:
+ #ifdef Q_OS_WIN32
+ winTaskbarProgress.setMaximum(65535);
+ winTaskbarProgress.setMinimum(0);
+ #endif
+ if(darkUi)
+ {
+ progressBar_all->setMaximum(65535);
+ progressBar_all->setMinimum(0);
+ }
+ else
+ {
+ ui->progressBar_all->setMaximum(65535);
+ ui->progressBar_all->setMinimum(0);
+ }
+ if(haveStarted && transferModel.rowCount()<=0)
+ {
+ if(shutdown && ui->shutdown->isChecked())
+ {
+ facilityEngine->callFunctionality("shutdown");
+ return;
+ }
+ switch(uiOptions->comboBox_copyEnd->currentIndex())
+ {
+ case 2:
+ emit cancel();
+ break;
+ case 0:
+ if(!haveError)
+ emit cancel();
+ else
+ ui->tabWidget->setCurrentWidget(ui->tab_error);
+ break;
+ default:
+ break;
+ }
+ stat = status_stopped;
+ if(durationStarted)
+ {
+ Ultracopier::TimeDecomposition time=facilityEngine->secondsToTimeDecomposition(
+ (std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count()-
+ duration)
+ /1000);
+ ui->labelTimeRemaining->setText(QStringLiteral("<html><body style=\"white-space:nowrap;\">")+
+ QString::fromStdString(facilityEngine->translateText("Completed in %1")).arg(
+ QString::number(time.hour)+QStringLiteral(":")+
+ QString::number(time.minute).rightJustified(2,'0')+
+ QStringLiteral(":")+
+ QString::number(time.second).rightJustified(2,'0')
+ )+QStringLiteral("</body></html>"));
+ }
+ }
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"Very wrong switch case!");
+ break;
+ }
+ switch(action)
+ {
+ case Ultracopier::Copying:
+ case Ultracopier::CopyingAndListing:
+ if(m_havePause)
+ ui->pauseButton->setEnabled(true);
+ if(!durationStarted)
+ {
+ duration=std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()).count();
+ durationStarted=true;
+ }
+ haveStarted=true;
+ ui->cancelButton->setText(QString::fromStdString(facilityEngine->translateText("Quit")));
+ updatePause();
+ break;
+ case Ultracopier::Listing:
+ if(m_havePause)
+ ui->pauseButton->setEnabled(false);
+ haveStarted=true;//to close if skip at root folder collision
+ break;
+ case Ultracopier::Idle:
+ if(m_havePause)
+ ui->pauseButton->setEnabled(false);
+ break;
+ default:
+ break;
+ }
+}
+
+void Themes::newFolderListing(const std::string &path)
+{
+ QString newPath=QString::fromStdString(path);
+ if(newPath.size()>(64+3))
+ newPath=newPath.mid(0,32)+QStringLiteral("...")+newPath.mid(newPath.size()-32,32);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ if(action==Ultracopier::Listing)
+ ui->from->setText(newPath);
+}
+
+void Themes::detectedSpeed(const uint64_t &speed)//in byte per seconds
+{
+ /*if(uiOptions->speedWithProgressBar->isChecked())
+ {
+ quint64 tempSpeed=speed;
+ if(tempSpeed>999999999)
+ tempSpeed=999999999;
+ if(tempSpeed>(quint64)ui->progressBarCurrentSpeed->maximum())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"set max speed to: "+std::to_string(tempSpeed));
+ ui->progressBarCurrentSpeed->setMaximum(tempSpeed);
+ }
+ ui->progressBarCurrentSpeed->setValue(tempSpeed);
+ ui->progressBarCurrentSpeed->setFormat(QString::fromStdString(facilityEngine->speedToString(speed)));
+ }
+ else
+ ui->currentSpeed->setText(QString::fromStdString(facilityEngine->speedToString(speed)));*/
+ chartarea->addValue(speed);
+}
+
+void Themes::remainingTime(const int &remainingSeconds)
+{
+ QString labelTimeRemaining;
+ if(darkUi)
+ labelTimeRemaining+="<html><body style=\"white-space:nowrap;\"><small style=\"color:#aaa\">";
+ else
+ labelTimeRemaining+="<html><body style=\"white-space:nowrap;\">";
+ labelTimeRemaining+=QString::fromStdString(facilityEngine->translateText("Remaining:"));
+ if(darkUi)
+ labelTimeRemaining+="</small>";
+ labelTimeRemaining+=QStringLiteral(" <b>");
+ if(remainingSeconds==-1)
+ labelTimeRemaining+=QStringLiteral("&#8734;");
+ else
+ {
+ Ultracopier::TimeDecomposition time=facilityEngine->secondsToTimeDecomposition(remainingSeconds);
+ labelTimeRemaining+=QString::number(time.hour)+QStringLiteral(":")+QString::number(time.minute).rightJustified(2,'0')+QStringLiteral(":")+QString::number(time.second).rightJustified(2,'0');
+ }
+ labelTimeRemaining+=QStringLiteral("</b></body></html>");
+ ui->labelTimeRemaining->setText(labelTimeRemaining);
+}
+
+void Themes::errorDetected()
+{
+ haveError=true;
+}
+
+/// \brief new error
+void Themes::errorToRetry(const std::string &source,const std::string &destination,const std::string &error)
+{
+ ui->errorList->addTopLevelItem(new QTreeWidgetItem(QStringList()
+ << QString::fromStdString(source)
+ << QString::fromStdString(destination)
+ << QString::fromStdString(error)
+ ));
+}
+
+/** \brief support speed limitation */
+void Themes::setSupportSpeedLimitation(const bool &supportSpeedLimitationBool)
+{
+ if(!supportSpeedLimitationBool)
+ {
+ ui->label_Slider_speed->setVisible(false);
+ ui->SliderSpeed->setVisible(false);
+ ui->label_SpeedMaxValue->setVisible(false);
+ uiOptions->labelShowSpeedAsMain->setVisible(false);
+ uiOptions->checkBoxShowSpeed->setVisible(false);
+ }
+ else
+ emit newSpeedLimitation(currentSpeed);
+}
+
+//get information about the copy
+void Themes::setGeneralProgression(const uint64_t &current,const uint64_t &total)
+{
+ currentSize=current;
+ totalSize=total;
+ if(total>0)
+ {
+ int newIndicator=((double)current/total)*65535;
+ if(darkUi)
+ progressBar_all->setValue(newIndicator);
+ else
+ ui->progressBar_all->setValue(newIndicator);
+ #ifdef Q_OS_WIN32
+ winTaskbarProgress.setValue(newIndicator);
+ #endif
+ }
+ else
+ {
+ if(darkUi)
+ progressBar_all->setValue(0);
+ else
+ ui->progressBar_all->setValue(0);
+ #ifdef Q_OS_WIN32
+ winTaskbarProgress.setValue(0);
+ #endif
+ }
+ if(current>0)
+ stat = status_started;
+ updateOverallInformation();
+ if(isHidden())
+ updateSysTrayIcon();
+}
+
+void Themes::setFileProgression(const std::vector<Ultracopier::ProgressionItem> &progressionList)
+{
+ std::vector<Ultracopier::ProgressionItem> progressionListBis=progressionList;
+ transferModel.setFileProgression(progressionListBis);
+ updateCurrentFileInformation();
+}
+
+//edit the transfer list
+/// \todo check and re-enable to selection
+void Themes::getActionOnList(const std::vector<Ultracopier::ReturnActionOnCopyList> &returnActions)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, returnActions.size(): "+std::to_string(returnActions.size()));
+ if(transferModel.tree==NULL)
+ transferModel.tree=new Folder(std::string());
+ std::vector<uint64_t> returnValue=transferModel.synchronizeItems(returnActions);
+ totalFile+=returnValue.front();
+ totalSize+=returnValue.at(1);
+ currentFile+=returnValue.back();
+ if(transferModel.rowCount()==0)
+ {
+ ui->skipButton->setEnabled(false);
+ if(darkUi)
+ {
+ progressBar_all->setValue(65535);
+ progressBar_file->setValue(65535);
+ }
+ else
+ {
+ ui->progressBar_all->setValue(65535);
+ ui->progressBar_file->setValue(65535);
+ }
+ #ifdef Q_OS_WIN32
+ winTaskbarProgress.setValue(65535);
+ #endif
+ currentSize=totalSize;
+ if(isHidden())
+ updateSysTrayIcon();
+ }
+ else
+ ui->skipButton->setEnabled(true);
+ updateOverallInformation();
+ radial->invalidate();
+ radial->create(transferModel.tree);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"transferModel.rowCount(): "+std::to_string(transferModel.rowCount()));
+}
+
+void Themes::setCopyType(const Ultracopier::CopyType &type)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ this->type=type;
+ updateModeAndType();
+}
+
+void Themes::forceCopyMode(const Ultracopier::CopyMode &mode)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ modeIsForced=true;
+ this->mode=mode;
+ if(mode==Ultracopier::Copy)
+ ui->tabWidget->setTabText(0,tr("Copy list"));
+ else
+ ui->tabWidget->setTabText(0,tr("Move list"));
+ updateModeAndType();
+ updateTitle();
+}
+
+void Themes::setTransferListOperation(const Ultracopier::TransferListOperation &transferListOperation)
+{
+ ui->exportTransferList->setVisible(transferListOperation & Ultracopier::TransferListOperation_Export);
+ ui->importTransferList->setVisible(transferListOperation & Ultracopier::TransferListOperation_Import);
+}
+
+void Themes::haveExternalOrder()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+// ui->moreButton->toggle();
+}
+
+void Themes::isInPause(const bool &isInPause)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"isInPause: "+std::to_string(isInPause));
+ //resume in auto the pause
+ storeIsInPause=isInPause;
+ updatePause();
+}
+
+/// \brief set have pause
+void Themes::havePause(const bool &havePause)
+{
+ if(darkUi)
+ pauseButton->setEnabled(havePause);
+ else
+ ui->pauseButton->setEnabled(havePause);
+ m_havePause=havePause;
+}
+
+void Themes::updatePause()
+{
+ QPushButton *tempPauseButton=ui->pauseButton;
+ if(darkUi)
+ tempPauseButton=pauseButton;
+ if(storeIsInPause)
+ {
+ if(!darkUi)
+ ui->pauseButton->setIcon(player_play);
+ if(stat == status_started)
+ tempPauseButton->setText(QString::fromStdString(facilityEngine->translateText("Resume")));
+ else
+ tempPauseButton->setText(QString::fromStdString(facilityEngine->translateText("Start")));
+ }
+ else
+ {
+ if(!darkUi)
+ tempPauseButton->setIcon(player_pause);
+ tempPauseButton->setText(QString::fromStdString(facilityEngine->translateText("Pause")));
+ }
+}
+
+void Themes::updateCurrentFileInformation()
+{
+ TransferModel::currentTransfertItem transfertItem=transferModel.getCurrentTransfertItem();
+ if(transfertItem.haveItem)
+ {
+ std::string from=transfertItem.from;
+ std::string::size_type pos=from.rfind('/');
+ if(pos == std::string::npos)
+ {
+ #ifdef Q_OS_WIN32
+ std::string::size_type pos=from.rfind('\\');
+ if(pos != std::string::npos)
+ if(pos < from.size()-1)
+ from=from.substr(0,pos);
+ #endif
+ }
+ else if(pos < from.size()-1)
+ {
+ #ifdef Q_OS_WIN32
+ std::string::size_type pos2=from.rfind('\\');
+ if(pos2 != std::string::npos)
+ {
+ std::string::size_type pos=from.rfind('\\');
+ if(pos != std::string::npos)
+ {
+ if(pos2 < from.size()-1)
+ {
+ if(pos<pos2)
+ from=from.substr(0,pos2);
+ else
+ from=from.substr(0,pos);
+ }
+ }
+ else
+ from=from.substr(0,pos);
+ }
+ else
+ #endif
+ from=from.substr(0,pos);
+ }
+ QString newPath=QString::fromStdString(from);
+ if(newPath.size()>(64+3))
+ newPath=newPath.mid(0,32)+QStringLiteral("...")+newPath.mid(newPath.size()-32,32);
+ ui->from->setText(newPath);
+ newPath=QString::fromStdString(transfertItem.to);
+ if(newPath.size()>(64+3))
+ newPath=newPath.mid(0,32)+QStringLiteral("...")+newPath.mid(newPath.size()-32,32);
+ //ui->to->setText(newPath);
+ ui->current_file->setText(QString::fromStdString(transfertItem.current_file));
+ if(transfertItem.progressBar_read!=-1)
+ {
+ if(darkUi)
+ progressBar_file->setRange(0,65535);
+ else
+ ui->progressBar_file->setRange(0,65535);
+ if(uiOptions->showDualProgression->isChecked())
+ {
+ if(!darkUi)
+ {
+ if(transfertItem.progressBar_read!=transfertItem.progressBar_write)
+ {
+ float permilleread=round((float)transfertItem.progressBar_read/65535*1000)/1000;
+ float permillewrite=permilleread-0.001;
+ ui->progressBar_file->setStyleSheet(QStringLiteral("QProgressBar{border: 1px solid grey;text-align: center;background-color: qlineargradient(spread:pad, x1:%1, y1:0, x2:%2, y2:0, stop:0 %3, stop:1 %4);}QProgressBar::chunk{background-color:%5;}")
+ .arg(permilleread)
+ .arg(permillewrite)
+ .arg(progressColorRemaining.name())
+ .arg(progressColorRead.name())
+ .arg(progressColorWrite.name())
+ );
+ }
+ else
+ ui->progressBar_file->setStyleSheet(QStringLiteral("QProgressBar{border:1px solid grey;text-align:center;background-color:%1;}QProgressBar::chunk{background-color:%2;}")
+ .arg(progressColorRemaining.name())
+ .arg(progressColorWrite.name())
+ );
+ }
+ if(darkUi)
+ progressBar_file->setValue(transfertItem.progressBar_write);
+ else
+ ui->progressBar_file->setValue(transfertItem.progressBar_write);
+ }
+ else
+ {
+ if(darkUi)
+ progressBar_file->setValue((transfertItem.progressBar_read+transfertItem.progressBar_write)/2);
+ else
+ ui->progressBar_file->setValue((transfertItem.progressBar_read+transfertItem.progressBar_write)/2);
+ }
+ }
+ else
+ {
+ if(darkUi)
+ progressBar_file->setRange(0,0);
+ else
+ ui->progressBar_file->setRange(0,0);
+ }
+ }
+ else
+ {
+ ui->from->setText(QStringLiteral(""));
+ //ui->to->setText(QStringLiteral(""));
+ ui->current_file->setText(QStringLiteral("-"));
+ if(haveStarted && transferModel.rowCount()==0)
+ {
+ if(darkUi)
+ progressBar_file->setValue(65535);
+ else
+ ui->progressBar_file->setValue(65535);
+ }
+ else if(!haveStarted)
+ {
+ if(darkUi)
+ progressBar_file->setValue(0);
+ else
+ ui->progressBar_file->setValue(0);
+ }
+ }
+}
+
+
+void Themes::on_putOnTop_clicked()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ selectedItems=selectionModel->selectedRows();
+ std::vector<uint64_t> ids;
+ int index=0;
+ const int &loop_size=selectedItems.size();
+ while(index<loop_size)
+ {
+ ids.push_back(transferModel.data(selectedItems.at(index),Qt::UserRole).toULongLong());
+ index++;
+ }
+ if(ids.size()>0)
+ emit moveItemsOnTop(ids);
+}
+
+void Themes::on_pushUp_clicked()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ selectedItems=selectionModel->selectedRows();
+ std::vector<uint64_t> ids;
+ int index=0;
+ const int &loop_size=selectedItems.size();
+ while(index<loop_size)
+ {
+ ids.push_back(transferModel.data(selectedItems.at(index),Qt::UserRole).toULongLong());
+ index++;
+ }
+ if(ids.size()>0)
+ emit moveItemsUp(ids);
+}
+
+void Themes::on_pushDown_clicked()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ selectedItems=selectionModel->selectedRows();
+ std::vector<uint64_t> ids;
+ int index=0;
+ const int &loop_size=selectedItems.size();
+ while(index<loop_size)
+ {
+ ids.push_back(transferModel.data(selectedItems.at(index),Qt::UserRole).toULongLong());
+ index++;
+ }
+ if(ids.size()>0)
+ emit moveItemsDown(ids);
+}
+
+void Themes::on_putOnBottom_clicked()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ selectedItems=selectionModel->selectedRows();
+ std::vector<uint64_t> ids;
+ int index=0;
+ const int &loop_size=selectedItems.size();
+ while(index<loop_size)
+ {
+ ids.push_back(transferModel.data(selectedItems.at(index),Qt::UserRole).toULongLong());
+ index++;
+ }
+ if(ids.size()>0)
+ emit moveItemsOnBottom(ids);
+}
+
+void Themes::on_del_clicked()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ selectedItems=selectionModel->selectedRows();
+ std::vector<uint64_t> ids;
+ int index=0;
+ const int &loop_size=selectedItems.size();
+ while(index<loop_size)
+ {
+ ids.push_back(transferModel.data(selectedItems.at(index),Qt::UserRole).toULongLong());
+ index++;
+ }
+ if(ids.size()>0)
+ emit removeItems(ids);
+}
+
+void Themes::on_cancelButton_clicked()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ this->hide();
+ emit cancel();
+}
+
+
+void Themes::speedWithProgressBar_toggled(bool checked)
+{
+ (void)checked;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ /*ui->progressBarCurrentSpeed->setVisible(checked);
+ ui->currentSpeed->setVisible(!checked);*/
+}
+
+void Themes::showDualProgression_toggled(bool checked)
+{
+ Q_UNUSED(checked);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ updateProgressionColorBar();
+}
+
+void Themes::checkBoxShowSpeed_toggled(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ Q_UNUSED(checked);
+ updateSpeed();
+}
+
+void Themes::on_SliderSpeed_valueChanged(int value)
+{
+ if(!uiOptions->checkBoxShowSpeed->isChecked())
+ return;
+ switch(value)
+ {
+ case 0:
+ currentSpeed=0;
+ break;
+ case 1:
+ currentSpeed=1024;
+ break;
+ case 2:
+ currentSpeed=1024*4;
+ break;
+ case 3:
+ currentSpeed=1024*16;
+ break;
+ case 4:
+ currentSpeed=1024*64;
+ break;
+ case 5:
+ currentSpeed=1024*128;
+ break;
+ }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"value: "+std::to_string(value));
+ emit newSpeedLimitation(currentSpeed);
+ updateSpeed();
+}
+
+void Themes::uiUpdateSpeed()
+{
+ if(uiOptions->checkBoxShowSpeed->isChecked())
+ return;
+ if(!uiOptions->checkBox_limitSpeed->isChecked())
+ currentSpeed=0;
+ else
+ currentSpeed=uiOptions->limitSpeed->value();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit newSpeedLimitation"+std::to_string(currentSpeed));
+ emit newSpeedLimitation(currentSpeed);
+}
+
+void Themes::updateSpeed()
+{
+ ui->label_Slider_speed->setVisible(uiOptions->checkBoxShowSpeed->isChecked());
+ ui->SliderSpeed->setVisible(uiOptions->checkBoxShowSpeed->isChecked());
+ ui->label_SpeedMaxValue->setVisible(uiOptions->checkBoxShowSpeed->isChecked());
+ uiOptions->limitSpeed->setVisible(!uiOptions->checkBoxShowSpeed->isChecked());
+ uiOptions->checkBox_limitSpeed->setVisible(!uiOptions->checkBoxShowSpeed->isChecked());
+
+ if(uiOptions->checkBoxShowSpeed->isChecked())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"checked, currentSpeed: "+std::to_string(currentSpeed));
+ uiOptions->limitSpeed->setEnabled(false);
+ if(currentSpeed==0)
+ {
+ ui->SliderSpeed->setValue(0);
+ ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->translateText("Unlimited")));
+ }
+ else if(currentSpeed<=1024)
+ {
+ if(currentSpeed!=1024)
+ {
+ currentSpeed=1024;
+ emit newSpeedLimitation(currentSpeed);
+ }
+ ui->SliderSpeed->setValue(1);
+ ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*1)));
+ }
+ else if(currentSpeed<=1024*4)
+ {
+ if(currentSpeed!=1024*4)
+ {
+ currentSpeed=1024*4;
+ emit newSpeedLimitation(currentSpeed);
+ }
+ ui->SliderSpeed->setValue(2);
+ ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*4)));
+ }
+ else if(currentSpeed<=1024*16)
+ {
+ if(currentSpeed!=1024*16)
+ {
+ currentSpeed=1024*16;
+ emit newSpeedLimitation(currentSpeed);
+ }
+ ui->SliderSpeed->setValue(3);
+ ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*16)));
+ }
+ else if(currentSpeed<=1024*64)
+ {
+ if(currentSpeed!=1024*64)
+ {
+ currentSpeed=1024*64;
+ emit newSpeedLimitation(currentSpeed);
+ }
+ ui->SliderSpeed->setValue(4);
+ ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*64)));
+ }
+ else
+ {
+ if(currentSpeed!=1024*128)
+ {
+ currentSpeed=1024*128;
+ emit newSpeedLimitation(currentSpeed);
+ }
+ ui->SliderSpeed->setValue(5);
+ ui->label_SpeedMaxValue->setText(QString::fromStdString(facilityEngine->speedToString((double)(1024*1024)*128)));
+ }
+ }
+ else
+ {
+ uiOptions->checkBox_limitSpeed->setChecked(currentSpeed>0);
+ if(currentSpeed>0)
+ uiOptions->limitSpeed->setValue(currentSpeed);
+ uiOptions->checkBox_limitSpeed->setEnabled(currentSpeed!=-1);
+ uiOptions->limitSpeed->setEnabled(uiOptions->checkBox_limitSpeed->isChecked());
+ }
+}
+
+void Themes::on_pauseButton_clicked()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ if(storeIsInPause)
+ emit resume();
+ else
+ emit pause();
+}
+
+void Themes::on_skipButton_clicked()
+{
+ TransferModel::currentTransfertItem transfertItem=transferModel.getCurrentTransfertItem();
+ if(transfertItem.haveItem)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"skip at running: "+std::to_string(transfertItem.id));
+ emit skip(transfertItem.id);
+ }
+ else
+ {
+ if(transferModel.rowCount()>1)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"skip at idle: "+std::to_string(transferModel.firstId()));
+ emit skip(transferModel.firstId());
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to skip the transfer, because no transfer running");
+ }
+}
+
+void Themes::updateModeAndType()
+{
+ menu->clear();
+ if(modeIsForced)
+ {
+ menu->addAction(ui->actionAddFile);
+ if(type==Ultracopier::FileAndFolder)
+ menu->addAction(ui->actionAddFolder);
+ }
+ else
+ {
+ menu->addAction(ui->actionAddFileToCopy);
+ menu->addAction(ui->actionAddFileToMove);
+ if(type==Ultracopier::FileAndFolder)
+ {
+ menu->addAction(ui->actionAddFolderToCopy);
+ menu->addAction(ui->actionAddFolderToMove);
+ }
+ }
+}
+
+void Themes::forcedModeAddFile()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit userAddFile(mode);
+}
+
+void Themes::forcedModeAddFolder()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit userAddFolder(mode);
+}
+
+void Themes::forcedModeAddFileToCopy()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit userAddFile(Ultracopier::Copy);
+}
+
+void Themes::forcedModeAddFolderToCopy()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit userAddFolder(Ultracopier::Copy);
+}
+
+void Themes::forcedModeAddFileToMove()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit userAddFile(Ultracopier::Move);
+}
+
+void Themes::forcedModeAddFolderToMove()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit userAddFolder(Ultracopier::Move);
+}
+
+void Themes::newLanguageLoaded()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ if(modeIsForced)
+ forceCopyMode(mode);
+ ui->retranslateUi(this);
+ uiOptions->retranslateUi(this);
+ uiOptions->comboBox_copyEnd->setItemText(0,tr("Don't close if errors are found"));
+ uiOptions->comboBox_copyEnd->setItemText(1,tr("Never close"));
+ uiOptions->comboBox_copyEnd->setItemText(2,tr("Always close"));
+ if(!haveStarted)
+ ui->current_file->setText(tr("File Name, 0KB"));
+ else
+ updateCurrentFileInformation();
+ updateOverallInformation();
+ updateSpeed();
+ if(ui->tabWidget->count()>=4)
+ ui->tabWidget->setTabText(ui->tabWidget->count()-1,
+ QString::fromStdString(facilityEngine->translateText("Copy engine")));
+ on_moreButton_toggled(ui->moreButton->isChecked());
+}
+
+void Themes::on_pushButtonCloseSearch_clicked()
+{
+ closeTheSearchBox();
+}
+
+//close the search box
+void Themes::closeTheSearchBox()
+{
+ currentIndexSearch = -1;
+ ui->lineEditSearch->clear();
+ ui->lineEditSearch->hide();
+ ui->pushButtonSearchPrev->hide();
+ ui->pushButtonSearchNext->hide();
+ ui->pushButtonCloseSearch->hide();
+ ui->searchButton->setChecked(false);
+ hilightTheSearch();
+}
+
+//search box shortcut
+void Themes::searchBoxShortcut()
+{
+/* if(ui->lineEditSearch->isHidden())
+ {*/
+ ui->lineEditSearch->show();
+ ui->pushButtonSearchPrev->show();
+ ui->pushButtonSearchNext->show();
+ ui->pushButtonCloseSearch->show();
+ ui->lineEditSearch->setFocus(Qt::ShortcutFocusReason);
+ ui->searchButton->setChecked(true);
+/* }
+ else
+ closeTheSearchBox();*/
+}
+
+//hilight the search
+void Themes::hilightTheSearch(bool searchNext)
+{
+ int result=transferModel.search(ui->lineEditSearch->text().toStdString(),searchNext);
+ if(ui->lineEditSearch->text().isEmpty())
+ ui->lineEditSearch->setStyleSheet("");
+ else
+ {
+ if(result==-1)
+ ui->lineEditSearch->setStyleSheet(QStringLiteral("background-color: rgb(255, 150, 150);"));
+ else
+ {
+ ui->lineEditSearch->setStyleSheet(QStringLiteral("background-color: rgb(193,255,176);"));
+ ui->TransferList->scrollTo(transferModel.index(result,0));
+ }
+ }
+}
+
+void Themes::hilightTheSearchSlot()
+{
+ hilightTheSearch();
+}
+
+void Themes::on_pushButtonSearchPrev_clicked()
+{
+ int result=transferModel.searchPrev(ui->lineEditSearch->text().toStdString());
+ if(ui->lineEditSearch->text().isEmpty())
+ ui->lineEditSearch->setStyleSheet("");
+ else
+ {
+ if(result==-1)
+ ui->lineEditSearch->setStyleSheet(QStringLiteral("background-color: rgb(255, 150, 150);"));
+ else
+ {
+ ui->lineEditSearch->setStyleSheet(QStringLiteral("background-color: rgb(193,255,176);"));
+ ui->TransferList->scrollTo(transferModel.index(result,0));
+ }
+ }
+}
+
+void Themes::on_pushButtonSearchNext_clicked()
+{
+ hilightTheSearch(true);
+}
+
+void Themes::on_lineEditSearch_returnPressed()
+{
+ hilightTheSearch();
+}
+
+void Themes::on_lineEditSearch_textChanged(QString text)
+{
+ if(text=="")
+ {
+ TimerForSearch->stop();
+ hilightTheSearch();
+ }
+ else
+ TimerForSearch->start();
+}
+
+void Themes::on_moreButton_toggled(bool checked)
+{
+ Q_UNUSED(checked);
+ /*if(checked)
+ this->setMaximumHeight(16777215);
+ else
+ this->setMaximumHeight(130);*/
+ // usefull under windows
+ #if ! defined(__ANDROID__) && ! defined(ANDROID) && ! defined(__ANDROID_API__)
+ this->adjustSize();
+ #endif
+}
+
+/* drag event processing
+
+need setAcceptDrops(true); into the constructor
+need implementation to accept the drop:
+void dragEnterEvent(QDragEnterEvent* event);
+void dragMoveEvent(QDragMoveEvent* event);
+void dragLeaveEvent(QDragLeaveEvent* event);
+*/
+void Themes::dropEvent(QDropEvent *event)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ const QMimeData* mimeData = event->mimeData();
+ if(mimeData->hasUrls())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"hasUrls");
+ std::vector<std::string> urls;
+ unsigned int index=0;
+ foreach (QUrl url, mimeData->urls())
+ {
+ const std::string &urlString=url.toString().toStdString();
+ if(index<99)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,urlString);
+ urls.push_back(urlString);
+ index++;
+ }
+ emit urlDropped(urls);
+ event->acceptProposedAction();
+ }
+}
+
+void Themes::dragEnterEvent(QDragEnterEvent* event)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ // if some actions should not be usable, like move, this code must be adopted
+ const QMimeData* mimeData = event->mimeData();
+ if(mimeData->hasUrls())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"hasUrls");
+ event->acceptProposedAction();
+ }
+}
+
+void Themes::dragMoveEvent(QDragMoveEvent* event)
+{
+ // if some actions should not be usable, like move, this code must be adopted
+ const QMimeData* mimeData = event->mimeData();
+ if(mimeData->hasUrls())
+ event->acceptProposedAction();
+}
+
+void Themes::dragLeaveEvent(QDragLeaveEvent* event)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ event->accept();
+}
+
+void Themes::on_searchButton_toggled(bool checked)
+{
+ if(checked)
+ searchBoxShortcut();
+ else
+ closeTheSearchBox();
+}
+
+void Themes::on_exportTransferList_clicked()
+{
+ emit exportTransferList();
+}
+
+void Themes::on_importTransferList_clicked()
+{
+ emit importTransferList();
+}
+
+void Themes::progressColorWrite_clicked()
+{
+ QColor color=QColorDialog::getColor(progressColorWrite,this,tr("Select a color"));
+ if(!color.isValid())
+ return;
+ progressColorWrite=color;
+ QPixmap pixmap(75,20);
+ pixmap.fill(progressColorWrite);
+ uiOptions->progressColorWrite->setIcon(pixmap);
+ updateProgressionColorBar();
+}
+
+void Themes::progressColorRead_clicked()
+{
+ QColor color=QColorDialog::getColor(progressColorRead,this,tr("Select a color"));
+ if(!color.isValid())
+ return;
+ progressColorRead=color;
+ QPixmap pixmap(75,20);
+ pixmap.fill(progressColorRead);
+ uiOptions->progressColorRead->setIcon(pixmap);
+ updateProgressionColorBar();
+}
+
+void Themes::progressColorRemaining_clicked()
+{
+ QColor color=QColorDialog::getColor(progressColorRemaining,this,tr("Select a color"));
+ if(!color.isValid())
+ return;
+ progressColorRemaining=color;
+ QPixmap pixmap(75,20);
+ pixmap.fill(progressColorRemaining);
+ uiOptions->progressColorRemaining->setIcon(pixmap);
+ updateProgressionColorBar();
+}
+
+void Themes::alwaysOnTop_clicked(bool reshow)
+{
+ Qt::WindowFlags flags = windowFlags();
+ #ifdef Q_OS_WIN32
+ if(uiOptions->alwaysOnTop->isChecked())
+ SetWindowPos((HWND)this->winId(), HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
+ else
+ SetWindowPos((HWND)this->winId(), HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);
+ #endif
+ #ifdef Q_OS_LINUX
+ if(uiOptions->alwaysOnTop->isChecked())
+ flags=flags | Qt::X11BypassWindowManagerHint;
+ else
+ flags=flags & ~Qt::X11BypassWindowManagerHint;
+ #endif
+ if(uiOptions->alwaysOnTop->isChecked())
+ flags=flags | Qt::WindowStaysOnTopHint;
+ else
+ flags=flags & ~Qt::WindowStaysOnTopHint;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"uiOptions->alwaysOnTop->isChecked(): "+std::to_string(uiOptions->alwaysOnTop->isChecked())+", flags: "+std::to_string(flags));
+ setWindowFlags(flags);
+ if(reshow)
+ show();
+}
+
+void Themes::alwaysOnTop_clickedSlot()
+{
+ alwaysOnTop_clicked(true);
+}
+
+void Themes::updateProgressionColorBar()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ uiOptions->labelProgressionColor->setVisible(uiOptions->showDualProgression->isChecked());
+ uiOptions->frameProgressionColor->setVisible(uiOptions->showDualProgression->isChecked());
+ if(!darkUi)
+ {
+ if(!uiOptions->showDualProgression->isChecked())
+ {
+ ui->progressBar_all->setStyleSheet(QStringLiteral(""));
+ ui->progressBar_file->setStyleSheet(QStringLiteral(""));
+ //ui->progressBarCurrentSpeed->setStyleSheet(QStringLiteral(""));
+ }
+ else
+ {
+ ui->progressBar_all->setStyleSheet(QStringLiteral("QProgressBar{border:1px solid grey;text-align:center;background-color:%1;}QProgressBar::chunk{background-color:%2;}")
+ .arg(progressColorRemaining.name())
+ .arg(progressColorWrite.name())
+ );
+ ui->progressBar_file->setStyleSheet(QStringLiteral("QProgressBar{border:1px solid grey;text-align:center;background-color:%1;}QProgressBar::chunk{background-color:%2;}")
+ .arg(progressColorRemaining.name())
+ .arg(progressColorWrite.name())
+ );
+ /*ui->progressBarCurrentSpeed->setStyleSheet(QStringLiteral("QProgressBar{border:1px solid grey;text-align:center;background-color:%1;}QProgressBar::chunk{background-color:%2;}")
+ .arg(progressColorRemaining.name())
+ .arg(progressColorWrite.name())
+ );*/
+ }
+ }
+ if(stat==status_never_started)
+ updateCurrentFileInformation();
+}
+
+QString Themes::simplifiedBigNum(const uint64_t &num)
+{
+ if(num<1000)
+ return QString::number(num);
+ else if(num<1000000)
+ return QString::number(num/1000)+QStringLiteral("k");
+ else
+ return QString::number(num/1000000)+QStringLiteral("M");
+}
+
+void Themes::updateTitle()
+{
+ if(uiOptions->showProgressionInTheTitle->isChecked() && totalSize>0)
+ {
+ if(!modeIsForced)
+ this->setWindowTitle(tr("%1 %2% of %3 into %4 files")
+ .arg(QString::fromStdString(facilityEngine->translateText("Transfer")))
+ .arg((currentSize*100)/totalSize)
+ .arg(QString::fromStdString(facilityEngine->sizeToString(totalSize)))
+ .arg(simplifiedBigNum(totalFile))+
+ QStringLiteral(" - ")+
+ QString::fromStdString(facilityEngine->softwareName())
+ );
+ else
+ {
+ if(mode==Ultracopier::Copy)
+ this->setWindowTitle(tr("%1 %2% of %3 into %4 files")
+ .arg(QString::fromStdString(facilityEngine->translateText("Copy")))
+ .arg((currentSize*100)/totalSize)
+ .arg(QString::fromStdString(facilityEngine->sizeToString(totalSize)))
+ .arg(simplifiedBigNum(totalFile))+
+ QStringLiteral(" - ")+
+ QString::fromStdString(facilityEngine->softwareName())
+ );
+ else
+ this->setWindowTitle(tr("%1 %2% of %3 into %4 files")
+ .arg(QString::fromStdString(facilityEngine->translateText("Move")))
+ .arg((currentSize*100)/totalSize)
+ .arg(QString::fromStdString(facilityEngine->sizeToString(totalSize)))
+ .arg(simplifiedBigNum(totalFile))+
+ QStringLiteral(" - ")+
+ QString::fromStdString(facilityEngine->softwareName())
+ );
+ }
+ }
+ else
+ {
+ if(!modeIsForced)
+ this->setWindowTitle(
+ QString::fromStdString(facilityEngine->translateText("Transfer"))+
+ QStringLiteral(" - ")+
+ QString::fromStdString(facilityEngine->softwareName())
+ );
+ else
+ {
+ if(mode==Ultracopier::Copy)
+ this->setWindowTitle(
+ QString::fromStdString(facilityEngine->translateText("Copy"))+
+ QStringLiteral(" - ")+
+ QString::fromStdString(facilityEngine->softwareName())
+ );
+ else
+ this->setWindowTitle(
+ QString::fromStdString(facilityEngine->translateText("Move"))+
+ QStringLiteral(" - ")+
+ QString::fromStdString(facilityEngine->softwareName())
+ );
+ }
+ }
+}
+
+/** \brief Create progessive icon
+
+Do QIcon with top and bottom image mixed and percent writed on it.
+The icon it be search in the style path.
+Do by mongaulois, remake by alpha_one_x86.
+\param percent indique how many percent need be showed, sould be between 0 and 100
+\param text The showed text if needed (optionnal)
+\return QIcon of the final image
+\note Can be used as it: dynaIcon(75,"...")
+*/
+QIcon Themes::dynaIcon(int percent,std::string text) const
+{
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(pixmapTop.isNull() || pixmapBottom.isNull())
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error loading the icons");
+ #endif
+ if(percent==-1)
+ percent=getOldProgression;
+ if(percent<0)
+ percent=0;
+ if(percent>100)
+ percent=100;
+ //pixmap avec un fond transparent
+ #ifdef Q_OS_WIN32
+ quint8 imageSize=16;
+ #else
+ quint8 imageSize=22;
+ #endif
+ QPixmap resultImage(imageSize,imageSize);
+ resultImage.fill(Qt::transparent);
+ {
+ QPainter painter(&resultImage);
+ #ifndef Q_OS_WIN32
+ QFont font(QStringLiteral("Courier New"),9);
+ font.setBold(true);
+ font.setKerning(true);
+ painter.setFont(font);
+ #endif
+ #ifdef Q_OS_WIN32
+ QFont font(QStringLiteral("Courier New"),8);
+ font.setBold(true);
+ font.setKerning(true);
+ painter.setFont(font);
+ #endif
+
+ //preprocessing the calcul
+ quint8 bottomPixel=(percent*imageSize)/100;
+ quint8 topPixel=imageSize-bottomPixel;
+
+ //top image
+ if(topPixel>0)
+ {
+ QRect target(0, 0, imageSize, topPixel);
+ QRect source(0, 0, imageSize, topPixel);
+ painter.drawPixmap(target, pixmapTop, source);
+ }
+
+ //bottom image
+ if(bottomPixel>0)
+ {
+ QRect target2(0, topPixel, imageSize, bottomPixel);
+ QRect source2(0, topPixel, imageSize, bottomPixel);
+ painter.drawPixmap(target2, pixmapBottom, source2);
+ }
+
+ qint8 textxOffset=0;
+ qint8 textyOffset=0;
+ if(text.empty())
+ {
+ if(percent!=100)
+ text=std::to_string(percent);
+ else
+ {
+ text=":)";
+ #ifdef Q_OS_WIN32
+ textyOffset-=2;
+ #else
+ textyOffset-=1;
+ #endif
+ }
+ }
+ if(text.size()==1)
+ {
+ textxOffset+=3;
+ #ifdef Q_OS_WIN32
+ textxOffset-=1;
+ #endif
+ }
+ else
+ {
+ #ifdef Q_OS_WIN32
+ textxOffset-=1;
+ #endif
+ }
+ #ifndef Q_OS_WIN32
+ textxOffset+=2;
+ textyOffset+=3;
+ #endif
+ painter.setPen(QPen(Qt::black));
+ painter.drawText(3+textxOffset,13+textyOffset,QString::fromStdString(text));
+ painter.setPen(QPen(Qt::white));
+ painter.drawText(2+textxOffset,12+textyOffset,QString::fromStdString(text));
+ }
+ return QIcon(resultImage);
+}
+
+/** \brief For catch an action on the systray icon
+\param reason Why it activated
+*/
+void Themes::catchAction(QSystemTrayIcon::ActivationReason reason)
+{
+ if(reason==QSystemTrayIcon::DoubleClick || reason==QSystemTrayIcon::Trigger)
+ {
+ sysTrayIcon->hide();
+ this->show();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Double Click detected");
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"reason: "+std::to_string(reason));
+}
+
+void Themes::on_exportErrorToTransferList_clicked()
+{
+ emit exportErrorIntoTransferList();
+}
+
+void Themes::resizeEvent(QResizeEvent*)
+{
+ if(!ui->moreButton->isChecked() && (moreButton==NULL || !moreButton->isChecked()))
+ {
+ if(width()<height())
+ {
+ ui->horizontalLayout_3->setDirection(QBoxLayout::TopToBottom);
+ ui->frameLeft->setMaximumHeight(height()/3);
+ ui->frameLeft->setMaximumWidth(1000000);
+ ui->frameMiddle->setMaximumHeight(height()/3);
+ ui->frameMiddle->setMaximumWidth(1000000);
+ ui->frameRight->setMaximumHeight(height()/3);
+ ui->frameRight->setMaximumWidth(1000000);
+ }
+ else
+ {
+ ui->horizontalLayout_3->setDirection(QBoxLayout::LeftToRight);
+ ui->frameLeft->setMaximumHeight(1000000);
+ ui->frameLeft->setMaximumWidth(width()/3);
+ ui->frameMiddle->setMaximumHeight(1000000);
+ ui->frameMiddle->setMaximumWidth(width()/3);
+ ui->frameRight->setMaximumHeight(1000000);
+ ui->frameRight->setMaximumWidth(width()/3);
+ }
+ }
+ else {
+ ui->frameLeft->setMaximumHeight(1000000);
+ ui->frameLeft->setMaximumWidth(1000000);
+ ui->frameMiddle->setMaximumHeight(1000000);
+ ui->frameMiddle->setMaximumWidth(1000000);
+ ui->frameRight->setMaximumHeight(1000000);
+ ui->frameRight->setMaximumWidth(1000000);
+ }
+ if(ui->frameS->width()>300)
+ {
+ int space=ui->frameS->width()/20;
+ ui->horizontalLayoutS->setContentsMargins(space,space/2,space,space/2);
+ ui->horizontalLayoutS->setSpacing(space);
+ }
+ else
+ {
+ ui->horizontalLayoutS->setMargin(6);
+ ui->horizontalLayoutS->setSpacing(6);
+ }
+}
+
+void Themes::doneTime(const std::vector<std::pair<uint64_t,uint32_t> > &timeList)
+{
+ if(remainingTimeLogarithmicValue.size()<ULTRACOPIERO2_MAXREMAININGTIMECOL)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"bug, remainingTimeLogarithmicValue.size() "+std::to_string(remainingTimeLogarithmicValue.size())+" <ULTRACOPIERO2_MAXREMAININGTIMECOL");
+ else
+ {
+ unsigned int sub_index=0;
+ while(sub_index<timeList.size())
+ {
+ const std::pair<uint64_t,uint32_t> &timeUnit=timeList.at(sub_index);
+ const uint8_t &col=fileCatNumber(timeUnit.first);
+ RemainingTimeLogarithmicColumn &remainingTimeLogarithmicColumn=remainingTimeLogarithmicValue[col];
+ if(remainingTimeLogarithmicValue.size()<=col)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"bug, remainingTimeLogarithmicValue.size() "+std::to_string(remainingTimeLogarithmicValue.size())+" < col %2"+std::to_string(col));
+ break;
+ }
+ else
+ {
+ if(timeUnit.second>0)
+ {
+ remainingTimeLogarithmicColumn.lastProgressionSpeed.push_back(static_cast<uint64_t>(timeUnit.first/timeUnit.second)*1000);
+ if(remainingTimeLogarithmicColumn.lastProgressionSpeed.size()>ULTRACOPIERO2_MAXVALUESPEEDSTORED)
+ remainingTimeLogarithmicColumn.lastProgressionSpeed.erase(remainingTimeLogarithmicColumn.lastProgressionSpeed.begin());
+
+ }
+ }
+ sub_index++;
+ }
+ unsigned int max=1;
+ sub_index=0;
+ while(sub_index<remainingTimeLogarithmicValue.size() && sub_index<6)
+ {
+ const RemainingTimeLogarithmicColumn &col=remainingTimeLogarithmicValue.at(sub_index);
+ unsigned int tot=0;
+ unsigned int index=0;
+ while(index<col.lastProgressionSpeed.size())
+ {
+ tot+=col.lastProgressionSpeed.at(index);
+ index++;
+ }
+ unsigned int res=0;
+ if(!col.lastProgressionSpeed.empty())
+ res=tot/col.lastProgressionSpeed.size();
+ if(max<res)
+ max=res;
+ sub_index++;
+ }
+ if(max>1)
+ verticalLabel->setText(QString::fromStdString(facilityEngine->speedToString(max)));
+ sub_index=0;
+ while(sub_index<remainingTimeLogarithmicValue.size() && sub_index<6)
+ {
+ const RemainingTimeLogarithmicColumn &col=remainingTimeLogarithmicValue.at(sub_index);
+ unsigned int tot=0;
+ unsigned int index=0;
+ while(index<col.lastProgressionSpeed.size())
+ {
+ tot+=col.lastProgressionSpeed.at(index);
+ index++;
+ }
+ unsigned int res=0;
+ if(!col.lastProgressionSpeed.empty())
+ res=tot/col.lastProgressionSpeed.size();
+ QProgressBar *p=nullptr;
+ switch (sub_index) {
+ case 0:
+ p=ui->progressBar;
+ break;
+ case 1:
+ p=ui->progressBar_2;
+ break;
+ case 2:
+ p=ui->progressBar_3;
+ break;
+ case 3:
+ p=ui->progressBar_4;
+ break;
+ case 4:
+ p=ui->progressBar_5;
+ break;
+ case 5:
+ p=ui->progressBar_6;
+ break;
+ default:
+ break;
+ }
+ p->setValue(res);
+ p->setMaximum(max);
+ p->setToolTip(QString::fromStdString(facilityEngine->speedToString(res)));
+ sub_index++;
+ }
+ }
+}
+
+/* return 0 to 5 */
+uint8_t Themes::fileCatNumber(uint64_t size)
+{
+ //all is in base 10 to understand more easily
+ //drop the big value
+ if(size>100*1000*1000)
+ size=100*1000*1000;
+ size=size/100;//to group all the too small file into the value 0
+ const double rlog=round(log10(size));
+ if(rlog>5)
+ return 5;
+ return rlog;
+}
+
+void Themes::paintEvent(QPaintEvent * event)
+{
+ if(darkUi)
+ {
+ if(background.width()!=width() || background.height()!=height())
+ {
+ int minimal=height();
+ if(width()<height())
+ minimal=width();
+
+ QPixmap temp(minimal,minimal);
+ QPainter paint;
+ paint.begin(&temp);
+
+ QRadialGradient radialGrad(QPointF(minimal/2,minimal/2), minimal/2);
+ radialGrad.setColorAt(0, QColor(70, 70, 70));
+ radialGrad.setColorAt(1, QColor(40, 40, 40));
+ QRect rect_radial(0,0,minimal,minimal);
+ paint.fillRect(rect_radial, radialGrad);
+ background=temp.scaled(width(),height(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation);
+ }
+ QPainter paint;
+ paint.begin(this);
+ paint.drawPixmap(0,0,background.width(), background.height(), background);
+ }
+ else
+ QWidget::paintEvent(event);
+}
diff --git a/plugins/Themes/Oxygen2/interface.h b/plugins/Themes/Oxygen2/interface.h
new file mode 100755
index 0000000..ab6f101
--- /dev/null
+++ b/plugins/Themes/Oxygen2/interface.h
@@ -0,0 +1,259 @@
+/** \file interface.h
+\brief Define the interface
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef INTERFACE_H
+#define INTERFACE_H
+
+#include <QObject>
+#include <QWidget>
+#include <QMenu>
+#include <QCloseEvent>
+#include <QShortcut>
+#include <QItemSelectionModel>
+#include <QTimer>
+#include <QTime>
+#include <QSystemTrayIcon>
+#include <QPixmap>
+#ifdef Q_OS_WIN32
+#include <QWinTaskbarProgress>
+#endif
+
+#include "../../../interface/PluginInterface_Themes.h"
+#include "radialMap/widget.h"
+#include "chartarea.h"
+#include "ProgressBarDark.h"
+#include "DarkButton.h"
+#include "VerticalLabel.h"
+
+#include "ui_interface.h"
+#include "ui_themesOptions.h"
+#include "Oxygen2Environment.h"
+#include "TransferModel.h"
+
+namespace Ui {
+ class interfaceCopy;
+ class themesOptions;
+}
+
+/// \brief Define the interface
+class Themes : public PluginInterface_Themes
+{
+ Q_OBJECT
+public:
+ Themes(const bool &alwaysOnTop,
+ const bool &showProgressionInTheTitle,
+ const QColor &progressColorWrite,
+ const QColor &progressColorRead,
+ const QColor &progressColorRemaining,
+ const bool &showDualProgression,
+ const quint8 &comboBox_copyEnd,
+ const bool &speedWithProgressBar,
+ const qint32 &currentSpeed,
+ const bool &checkBoxShowSpeed,
+ FacilityInterface * facilityEngine,
+ const bool &moreButtonPushed,
+ const bool &minimizeToSystray,
+ const bool &startMinimized,
+ const quint8 &position,
+ const bool &dark);
+ ~Themes();
+ //send information about the copy
+ /// \brief to set the action in progress
+ void actionInProgess(const Ultracopier::EngineActionInProgress &) override;
+ /// \brief the new folder is listing
+ void newFolderListing(const std::string &path) override;
+ /** \brief show the detected speed
+ * in byte per seconds */
+ void detectedSpeed(const uint64_t &speed) override;
+ /** \brief show the remaining time
+ * time in seconds */
+ void remainingTime(const int &remainingSeconds) override;
+ /// \brief set the current collision action
+ void newCollisionAction(const std::string &action);
+ /// \brief set the current error action
+ void newErrorAction(const std::string &action);
+ /// \brief set one error is detected
+ void errorDetected() override;
+ /// \brief new error
+ void errorToRetry(const std::string &source,const std::string &destination,const std::string &error) override;
+ /** \brief support speed limitation */
+ void setSupportSpeedLimitation(const bool &supportSpeedLimitationBool) override;
+ //get information about the copy
+ /// \brief show the general progression
+ void setGeneralProgression(const uint64_t &current,const uint64_t &total) override;
+ /// \brief show the file progression
+ void setFileProgression(const std::vector<Ultracopier::ProgressionItem> &progressionList) override;
+ /// \brief set the copyType -> file or folder
+ void setCopyType(const Ultracopier::CopyType &) override;
+ /// \brief set the copyMove -> copy or move, to force in copy or move, else support both
+ void forceCopyMode(const Ultracopier::CopyMode &) override;
+ /// \brief set if transfer list is exportable/importable
+ void setTransferListOperation(const Ultracopier::TransferListOperation &transferListOperation) override;
+ //edit the transfer list
+ /// \brief get action on the transfer list (add/move/remove)
+ void getActionOnList(const std::vector<Ultracopier::ReturnActionOnCopyList> &returnActions) override;
+ /** \brief set if the order is external (like file manager copy)
+ * to notify the interface, which can hide add folder/filer button */
+ void haveExternalOrder() override;
+ /// to get by file speed, size and ms
+ void doneTime(const std::vector<std::pair<uint64_t,uint32_t> > &timeList) override;
+ /// \brief set if is in pause
+ void isInPause(const bool &) override;
+ /// \brief set if have pause
+ void havePause(const bool &) override;
+ /// \brief get the widget for the copy engine
+ QWidget * getOptionsEngineWidget() override;
+ /// \brief to set if the copy engine is found
+ void getOptionsEngineEnabled(const bool &isEnabled) override;
+ enum status{status_never_started,status_started,status_stopped};
+ status stat;
+
+ static QString simplifiedBigNum(const uint64_t &num);
+public slots:
+ /// \brief set the translate
+ void newLanguageLoaded();
+private slots:
+ void on_putOnTop_clicked();
+ void on_pushUp_clicked();
+ void on_pushDown_clicked();
+ void on_putOnBottom_clicked();
+ void on_del_clicked();
+ void on_cancelButton_clicked();
+ void speedWithProgressBar_toggled(bool checked);
+ void showDualProgression_toggled(bool checked);
+ void checkBoxShowSpeed_toggled(bool checked);
+ void on_SliderSpeed_valueChanged(int value);
+ void on_pauseButton_clicked();
+ void on_skipButton_clicked();
+ void forcedModeAddFile();
+ void forcedModeAddFolder();
+ void forcedModeAddFileToCopy();
+ void forcedModeAddFolderToCopy();
+ void forcedModeAddFileToMove();
+ void forcedModeAddFolderToMove();
+ void uiUpdateSpeed();
+ void on_pushButtonCloseSearch_clicked();
+ //close the search box
+ void closeTheSearchBox();
+ //search box shortcut
+ void searchBoxShortcut();
+ //hilight the search
+ void hilightTheSearch(bool searchNext=false);
+ void hilightTheSearchSlot();
+ //auto connect
+ void on_pushButtonSearchPrev_clicked();
+ void on_pushButtonSearchNext_clicked();
+ void on_lineEditSearch_returnPressed();
+ void on_lineEditSearch_textChanged(QString text);
+ void on_moreButton_toggled(bool checked);
+ void on_searchButton_toggled(bool checked);
+ void on_exportTransferList_clicked();
+ void on_importTransferList_clicked();
+ void progressColorWrite_clicked();
+ void progressColorRead_clicked();
+ void progressColorRemaining_clicked();
+ void alwaysOnTop_clicked(bool reshow);
+ void alwaysOnTop_clickedSlot();
+ void updateProgressionColorBar();
+ void updateTitle();
+ void catchAction(QSystemTrayIcon::ActivationReason reason);
+ void on_exportErrorToTransferList_clicked();
+private:
+ uint64_t duration;
+ bool durationStarted;
+ QPixmap pixmapTop,pixmapBottom;
+ QColor progressColorWrite,progressColorRead,progressColorRemaining;
+ Ui::interfaceCopy *ui;
+ Ui::themesOptions *uiOptions;
+ uint64_t currentFile;
+ uint64_t totalFile;
+ uint64_t currentSize;
+ uint64_t totalSize;
+ uint8_t getOldProgression;
+ QSystemTrayIcon *sysTrayIcon;
+ void updateOverallInformation();
+ void updateCurrentFileInformation();
+ QMenu *menu;
+ Ultracopier::EngineActionInProgress action;
+ void closeEvent(QCloseEvent *event) override;
+ int32_t currentSpeed;///< in KB/s, assume as 0KB/s as default like every where
+ void updateSpeed();
+ bool storeIsInPause;
+ bool modeIsForced;
+ Ultracopier::CopyType type;
+ Ultracopier::CopyMode mode;
+ void updateModeAndType();
+ bool haveStarted;
+ bool haveError;
+ QWidget optionEngineWidget;
+ QShortcut *searchShortcut;
+ QShortcut *searchShortcut2;
+ QShortcut *searchShortcut3;
+ QTimer *TimerForSearch;
+ int currentIndexSearch; ///< Current index search in starting at the end
+ FacilityInterface * facilityEngine;
+ QItemSelectionModel *selectionModel;
+ QModelIndexList selectedItems;
+ /// \brief the custom transfer model
+ TransferModel transferModel;
+ RadialMap::Widget *radial;
+ ChartArea::Widget *chartarea;
+ bool darkUi;
+ bool m_havePause;
+ QPixmap background;
+
+ static QIcon player_play,player_pause,tempExitIcon,editDelete,skinIcon,editFind,documentOpen,documentSave,listAdd;
+ static bool iconLoaded;
+
+ struct RemainingTimeLogarithmicColumn
+ {
+ std::vector<int> lastProgressionSpeed;
+ };
+ /** for RemainingTimeAlgo_Logarithmic **/
+ std::vector<RemainingTimeLogarithmicColumn> remainingTimeLogarithmicValue;
+
+ /** \brief drag event processing
+
+ need setAcceptDrops(true); into the constructor
+ need implementation to accept the drop:
+ void dragEnterEvent(QDragEnterEvent* event);
+ void dragMoveEvent(QDragMoveEvent* event);
+ void dragLeaveEvent(QDragLeaveEvent* event);
+ */
+ void dropEvent(QDropEvent *event) override;
+ /** \brief accept all event to allow the drag and drop
+ \see dropEvent() */
+ void dragEnterEvent(QDragEnterEvent* event) override;
+ /** \brief accept all event to allow the drag and drop
+ \see dropEvent() */
+ void dragMoveEvent(QDragMoveEvent* event) override;
+ /** \brief accept all event to allow the drag and drop
+ \see dropEvent() */
+ void dragLeaveEvent(QDragLeaveEvent* event) override;
+ //have functionality
+ bool shutdown;
+ ProgressBarDark * progressBar_all;
+ ProgressBarDark * progressBar_file;
+ DarkButton * moreButton;
+ DarkButton * pauseButton;
+ DarkButton * skipButton;
+ DarkButton * cancelButton;
+ VerticalLabel *verticalLabel;
+ void updatePause();
+ QIcon dynaIcon(int percent,std::string text="") const;
+ void updateSysTrayIcon();
+ void resizeEvent(QResizeEvent*) override;
+ uint8_t fileCatNumber(uint64_t size);
+ void paintEvent(QPaintEvent *event) override;
+
+ #ifdef Q_OS_WIN32
+ QWinTaskbarProgress winTaskbarProgress;
+ #endif
+signals:
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,const std::string &fonction,const std::string &text,const std::string &file,const int &ligne) const;
+};
+
+#endif // INTERFACE_H
diff --git a/plugins/Themes/Oxygen2/interface.pro b/plugins/Themes/Oxygen2/interface.pro
new file mode 100755
index 0000000..cbd495e
--- /dev/null
+++ b/plugins/Themes/Oxygen2/interface.pro
@@ -0,0 +1,8 @@
+include($$PWD/../Oxygen2/interfaceInclude.pri)
+
+!CONFIG(static) {
+RESOURCES += \
+ $$PWD/../Oxygen2/interfaceResources.qrc \
+ $$PWD/../Oxygen2/interfaceResources_unix.qrc \
+ $$PWD/../Oxygen2/interfaceResources_windows.qrc
+}
diff --git a/plugins/Themes/Oxygen2/interface.ui b/plugins/Themes/Oxygen2/interface.ui
new file mode 100755
index 0000000..dc0b397
--- /dev/null
+++ b/plugins/Themes/Oxygen2/interface.ui
@@ -0,0 +1,1098 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>interfaceCopy</class>
+ <widget class="QWidget" name="interfaceCopy">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>550</width>
+ <height>539</height>
+ </rect>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>550</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string notr="true">Ultracopier</string>
+ </property>
+ <property name="windowIcon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/main.png</normaloff>:/Themes/Oxygen2/resources/main.png</iconset>
+ </property>
+ <layout class="QVBoxLayout">
+ <property name="spacing">
+ <number>2</number>
+ </property>
+ <property name="leftMargin">
+ <number>1</number>
+ </property>
+ <property name="topMargin">
+ <number>1</number>
+ </property>
+ <property name="rightMargin">
+ <number>1</number>
+ </property>
+ <property name="bottomMargin">
+ <number>1</number>
+ </property>
+ <item>
+ <widget class="QFrame" name="frame">
+ <property name="minimumSize">
+ <size>
+ <width>300</width>
+ <height>100</height>
+ </size>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QFrame" name="frameLeft">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayoutLeft">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayoutVL">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QFrame" name="frameS">
+ <layout class="QHBoxLayout" name="horizontalLayoutS">
+ <item>
+ <widget class="QProgressBar" name="progressBar">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="value">
+ <number>20</number>
+ </property>
+ <property name="textVisible">
+ <bool>false</bool>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBar_2">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="value">
+ <number>30</number>
+ </property>
+ <property name="textVisible">
+ <bool>false</bool>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBar_3">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="value">
+ <number>66</number>
+ </property>
+ <property name="textVisible">
+ <bool>false</bool>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBar_4">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="value">
+ <number>75</number>
+ </property>
+ <property name="textVisible">
+ <bool>false</bool>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBar_5">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="value">
+ <number>84</number>
+ </property>
+ <property name="textVisible">
+ <bool>false</bool>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBar_6">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="value">
+ <number>87</number>
+ </property>
+ <property name="textVisible">
+ <bool>false</bool>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_8">
+ <item>
+ <widget class="QLabel" name="labelSPStart">
+ <property name="text">
+ <string>0</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QLabel" name="labelSPStop">
+ <property name="text">
+ <string>100MB+</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="Line" name="line">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="labelTimeRemaining">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string notr="true">Remaining: 5min</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBar_all">
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>16</height>
+ </size>
+ </property>
+ <property name="maximum">
+ <number>65535</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayoutLeft">
+ <item>
+ <widget class="QPushButton" name="moreButton">
+ <property name="text">
+ <string>&amp;More</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/moveDown.png</normaloff>:/Themes/Oxygen2/resources/moveDown.png</iconset>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pauseButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>&amp;Pause</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/player_pause.png</normaloff>:/Themes/Oxygen2/resources/player_pause.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QFrame" name="frameMiddle">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayouMiddle">
+ <item>
+ <widget class="QLabel" name="overall">
+ <property name="text">
+ <string notr="true">File 0/0, Total: 0KB</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::PlainText</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QFrame" name="frameRight">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="MinimumExpanding" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayoutRight">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_9">
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="shutdown">
+ <property name="maximumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Close on transfer completion</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-color: rgba(255, 0, 255, 0);</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/SystemTrayIcon/exit.png</normaloff>:/Themes/Oxygen2/resources/SystemTrayIcon/exit.png</iconset>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="Line" name="line_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_6">
+ <item>
+ <widget class="QLabel" name="from_label">
+ <property name="text">
+ <string>From:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="from">
+ <property name="font">
+ <font>
+ <weight>75</weight>
+ <bold>true</bold>
+ </font>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::PlainText</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QLabel" name="current_file">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Preferred" vsizetype="MinimumExpanding">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string notr="true">File Name, 0KB</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::PlainText</enum>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBar_file">
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>16</height>
+ </size>
+ </property>
+ <property name="maximum">
+ <number>65535</number>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayoutRight">
+ <item>
+ <widget class="QPushButton" name="skipButton">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="text">
+ <string>&amp;Skip</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/player_end.png</normaloff>:/Themes/Oxygen2/resources/player_end.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="cancelButton">
+ <property name="text">
+ <string>&amp;Cancel</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/cancel.png</normaloff>:/Themes/Oxygen2/resources/cancel.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="ad_ultimate">
+ <property name="text">
+ <string notr="true">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600; color:#ff0000;&quot;&gt;Ad or warning here&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::RichText</enum>
+ </property>
+ <property name="openExternalLinks">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="limitSpeedAsMain">
+ <item>
+ <widget class="QLabel" name="label_Slider_speed">
+ <property name="text">
+ <string>Limit copy speed to:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QSlider" name="SliderSpeed">
+ <property name="maximum">
+ <number>5</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_SpeedMaxValue">
+ <property name="text">
+ <string notr="true">Unlimited</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>1</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QTabWidget" name="tabWidget">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="tab_main">
+ <attribute name="title">
+ <string>Transfer list</string>
+ </attribute>
+ <layout class="QHBoxLayout">
+ <item>
+ <layout class="QVBoxLayout">
+ <property name="spacing">
+ <number>1</number>
+ </property>
+ <item>
+ <widget class="QToolButton" name="putOnTop">
+ <property name="minimumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Move the selected items to the top</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/putOnTop.png</normaloff>:/Themes/Oxygen2/resources/putOnTop.png</iconset>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="pushUp">
+ <property name="minimumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Move up the selected items</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/moveUp.png</normaloff>:/Themes/Oxygen2/resources/moveUp.png</iconset>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="pushDown">
+ <property name="minimumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Move down the selected items</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/moveDown.png</normaloff>:/Themes/Oxygen2/resources/moveDown.png</iconset>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="putOnBottom">
+ <property name="minimumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Move the selected items to the bottom</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/putOnBottom.png</normaloff>:/Themes/Oxygen2/resources/putOnBottom.png</iconset>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="add">
+ <property name="minimumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Add file/folder</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset>
+ </property>
+ <property name="popupMode">
+ <enum>QToolButton::InstantPopup</enum>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="del">
+ <property name="minimumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Delete the selected items</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/remove.png</normaloff>:/Themes/Oxygen2/resources/remove.png</iconset>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="searchButton">
+ <property name="minimumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Search</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/search.png</normaloff>:/Themes/Oxygen2/resources/search.png</iconset>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="exportTransferList">
+ <property name="minimumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Export the transfer list</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/export-transfer-list.png</normaloff>:/Themes/Oxygen2/resources/export-transfer-list.png</iconset>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="importTransferList">
+ <property name="minimumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Import the transfer list</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/import-transfer-list.png</normaloff>:/Themes/Oxygen2/resources/import-transfer-list.png</iconset>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QTreeView" name="TransferList">
+ <property name="selectionMode">
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
+ <property name="rootIsDecorated">
+ <bool>false</bool>
+ </property>
+ <property name="uniformRowHeights">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayoutSearch">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLineEdit" name="lineEditSearch"/>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButtonSearchPrev">
+ <property name="text">
+ <string>Previous</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButtonSearchNext">
+ <property name="text">
+ <string>Next</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButtonCloseSearch">
+ <property name="minimumSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>25</width>
+ <height>25</height>
+ </size>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/remove.png</normaloff>:/Themes/Oxygen2/resources/remove.png</iconset>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab_error">
+ <attribute name="title">
+ <string>Error</string>
+ </attribute>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QToolButton" name="exportErrorToTransferList">
+ <property name="minimumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>22</width>
+ <height>22</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Export the errors into transfer list</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/export-transfer-list.png</normaloff>:/Themes/Oxygen2/resources/export-transfer-list.png</iconset>
+ </property>
+ <property name="autoRaise">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QTreeWidget" name="errorList">
+ <property name="selectionMode">
+ <enum>QAbstractItemView::NoSelection</enum>
+ </property>
+ <property name="rootIsDecorated">
+ <bool>false</bool>
+ </property>
+ <property name="uniformRowHeights">
+ <bool>true</bool>
+ </property>
+ <column>
+ <property name="text">
+ <string>Source</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Destination</string>
+ </property>
+ </column>
+ <column>
+ <property name="text">
+ <string>Error</string>
+ </property>
+ </column>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="tab_interface">
+ <attribute name="title">
+ <string>Interface</string>
+ </attribute>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QScrollArea" name="optionsTab">
+ <property name="widgetResizable">
+ <bool>true</bool>
+ </property>
+ <widget class="QWidget" name="scrollAreaWidgetContents">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>542</width>
+ <height>249</height>
+ </rect>
+ </property>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ <action name="actionAddFile">
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset>
+ </property>
+ <property name="text">
+ <string>Add file</string>
+ </property>
+ </action>
+ <action name="actionAddFolder">
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset>
+ </property>
+ <property name="text">
+ <string>Add folder</string>
+ </property>
+ </action>
+ <action name="actionAddFileToMove">
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset>
+ </property>
+ <property name="text">
+ <string>Move file(s)</string>
+ </property>
+ </action>
+ <action name="actionAddFolderToMove">
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset>
+ </property>
+ <property name="text">
+ <string>Move folder</string>
+ </property>
+ </action>
+ <action name="actionAddFileToCopy">
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset>
+ </property>
+ <property name="text">
+ <string>Copy file(s)</string>
+ </property>
+ </action>
+ <action name="actionAddFolderToCopy">
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Oxygen2/resources/add.png</normaloff>:/Themes/Oxygen2/resources/add.png</iconset>
+ </property>
+ <property name="text">
+ <string>Copy folder</string>
+ </property>
+ </action>
+ </widget>
+ <resources>
+ <include location="interfaceResources.qrc"/>
+ </resources>
+ <connections>
+ <connection>
+ <sender>moreButton</sender>
+ <signal>toggled(bool)</signal>
+ <receiver>tabWidget</receiver>
+ <slot>setVisible(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>218</x>
+ <y>144</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>149</x>
+ <y>305</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/plugins/Themes/Oxygen2/interfaceInclude.pri b/plugins/Themes/Oxygen2/interfaceInclude.pri
new file mode 100755
index 0000000..354ffb9
--- /dev/null
+++ b/plugins/Themes/Oxygen2/interfaceInclude.pri
@@ -0,0 +1,73 @@
+CONFIG += c++11
+QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
+mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
+
+QT += widgets xml
+TEMPLATE = lib
+CONFIG += plugin
+HEADERS = \
+ $$PWD/ThemesFactory.h \
+ $$PWD/StructEnumDefinition.h \
+ $$PWD/DebugEngineMacro.h \
+ $$PWD/Oxygen2Environment.h \
+ $$PWD/Oxygen2Variable.h \
+ $$PWD/../../../interface/PluginInterface_Themes.h \
+ $$PWD/../../../interface/FacilityInterface.h \
+ $$PWD/../../../interface/OptionInterface.h \
+ $$PWD/../../../cpp11addition.h \
+ $$PWD/TransferModel.h \
+ $$PWD/interface.h \
+ $$PWD/chartarea.h \
+ $$PWD/fileTree.h \
+ $$PWD/ProgressBarDark.h \
+ $$PWD/DarkButton.h \
+ $$PWD/VerticalLabel.h \
+ $$PWD/radialMap/map.h \
+ $$PWD/radialMap/widget.h \
+ $$PWD/radialMap/radialMap.h
+
+SOURCES += \
+ $$PWD/chartarea.cpp \
+ $$PWD/fileTree.cpp \
+ $$PWD/ProgressBarDark.cpp \
+ $$PWD/DarkButton.cpp \
+ $$PWD/VerticalLabel.cpp \
+ $$PWD/radialMap/labels.cpp \
+ $$PWD/radialMap/map.cpp \
+ $$PWD/radialMap/widgetEvents.cpp \
+ $$PWD/radialMap/widget.cpp \
+ $$PWD/ThemesFactory.cpp \
+ $$PWD/TransferModel.cpp \
+ $$PWD/interface.cpp \
+ $$PWD/../../../cpp11addition.cpp \
+ $$PWD/../../../cpp11additionstringtointcpp.cpp
+TARGET = $$qtLibraryTarget(interface)
+TRANSLATIONS += \
+ $$PWD/Languages/ar/translation.ts \
+ $$PWD/Languages/de/translation.ts \
+ $$PWD/Languages/el/translation.ts \
+ $$PWD/Languages/en/translation.ts \
+ $$PWD/Languages/es/translation.ts \
+ $$PWD/Languages/fr/translation.ts \
+ $$PWD/Languages/hi/translation.ts \
+ $$PWD/Languages/hu/translation.ts \
+ $$PWD/Languages/id/translation.ts \
+ $$PWD/Languages/it/translation.ts \
+ $$PWD/Languages/ja/translation.ts \
+ $$PWD/Languages/ko/translation.ts \
+ $$PWD/Languages/nl/translation.ts \
+ $$PWD/Languages/no/translation.ts \
+ $$PWD/Languages/pl/translation.ts \
+ $$PWD/Languages/pt/translation.ts \
+ $$PWD/Languages/ru/translation.ts \
+ $$PWD/Languages/th/translation.ts \
+ $$PWD/Languages/tr/translation.ts \
+ $$PWD/Languages/zh/translation.ts
+
+FORMS += \
+ $$PWD/interface.ui \
+ $$PWD/themesOptions.ui
+
+win32: {
+QT += winextras
+}
diff --git a/plugins/Themes/Oxygen2/interfaceResources.qrc b/plugins/Themes/Oxygen2/interfaceResources.qrc
new file mode 100755
index 0000000..0a6e539
--- /dev/null
+++ b/plugins/Themes/Oxygen2/interfaceResources.qrc
@@ -0,0 +1,36 @@
+<RCC>
+ <qresource prefix="/Themes/Oxygen2">
+ <file>resources/add.png</file>
+ <file>resources/cancel.png</file>
+ <file>resources/main.png</file>
+ <file>resources/moveDown.png</file>
+ <file>resources/darkmoveDown.png</file>
+ <file>resources/moveUp.png</file>
+ <file>resources/darkmoveUp.png</file>
+ <file>resources/player_end.png</file>
+ <file>resources/player_pause.png</file>
+ <file>resources/player_play.png</file>
+ <file>resources/darkplayer_end.png</file>
+ <file>resources/darkplayer_pause.png</file>
+ <file>resources/darkplayer_play.png</file>
+ <file>resources/putOnBottom.png</file>
+ <file>resources/putOnTop.png</file>
+ <file>resources/remove.png</file>
+ <file>resources/search.png</file>
+ <file>resources/export-transfer-list.png</file>
+ <file>resources/import-transfer-list.png</file>
+ <file>resources/SystemTrayIcon/add.png</file>
+ <file>resources/SystemTrayIcon/exit.png</file>
+ <file>resources/SystemTrayIcon/informations.png</file>
+ <file>resources/SystemTrayIcon/options.png</file>
+ <file>resources/cancelDarkE.png</file>
+ <file>resources/cancelDarkD.png</file>
+ <file>resources/progressBarout.png</file>
+ <file>resources/progressBarin.png</file>
+ <file>resources/darkButton.png</file>
+ <file>resources/darkButtonPushed.png</file>
+ <file>resources/darkButtonOver.png</file>
+ <file>resources/click.opus</file>
+ <file>resources/over.opus</file>
+ </qresource>
+</RCC>
diff --git a/plugins/Themes/Oxygen2/interfaceResources_unix.qrc b/plugins/Themes/Oxygen2/interfaceResources_unix.qrc
new file mode 100755
index 0000000..1dcca48
--- /dev/null
+++ b/plugins/Themes/Oxygen2/interfaceResources_unix.qrc
@@ -0,0 +1,7 @@
+<RCC>
+ <qresource prefix="/Themes/Oxygen2">
+ <file>resources/SystemTrayIcon/systray_Caught_Unix.png</file>
+ <file>resources/SystemTrayIcon/systray_Semiuncaught_Unix.png</file>
+ <file>resources/SystemTrayIcon/systray_Uncaught_Unix.png</file>
+ </qresource>
+</RCC>
diff --git a/plugins/Themes/Oxygen2/interfaceResources_windows.qrc b/plugins/Themes/Oxygen2/interfaceResources_windows.qrc
new file mode 100755
index 0000000..b9915d0
--- /dev/null
+++ b/plugins/Themes/Oxygen2/interfaceResources_windows.qrc
@@ -0,0 +1,7 @@
+<RCC>
+ <qresource prefix="/Themes/Oxygen2">
+ <file>resources/SystemTrayIcon/systray_Caught_Windows.png</file>
+ <file>resources/SystemTrayIcon/systray_Semiuncaught_Windows.png</file>
+ <file>resources/SystemTrayIcon/systray_Uncaught_Windows.png</file>
+ </qresource>
+</RCC>
diff --git a/plugins/Themes/Oxygen2/options.ui b/plugins/Themes/Oxygen2/options.ui
new file mode 100755
index 0000000..4149e33
--- /dev/null
+++ b/plugins/Themes/Oxygen2/options.ui
@@ -0,0 +1,280 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>options</class>
+ <widget class="QWidget" name="options">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>515</width>
+ <height>251</height>
+ </rect>
+ </property>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="2">
+ <widget class="QCheckBox" name="checkBoxShowSpeed"/>
+ </item>
+ <item row="3" column="2">
+ <widget class="QFrame" name="frameProgressionColor">
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QPushButton" name="progressColorWrite">
+ <property name="minimumSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="progressColorRead">
+ <property name="minimumSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="progressColorRemaining">
+ <property name="minimumSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <widget class="QLabel" name="labelSpeedWithProgressBar">
+ <property name="text">
+ <string>Speed with progress bar</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="2">
+ <widget class="QComboBox" name="comboBox_copyEnd">
+ <item>
+ <property name="text">
+ <string notr="true">Don't close if errors are found</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Never close</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Always close</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="0" column="0" colspan="2">
+ <widget class="QLabel" name="labelShowSpeedAsMain">
+ <property name="text">
+ <string>Show speed as main information</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="labelProgressionColor">
+ <property name="text">
+ <string>Progression color</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="0">
+ <widget class="QCheckBox" name="checkBox_limitSpeed">
+ <property name="text">
+ <string>Limit copy speed at:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="1">
+ <widget class="QSpinBox" name="limitSpeed">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="suffix">
+ <string> KB/s</string>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>999999</number>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QCheckBox" name="showDualProgression"/>
+ </item>
+ <item row="4" column="1">
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>122</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="2" column="0" colspan="2">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Show dual progression</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="label_Slider_speed">
+ <property name="text">
+ <string>Limit copy speed at:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="0">
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>At the end of the copy: </string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QCheckBox" name="speedWithProgressBar"/>
+ </item>
+ <item row="6" column="2">
+ <widget class="QLabel" name="label_SpeedMaxValue">
+ <property name="text">
+ <string notr="true">Unlimited</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="1">
+ <widget class="QSlider" name="SliderSpeed">
+ <property name="maximum">
+ <number>5</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>checkBox_limitSpeed</sender>
+ <signal>clicked(bool)</signal>
+ <receiver>limitSpeed</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>109</x>
+ <y>144</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>199</x>
+ <y>144</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/plugins/Themes/Oxygen2/plugin.json b/plugins/Themes/Oxygen2/plugin.json
new file mode 100755
index 0000000..9e26dfe
--- /dev/null
+++ b/plugins/Themes/Oxygen2/plugin.json
@@ -0,0 +1 @@
+{} \ No newline at end of file
diff --git a/plugins/Themes/Oxygen2/radialMap/labels.cpp b/plugins/Themes/Oxygen2/radialMap/labels.cpp
new file mode 100755
index 0000000..c5ff770
--- /dev/null
+++ b/plugins/Themes/Oxygen2/radialMap/labels.cpp
@@ -0,0 +1,338 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+
+#include <QFont>
+#include <QFontMetrics>
+#include <QPainter>
+#include <QVector>
+
+#include "../fileTree.h"
+#include "radialMap.h"
+#include "widget.h"
+#include <math.h>
+#include <qmath.h>
+
+namespace RadialMap
+{
+class Label
+{
+public:
+ Label(const RadialMap::Segment *s, int l) : segment(s), level(l), angle(segment->start() + (segment->length() / 2)) { }
+
+ bool tooClose(const int otherAngle) const {
+ return (angle > otherAngle - LABEL_ANGLE_MARGIN && angle < otherAngle + LABEL_ANGLE_MARGIN);
+ }
+
+ const RadialMap::Segment *segment;
+ const unsigned int level;
+ const int angle;
+
+ int targetX, targetY, middleX, startY, startX;
+ int textX, textY, tw, th;
+
+ QString qs;
+};
+
+void RadialMap::Widget::paintExplodedLabels(QPainter &paint) const
+{
+ //we are a friend of RadialMap::Map
+
+ QVector<Label*> list;
+ unsigned int startLevel = 0;
+
+
+ //1. Create list of labels sorted in the order they will be rendered
+
+ if (m_focus && m_focus->file() != m_tree) { //separate behavior for selected vs unselected segments
+ //don't bother with files
+ if (m_focus && m_focus->file() && !m_focus->file()->isFolder()) {
+ return;
+ }
+
+ //find the range of levels we will be potentially drawing labels for
+ //startLevel is the level above whatever m_focus is in
+ for (const Folder *p = (const Folder*)m_focus->file(); p != m_tree; ++startLevel) {
+ p = p->parent();
+ }
+
+ //range=2 means 2 levels to draw labels for
+
+ const uint start = m_focus->start();
+ const uint end = m_focus->end(); //boundary angles
+ const uint minAngle = int(m_focus->length() * LABEL_MIN_ANGLE_FACTOR);
+
+
+ //**** Levels should be on a scale starting with 0
+ //**** range is a useless parameter
+ //**** keep a topblock var which is the lowestLevel OR startLevel for indentation purposes
+ for (unsigned int i = startLevel; i <= m_map.m_visibleDepth; ++i) {
+ for (const Segment *segment : m_map.m_signature[i]) {
+ if (segment->start() >= start && segment->end() <= end) {
+ if (segment->length() > minAngle) {
+ list.append(new Label(segment, i));
+ }
+ }
+ }
+ }
+ } else {
+ for (Segment *segment : *m_map.m_signature) {
+ if (segment->length() > 288) {
+ list.append(new Label(segment, 0));
+
+ }
+ }
+ }
+
+ std::sort(list.begin(), list.end(), [](Label *item1, Label *item2) {
+ //you add 1440 to work round the fact that later you want the circle split vertically
+ //and as it is you start at 3 o' clock. It's to do with rightPrevY, stops annoying bug
+
+ int angle1 = (item1)->angle + 1440;
+ int angle2 = (item2)->angle + 1440;
+
+ // Also sort by level
+ if (angle1 == angle2) {
+ return (item1->level > item2->level);
+ }
+
+ if (angle1 > 5760) angle1 -= 5760;
+ if (angle2 > 5760) angle2 -= 5760;
+
+ return (angle1 < angle2);
+
+ });
+
+ //2. Check to see if any adjacent labels are too close together
+ // if so, remove it (the least significant labels, since we sort by level too).
+
+ int pos = 0;
+ while (pos < list.size() - 1) {
+ if (list[pos]->tooClose(list[pos+1]->angle)) {
+ delete list.takeAt(pos+1);
+ } else {
+ ++pos;
+ }
+ }
+
+ //used in next two steps
+ bool varySizes;
+ //**** should perhaps use doubles
+ int *sizes = new int [ m_map.m_visibleDepth + 1 ]; //**** make sizes an array of floats I think instead (or doubles)
+
+ // If the minimum is larger than the default it fucks up further down
+ if (paint.font().pointSize() < 0 ||
+ paint.font().pointSize() < minFontPitch) {
+ QFont font = paint.font();
+ font.setPointSize(minFontPitch);
+ paint.setFont(font);
+ }
+
+ QVector<Label*>::iterator it;
+
+ do {
+ //3. Calculate font sizes
+
+ {
+ //determine current range of levels to draw for
+ uint range = 0;
+
+ for (Label *label : list) {
+ range = qMax(range, label->level);
+
+ //**** better way would just be to assign if nothing is range
+ }
+
+ range -= startLevel; //range 0 means 1 level of labels
+
+ varySizes = range != 0;
+
+ if (varySizes) {
+ //create an array of font sizes for various levels
+ //will exceed normal font pitch automatically if necessary, but not minPitch
+ //**** this needs to be checked lots
+
+ //**** what if this is negative (min size gtr than default size)
+ uint step = (paint.font().pointSize() - minFontPitch) / range;
+ if (step == 0) {
+ step = 1;
+ }
+
+ for (uint x = range + startLevel, y = minFontPitch; x >= startLevel; y += step, --x) {
+ sizes[x] = y;
+ }
+ }
+ }
+
+ //4. determine label co-ordinates
+
+
+ const int preSpacer = int(m_map.m_ringBreadth * 0.5) + m_map.m_innerRadius;
+ const int fullStrutLength = (m_map.width() - m_map.MAP_2MARGIN) / 2 + LABEL_MAP_SPACER; //full length of a strut from map center
+
+ int prevLeftY = 0;
+ int prevRightY = height();
+
+ QFont font;
+
+ for (it = list.begin(); it != list.end(); ++it) {
+ Label *label = *it;
+ //** bear in mind that text is drawn with QPoint param as BOTTOM left corner of text box
+ QString string = label->segment->file()->displayName();
+ if (varySizes) {
+ font.setPointSize(sizes[label->level]);
+ }
+ QFontMetrics fontMetrics(font);
+ #if QT_VERSION < QT_VERSION_CHECK(5, 6, 0)
+ const int minTextWidth = fontMetrics.width(QStringLiteral("M...")) + LABEL_TEXT_HMARGIN; // Fully elided string
+ #else
+ const int minTextWidth = fontMetrics.horizontalAdvance(QStringLiteral("M...")) + LABEL_TEXT_HMARGIN; // Fully elided string
+ #endif
+
+ const int fontHeight = fontMetrics.height() + LABEL_TEXT_VMARGIN; //used to ensure label texts don't overlap
+ const int lineSpacing = fontHeight / 4;
+
+ const bool rightSide = (label->angle < 1440 || label->angle > 4320);
+
+ double sinra, cosra;
+ const double ra = M_PI/2880 * label->angle; //convert to radians
+ sinra = qSin(ra);
+ cosra = qCos(ra);
+
+ const int spacer = preSpacer + m_map.m_ringBreadth * label->level;
+
+ const int centerX = m_map.width() / 2 + m_offset.x(); //centre relative to canvas
+ const int centerY = m_map.height() / 2 + m_offset.y();
+ int targetX = centerX + cosra * spacer;
+ int targetY = centerY - sinra * spacer;
+ int startX = targetX + cosra * (fullStrutLength - spacer + m_map.m_ringBreadth / 2);
+ int startY = targetY - sinra * (fullStrutLength - spacer);
+
+ if (rightSide) { //righthand side, going upwards
+ if (startY > prevRightY /*- fmh*/) { //then it is too low, needs to be drawn higher
+ startY = prevRightY /*- fmh*/;
+ }
+ } else {//lefthand side, going downwards
+ if (startY < prevLeftY/* + fmh*/) { //then we're too high, need to be drawn lower
+ startY = prevLeftY /*+ fmh*/;
+ }
+ }
+
+ int middleX = targetX - (startY - targetY) / tan(ra);
+ int textY = startY + lineSpacing;
+
+ int textX;
+ #if QT_VERSION < QT_VERSION_CHECK(5, 6, 0)
+ const int textWidth = fontMetrics.width(string) + LABEL_TEXT_HMARGIN;
+ #else
+ const int textWidth = fontMetrics.horizontalAdvance(string) + LABEL_TEXT_HMARGIN;
+ #endif
+ if (rightSide) {
+ if (startX + minTextWidth > width() || textY < fontHeight || middleX < targetX) {
+ //skip this strut
+ //**** don't duplicate this code
+ list.erase(it); //will delete the label and set it to list.current() which _should_ be the next ptr
+ break;
+ }
+
+ prevRightY = textY - fontHeight - lineSpacing; //must be after above's "continue"
+
+ if (m_offset.x() + m_map.width() + textWidth < width()) {
+ startX = m_offset.x() + m_map.width();
+ } else {
+ startX = qMax(width() - textWidth, startX);
+ string = fontMetrics.elidedText(string, Qt::ElideMiddle, width() - startX);
+ }
+
+ textX = startX + LABEL_TEXT_HMARGIN;
+ } else { // left side
+ if (startX - minTextWidth < 0 || textY > height() || middleX > targetX) {
+ //skip this strut
+ list.erase(it); //will delete the label and set it to list.current() which _should_ be the next ptr
+ break;
+ }
+
+ prevLeftY = textY + fontHeight - lineSpacing;
+
+ if (m_offset.x() - textWidth > 0) {
+ startX = m_offset.x();
+ textX = startX - textWidth - LABEL_TEXT_HMARGIN;
+ } else {
+ textX = 0;
+ string = fontMetrics.elidedText(string, Qt::ElideMiddle, startX);
+ #if QT_VERSION < QT_VERSION_CHECK(5, 6, 0)
+ startX = fontMetrics.width(string) + LABEL_TEXT_HMARGIN;
+ #else
+ startX = fontMetrics.horizontalAdvance(string) + LABEL_TEXT_HMARGIN;
+ #endif
+ }
+ }
+
+ label->targetX = targetX;
+ label->targetY = targetY;
+ label->middleX = middleX;
+ label->startY = startY;
+ label->startX = startX;
+ label->textX = textX;
+ label->textY = textY;
+ label->qs = string;
+ }
+
+ //if an element is deleted at this stage, we need to do this whole
+ //iteration again, thus the following loop
+ //**** in rare case that deleted label was last label in top level
+ // and last in labelList too, this will not work as expected (not critical)
+
+ } while (it != list.end());
+
+
+ //5. Render labels
+
+ QFont font;
+ for (Label *label : list) {
+ if (varySizes) {
+ //**** how much overhead in making new QFont each time?
+ // (implicate sharing remember)
+ font.setPointSize(sizes[label->level]);
+ paint.setFont(font);
+ }
+
+ paint.setPen(QPen(QColor(0,0,0),2));
+ paint.drawLine(label->targetX, label->targetY, label->middleX, label->startY);
+ paint.drawLine(label->middleX, label->startY, label->startX, label->startY);
+
+ paint.setPen(QPen(QColor(255,255,255),1));
+ paint.drawLine(label->targetX, label->targetY, label->middleX, label->startY);
+ paint.drawLine(label->middleX, label->startY, label->startX, label->startY);
+
+ paint.setPen(QPen(QColor(0,0,0),1));
+ paint.drawText(label->textX-1, label->textY-1, label->qs);
+ paint.drawText(label->textX+1, label->textY-1, label->qs);
+ paint.drawText(label->textX+1, label->textY+1, label->qs);
+ paint.drawText(label->textX-1, label->textY+1, label->qs);
+ paint.setPen(QPen(QColor(255,255,255),1));
+ paint.drawText(label->textX, label->textY, label->qs);
+ }
+
+ qDeleteAll(list);
+ delete [] sizes;
+}
+}
+
diff --git a/plugins/Themes/Oxygen2/radialMap/map.cpp b/plugins/Themes/Oxygen2/radialMap/map.cpp
new file mode 100755
index 0000000..a7306ac
--- /dev/null
+++ b/plugins/Themes/Oxygen2/radialMap/map.cpp
@@ -0,0 +1,421 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+
+#include <QApplication> //make()
+#include <QImage> //make() & paint()
+#include <QFont> //ctor
+#include <QFontMetrics> //ctor
+#include <QPainter>
+#include <QBrush>
+
+#include "radialMap.h" // defines
+#include "../interface.h"
+#include "../fileTree.h"
+#include "widget.h"
+#include <cmath>
+#include <qmath.h>
+
+RadialMap::Map::Map()
+ : m_signature(nullptr)
+ , m_visibleDepth(DEFAULT_RING_DEPTH)
+ , m_ringBreadth(MIN_RING_BREADTH)
+ , m_innerRadius(0)
+ , defaultRingDepth(4)
+{
+
+ //FIXME this is all broken. No longer is a maximum depth!
+ const int fmh = QFontMetrics(QFont()).height();
+ const int fmhD4 = fmh / 4;
+ MAP_2MARGIN = 2 * (fmh - (fmhD4 - LABEL_MAP_SPACER)); //margin is dependent on fitting in labels at top and bottom
+
+ m_minSize=27300;
+}
+
+RadialMap::Map::~Map()
+{
+ delete [] m_signature;
+}
+
+void RadialMap::Map::invalidate()
+{
+ delete [] m_signature;
+ m_signature = nullptr;
+
+ m_visibleDepth = defaultRingDepth;
+}
+
+void RadialMap::Map::make(const Folder *tree, bool refresh)
+{
+ if(height()<1)
+ return;
+ //slow operation so set the wait cursor
+ QApplication::setOverrideCursor(Qt::WaitCursor);
+
+ //build a signature of visible components
+ {
+ //**** REMOVE NEED FOR the +1 with MAX_RING_DEPTH uses
+ //**** add some angle bounds checking (possibly in Segment ctor? can I delete in a ctor?)
+ //**** this is a mess
+
+ delete [] m_signature;
+ m_signature = new std::vector<Segment*>[m_visibleDepth + 1];
+
+ m_root = tree;
+
+ if (!refresh) {
+ quint64 varSize=tree->size();
+ quint64 varHeight=height();
+ quint64 varA=(varSize * 3);
+ quint64 varB=(PI * varHeight - MAP_2MARGIN);
+ m_minSize = varA / varB;
+ findVisibleDepth(tree);
+ }
+
+ setRingBreadth();
+
+ // Calculate ring size limits
+ m_limits.resize(m_visibleDepth + 1);
+ const double size = m_root->size();
+ const double pi2B = M_PI * 4 * m_ringBreadth;
+ for (uint depth = 0; depth <= m_visibleDepth; ++depth) {
+ m_limits[depth] = uint(size / double(pi2B * (depth + 1))); //min is angle that gives 3px outer diameter for that depth
+ }
+
+ build(tree);
+ }
+
+ //colour the segments
+ colorise();
+
+ m_centerText = tree->humanReadableSize()+"\n"+QObject::tr("%1 files").arg(Themes::simplifiedBigNum(tree->children()));
+
+ //paint the pixmap
+ paint();
+
+ QApplication::restoreOverrideCursor();
+}
+
+void RadialMap::Map::setRingBreadth()
+{
+ //FIXME called too many times on creation
+
+ m_ringBreadth = (height() - MAP_2MARGIN) / (2 * m_visibleDepth + 4);
+ m_ringBreadth = qBound(MIN_RING_BREADTH, m_ringBreadth, MAX_RING_BREADTH);
+}
+
+void RadialMap::Map::findVisibleDepth(const Folder *dir, uint currentDepth)
+{
+
+ //**** because I don't use the same minimumSize criteria as in the visual function
+ // this can lead to incorrect visual representation
+ //**** BUT, you can't set those limits until you know m_depth!
+
+ //**** also this function doesn't check to see if anything is actually visible
+ // it just assumes that when it reaches a new level everything in it is visible
+ // automatically. This isn't right especially as there might be no files in the
+ // dir provided to this function!
+
+ static uint stopDepth = 0;
+
+ if (dir == m_root) {
+ stopDepth = m_visibleDepth;
+ m_visibleDepth = 0;
+ }
+
+ if (m_visibleDepth < currentDepth) m_visibleDepth = currentDepth;
+ if (m_visibleDepth >= stopDepth) return;
+
+ for(const auto& n : dir->folders)
+ {
+ Folder * folder=n.second;
+ if (folder->size() > m_minSize) {
+ findVisibleDepth(folder, currentDepth + 1); //if no files greater than min size the depth is still recorded
+ }
+ }
+}
+
+//**** segments currently overlap at edges (i.e. end of first is start of next)
+bool RadialMap::Map::build(const Folder * const dir, const uint depth, uint a_start, const uint a_end)
+{
+ //first iteration: dir == m_root
+
+ if (dir->children() == 0) //we do fileCount rather than size to avoid chance of divide by zero later
+ return false;
+
+ uint64_t hiddenSize = 0;
+ uint hiddenFileCount = 0;
+
+ for(const auto& n : dir->folders)
+ {
+ Folder * folder=n.second;
+ if (folder->size() < m_limits[depth] * 6) { // limit is half a degree? we want at least 3 degrees
+ hiddenSize += folder->size();
+ hiddenFileCount += folder->children(); //need to add one to count the dir as well
+ ++hiddenFileCount;
+ continue;
+ }
+ unsigned int a_len = (unsigned int)(5760 * ((double)folder->size() / (double)m_root->size()));
+ Segment *s = new Segment(folder, a_start, a_len);
+ m_signature[depth].push_back(s);
+ if (depth != m_visibleDepth) {
+ //recurse
+ s->m_hasHiddenChildren = build(folder, depth + 1, a_start, a_start + a_len);
+ } else {
+ s->m_hasHiddenChildren = true;
+ }
+ a_start += a_len; //**** should we add 1?
+ }
+ for (File *file : dir->onlyFiles) {
+ if (file->size() < m_limits[depth] * 6) { // limit is half a degree? we want at least 3 degrees
+ hiddenSize += file->size();
+ ++hiddenFileCount;
+ continue;
+ }
+ unsigned int a_len = (unsigned int)(5760 * ((double)file->size() / (double)m_root->size()));
+ Segment *s = new Segment(file, a_start, a_len);
+ m_signature[depth].push_back(s);
+ a_start += a_len; //**** should we add 1?
+ }
+
+ if (hiddenFileCount == dir->children()) {
+ return true;
+ }
+
+ if (depth == 0 && hiddenSize >= m_limits[depth] && hiddenFileCount > 0) {
+ //append a segment for unrepresented space - a "fake" segment
+ const QString s = QObject::tr("%1 file, with an average size of %2")
+ .arg(hiddenFileCount)
+ .arg(QString::fromStdString(File::facilityEngine->sizeToString(hiddenSize/hiddenFileCount)));
+
+
+ (m_signature + depth)->push_back(new Segment(new File(s.toUtf8().constData(), hiddenSize), a_start, a_end - a_start, true));
+ }
+
+ return false;
+}
+
+bool RadialMap::Map::resize(const QRect &rect)
+{
+ //there's a MAP_2MARGIN border
+
+ const int mw=width();
+ const int mh=height();
+ const int cw=rect.width();
+ const int ch=rect.height();
+
+ if (cw < mw || ch < mh || (cw > mw && ch > mh))
+ {
+ uint size = ((cw < ch) ? cw : ch) - MAP_2MARGIN;
+
+ //this also causes uneven sizes to always resize when resizing but map is small in that dimension
+ //size -= size % 2; //even sizes mean less staggered non-antialiased resizing
+
+ {
+ const uint minSize = MIN_RING_BREADTH * 2 * (m_visibleDepth + 2);
+
+ if (size < minSize)
+ size = minSize;
+
+ //this QRect is used by paint()
+ m_rect.setRect(0,0,size,size);
+ }
+ m_pixmap = QPixmap(m_rect.size());
+
+ //resize the pixmap
+ size += MAP_2MARGIN;
+
+ if (m_signature != nullptr)
+ {
+ setRingBreadth();
+ paint();
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+void RadialMap::Map::colorise()
+{
+ if (!m_signature || m_signature->empty()) {
+ //std::cerr << "no signature yet" << std::endl;
+ return;
+ }
+
+ QColor cp, cb;
+ double darkness = 1;
+ double contrast = (double)94 / (double)100;
+ int h, s1, s2, v1, v2;
+
+ for (uint i = 0; i <= m_visibleDepth; ++i, darkness += 0.04) {
+ for (Segment *segment : m_signature[i]) {
+ h = int(segment->start() / 16);
+ s1 = 160;
+ v1 = (int)(255.0 / darkness); //doing this more often than once seems daft!
+
+ v2 = v1 - int(contrast * v1);
+ s2 = s1 + int(contrast * (255 - s1));
+
+ if (s1 < 80) s1 = 80; //can fall too low and makes contrast between the files hard to discern
+
+ if (segment->isFake()) { //multi-file
+ cb.setHsv(h, s2, (v2 < 90) ? 90 : v2); //too dark if < 100
+ cp.setHsv(h, 17, v1);
+ } else if (!segment->file()->isFolder()) { //file
+ cb.setHsv(h, 17, v1);
+ cp.setHsv(h, 17, v2);
+ } else { //folder
+ cb.setHsv(h, s1, v1); //v was 225
+ cp.setHsv(h, s2, v2); //v was 225 - delta
+ }
+
+ segment->setPalette(cp, cb);
+ }
+ }
+}
+
+void RadialMap::Map::paint(bool antialias)
+{
+ QPainter paint;
+ QRect rect = m_rect;
+
+ rect.adjust(5, 5, -5, -5);
+ m_pixmap.fill(Qt::transparent);
+
+ //m_rect.moveRight(1); // Uncommenting this breaks repainting when recreating map from cache
+
+
+ //**** best option you can think of is to make the circles slightly less perfect,
+ // ** i.e. slightly eliptic when resizing inbetween
+
+ if (m_pixmap.isNull())
+ return;
+
+ if (!paint.begin(&m_pixmap)) {
+ //qWarning() << "Filelight::RadialMap Failed to initialize painting, returning...";
+ return;
+ }
+
+ if (antialias) {
+ paint.translate(0.7, 0.7);
+ paint.setRenderHint(QPainter::Antialiasing);
+ }
+
+ int step = m_ringBreadth;
+ int excess = -1;
+
+ //do intelligent distribution of excess to prevent nasty resizing
+ if (m_ringBreadth != MAX_RING_BREADTH && m_ringBreadth != MIN_RING_BREADTH) {
+ excess = rect.width() % m_ringBreadth;
+ ++step;
+ }
+
+ for (int x = m_visibleDepth; x >= 0; --x)
+ {
+ int width = rect.width() / 2;
+ //clever geometric trick to find largest angle that will give biggest arrow head
+ uint a_max = int(acos((double)width / double((width + 5))) * (180*16 / M_PI));
+
+ for (Segment *segment : m_signature[x]) {
+ //draw the pie segments, most of this code is concerned with drawing the little
+ //arrows on the ends of segments when they have hidden files
+
+ paint.setPen(segment->pen());
+
+ if (segment->hasHiddenChildren())
+ {
+ //draw arrow head to indicate undisplayed files/directories
+ QPolygon pts(3);
+ QPoint pos, cpos = rect.center();
+ uint a[3] = { segment->start(), segment->length(), 0 };
+
+ a[2] = a[0] + (a[1] / 2); //assign to halfway between
+ if (a[1] > a_max)
+ {
+ a[1] = a_max;
+ a[0] = a[2] - a_max / 2;
+ }
+
+ a[1] += a[0];
+
+ for (int i = 0, radius = width; i < 3; ++i)
+ {
+ double ra = M_PI/(180*16) * a[i], sinra, cosra;
+
+ if (i == 2)
+ radius += 5;
+ sinra = qSin(ra);
+ cosra = qCos(ra);
+ pos.rx() = cpos.x() + static_cast<int>(cosra * radius);
+ pos.ry() = cpos.y() - static_cast<int>(sinra * radius);
+ pts.setPoint(i, pos);
+ }
+
+ paint.setBrush(segment->pen());
+ paint.drawPolygon(pts);
+ }
+
+ paint.setPen(QColor(120,120,120));
+ paint.setBrush(segment->brush());
+ paint.drawPie(rect, segment->start(), segment->length());
+
+ if (segment->hasHiddenChildren())
+ {
+ //**** code is bloated!
+ paint.save();
+ QPen pen = paint.pen();
+ int width = 2;
+ pen.setWidth(width);
+ paint.setPen(pen);
+ QRect rect2 = rect;
+ width /= 2;
+ rect2.adjust(width, width, -width, -width);
+ paint.drawArc(rect2, segment->start(), segment->length());
+ paint.restore();
+ }
+ }
+
+ if (excess >= 0) { //excess allows us to resize more smoothly (still crud tho)
+ if (excess < 2) //only decrease rect by more if even number of excesses left
+ --step;
+ excess -= 2;
+ }
+
+ rect.adjust(step, step, -step, -step);
+ }
+
+ // if(excess > 0) rect.addCoords(excess, excess, 0, 0); //ugly
+
+ paint.setPen(QColor(120,120,120));
+ paint.setBrush(QColor(255,255,255));
+ paint.drawEllipse(rect);
+ if(width()>200)
+ {
+ paint.setPen(QColor(0,0,0));
+ paint.drawText(rect, Qt::AlignCenter, m_centerText);
+ }
+
+ m_innerRadius = rect.width() / 2; //rect.width should be multiple of 2
+
+ paint.end();
+}
+
diff --git a/plugins/Themes/Oxygen2/radialMap/map.h b/plugins/Themes/Oxygen2/radialMap/map.h
new file mode 100755
index 0000000..a78e56d
--- /dev/null
+++ b/plugins/Themes/Oxygen2/radialMap/map.h
@@ -0,0 +1,85 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* 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/>.
+***********************************************************************/
+
+#ifndef RadialMapMAP_H
+#define RadialMapMAP_H
+
+#include "../fileTree.h"
+
+#include <QPixmap>
+#include <QRect>
+#include <QString>
+
+namespace RadialMap {
+class Segment;
+
+class Map
+{
+public:
+ explicit Map();
+ ~Map();
+
+ void make(const Folder *, bool = false);
+ bool resize(const QRect&);
+
+ bool isNull() const {
+ return (m_signature == nullptr);
+ }
+ void invalidate();
+
+ int height() const {
+ return m_rect.height();
+ }
+ int width() const {
+ return m_rect.width();
+ }
+ QPixmap pixmap() const {
+ return m_pixmap;
+ }
+
+
+ friend class Widget;
+
+private:
+ void paint(bool antialias = true);
+ void colorise();
+ void setRingBreadth();
+ void findVisibleDepth(const Folder *dir, uint currentDepth = 0);
+ bool build(const Folder* const dir, const uint depth =0, uint a_start =0, const uint a_end =5760);
+
+ std::vector<Segment*> *m_signature;
+
+ const Folder *m_root;
+ uint m_minSize;
+ std::vector<uint64_t> m_limits;
+ QRect m_rect;
+ uint m_visibleDepth; ///visible level depth of system
+ QPixmap m_pixmap;
+ int m_ringBreadth;
+ uint m_innerRadius; ///radius of inner circle
+ QString m_centerText;
+
+ uint MAP_2MARGIN;
+ int defaultRingDepth;
+};
+}
+
+#endif
diff --git a/plugins/Themes/Oxygen2/radialMap/radialMap.h b/plugins/Themes/Oxygen2/radialMap/radialMap.h
new file mode 100755
index 0000000..7935010
--- /dev/null
+++ b/plugins/Themes/Oxygen2/radialMap/radialMap.h
@@ -0,0 +1,109 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* 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/>.
+***********************************************************************/
+
+#ifndef RadialMapRADIALMAP_H
+#define RadialMapRADIALMAP_H
+
+#include <QColor>
+
+class File;
+
+namespace RadialMap
+{
+class Segment //all angles are in 16ths of degrees
+{
+public:
+ Segment(const File *f, uint s, uint l, bool isFake = false)
+ : m_angleStart(s)
+ , m_angleSegment(l)
+ , m_file(f)
+ , m_hasHiddenChildren(false)
+ , m_fake(isFake) {}
+ ~Segment();
+
+ uint start() const {
+ return m_angleStart;
+ }
+ uint length() const {
+ return m_angleSegment;
+ }
+ uint end() const {
+ return m_angleStart + m_angleSegment;
+ }
+ const File *file() const {
+ return m_file;
+ }
+ const QColor& pen() const {
+ return m_pen;
+ }
+ const QColor& brush() const {
+ return m_brush;
+ }
+
+ bool isFake() const {
+ return m_fake;
+ }
+ bool hasHiddenChildren() const {
+ return m_hasHiddenChildren;
+ }
+
+ bool intersects(uint a) const {
+ return ((a >= start()) && (a < end()));
+ }
+
+ friend class Map;
+ friend class Builder;
+
+private:
+ void setPalette(const QColor &p, const QColor &b) {
+ m_pen = p;
+ m_brush = b;
+ }
+
+ const uint m_angleStart, m_angleSegment;
+ const File* const m_file;
+ QColor m_pen, m_brush;
+ bool m_hasHiddenChildren;
+ const bool m_fake;
+};
+}
+
+
+#ifndef PI
+#define PI 3.141592653589793
+#endif
+#ifndef M_PI
+#define M_PI 3.14159265358979323846264338327
+#endif
+
+#define MIN_RING_BREADTH 7
+#define MAX_RING_BREADTH 60
+#define DEFAULT_RING_DEPTH 4 //first level = 0
+#define MIN_RING_DEPTH 0
+
+#define LABEL_MAP_SPACER 7
+#define LABEL_TEXT_HMARGIN 5
+#define LABEL_TEXT_VMARGIN 0
+#define LABEL_ANGLE_MARGIN 32
+#define LABEL_MIN_ANGLE_FACTOR 0.05
+#define LABEL_MAX_CHARS 30
+
+#endif
diff --git a/plugins/Themes/Oxygen2/radialMap/widget.cpp b/plugins/Themes/Oxygen2/radialMap/widget.cpp
new file mode 100755
index 0000000..9baf6db
--- /dev/null
+++ b/plugins/Themes/Oxygen2/radialMap/widget.cpp
@@ -0,0 +1,211 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+
+#include "widget.h"
+
+#include "../fileTree.h"
+#include "radialMap.h" //constants
+#include "map.h"
+
+#include <QUrl>
+
+#include <QApplication> //sendEvent
+#include <QBitmap> //ctor - finding cursor size
+#include <QCursor> //slotPostMouseEvent()
+#include <QTimer> //member
+#include <QWidget>
+
+
+RadialMap::Widget::Widget(const bool dark, QWidget *parent)
+ : QWidget(parent)
+ , m_tree(nullptr)
+ , m_focus(nullptr)
+ , m_map()
+ , m_rootSegment(nullptr) //TODO we don't delete it, *shrug*
+ , m_toBeDeleted(nullptr)
+ , minFontPitch(QFont().pointSize() - 3)
+{
+ setMaximumSize(16777215, 16777215);
+ setMinimumSize(150, 100);
+
+ connect(this, &Widget::folderCreated, this, &Widget::sendFakeMouseEvent);
+ connect(&m_timer, &QTimer::timeout, this, &Widget::resizeTimeout);
+ m_updateCache.start(100);
+ connect(&m_updateCache, &QTimer::timeout, this, &Widget::updateCache);
+ m_tooltip.setFrameShape(QFrame::StyledPanel);
+ m_tooltip.setWindowFlags(Qt::ToolTip | Qt::WindowTransparentForInput);
+ this->dark=dark;
+ newData=false;
+}
+
+RadialMap::Widget::~Widget()
+{
+ if(m_rootSegment!=nullptr)
+ delete m_rootSegment;
+}
+
+
+QString RadialMap::Widget::path() const
+{
+ return m_tree->displayPath();
+}
+
+QUrl RadialMap::Widget::url(File const * const file) const
+{
+ return file ? file->url() : m_tree->url();
+}
+
+void RadialMap::Widget::invalidate()
+{
+ newData=true;
+ if (isValid())
+ {
+ //**** have to check that only way to invalidate is this function frankly
+ //**** otherwise you may get bugs..
+
+ //disable mouse tracking
+ setMouseTracking(false);
+
+ // Get this before reseting m_tree below
+ QUrl invalidatedUrl(url());
+
+ //ensure this class won't think we have a map still
+ m_tree = nullptr;
+ m_focus = nullptr;
+
+ delete m_rootSegment;
+ m_rootSegment = nullptr;
+
+ //FIXME move this disablement thing no?
+ // it is confusing in other areas, like the whole createFromCache() thing
+ m_map.invalidate();
+ update();
+
+ //tell rest of Filelight
+ emit invalidated(invalidatedUrl);
+ }
+}
+
+void
+RadialMap::Widget::create(const Folder *tree)
+{
+ newData=true;
+ //it is not the responsibility of create() to invalidate first
+ //skip invalidation at your own risk
+
+ //FIXME make it the responsibility of create to invalidate first
+
+ if (tree)
+ {
+ m_focus = nullptr;
+ //generate the filemap image
+ m_map.make(tree);
+
+ //this is the inner circle in the center
+ if(m_rootSegment!=nullptr)
+ delete m_rootSegment;
+ m_rootSegment = new Segment(tree, 0, 16*360);
+
+ setMouseTracking(true);
+ }
+
+ m_tree = tree;
+
+ //tell rest of Filelight
+ emit folderCreated(tree);
+}
+
+void
+RadialMap::Widget::createFromCache(const Folder *tree)
+{
+ //no scan was necessary, use cached tree, however we MUST still emit invalidate
+ invalidate();
+ create(tree);
+}
+
+void
+RadialMap::Widget::sendFakeMouseEvent() //slot
+{
+ QMouseEvent me(QEvent::MouseMove, mapFromGlobal(QCursor::pos()), Qt::NoButton, Qt::NoButton, Qt::NoModifier);
+ QApplication::sendEvent(this, &me);
+ update();
+}
+
+void
+RadialMap::Widget::resizeTimeout() //slot
+{
+ // the segments are about to erased!
+ // this was a horrid bug, and proves the OO programming should be obeyed always!
+ m_focus = nullptr;
+ if (m_tree)
+ m_map.make(m_tree, true);
+ updateCache();
+}
+
+void
+RadialMap::Widget::updateCache()
+{
+ if(newData)
+ {
+ newData=false;
+ cache=QPixmap();
+ update();
+ }
+}
+
+void
+RadialMap::Widget::refresh(int filth)
+{
+ //TODO consider a more direct connection
+
+ if (!m_map.isNull())
+ {
+ switch (filth)
+ {
+ case 1:
+ m_focus=nullptr;
+ m_map.make(m_tree, true); //true means refresh only
+ break;
+
+ case 2:
+ m_map.paint(true); //antialiased painting
+ break;
+
+ case 3:
+ m_map.colorise(); //FALL THROUGH!
+ case 4:
+ m_map.paint();
+
+ default:
+ break;
+ }
+
+ update();
+ }
+}
+
+RadialMap::Segment::~Segment()
+{
+ if (isFake())
+ delete m_file; //created by us in Builder::build()
+}
+
+
diff --git a/plugins/Themes/Oxygen2/radialMap/widget.h b/plugins/Themes/Oxygen2/radialMap/widget.h
new file mode 100755
index 0000000..50dfea9
--- /dev/null
+++ b/plugins/Themes/Oxygen2/radialMap/widget.h
@@ -0,0 +1,118 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* 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/>.
+***********************************************************************/
+
+#ifndef RadialMapWIDGET_H
+#define RadialMapWIDGET_H
+
+#include <QUrl>
+
+#include <QLabel>
+#include <QDragEnterEvent>
+#include <QDropEvent>
+#include <QMouseEvent>
+#include <QPaintEvent>
+#include <QResizeEvent>
+#include <QWidget>
+#include <QTimer>
+
+#include "map.h"
+
+class Folder;
+class File;
+namespace KIO {
+class Job;
+}
+
+namespace RadialMap
+{
+class Segment;
+
+class Widget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit Widget(const bool dark,QWidget* = nullptr);
+ ~Widget() override;
+ QString path() const;
+ QUrl url(File const * const = nullptr) const;
+
+ bool isValid() const {
+ return m_tree != nullptr;
+ }
+
+ friend class Label; //FIXME badness
+
+public Q_SLOTS:
+ void create(const Folder*);
+ void invalidate();
+ void resizeTimeout();
+ void refresh(int);
+
+private Q_SLOTS:
+ void sendFakeMouseEvent();
+ void createFromCache(const Folder*);
+
+Q_SIGNALS:
+ void activated(const QUrl&);
+ void invalidated(const QUrl&);
+ void folderCreated(const Folder*);
+ void mouseHover(const QString&);
+ void giveMeTreeFor(const QUrl&);
+
+protected:
+ void changeEvent(QEvent*) override;
+ void mouseMoveEvent(QMouseEvent*) override;
+ void paintEvent(QPaintEvent*) override;
+ void resizeEvent(QResizeEvent*) override;
+ void enterEvent(QEvent*) override;
+ void leaveEvent(QEvent*) override;
+
+protected:
+ const Segment *segmentAt(QPoint&) const; //FIXME const reference for a library others can use
+ const Segment *rootSegment() const {
+ return m_rootSegment; ///never == 0
+ }
+ const Segment *focusSegment() const {
+ return m_focus; ///0 == nothing in focus
+ }
+
+private:
+ void paintExplodedLabels(QPainter&) const;
+ void updateCache();
+
+ const Folder *m_tree;
+ const Segment *m_focus;
+ QPoint m_offset;
+ QTimer m_timer;
+ QTimer m_updateCache;
+ Map m_map;
+ Segment *m_rootSegment;
+ const Segment *m_toBeDeleted;
+ QLabel m_tooltip;
+ bool dark;
+ int minFontPitch;
+ QPixmap cache;
+ bool newData;
+};
+}
+
+#endif
diff --git a/plugins/Themes/Oxygen2/radialMap/widgetEvents.cpp b/plugins/Themes/Oxygen2/radialMap/widgetEvents.cpp
new file mode 100755
index 0000000..d9c23a0
--- /dev/null
+++ b/plugins/Themes/Oxygen2/radialMap/widgetEvents.cpp
@@ -0,0 +1,254 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+
+#include "../fileTree.h"
+#include "radialMap.h" //class Segment
+#include "widget.h"
+
+#include <QMenu> //::mousePressEvent()
+
+#include <QPainter>
+#include <QTimer> //::resizeEvent()
+#include <QDropEvent>
+#include <QPaintEvent>
+#include <QResizeEvent>
+#include <QMouseEvent>
+
+#include <cmath> //::segmentAt()
+
+void RadialMap::Widget::resizeEvent(QResizeEvent*)
+{
+ QRect rectTemp(rect());
+ if (m_map.resize(rectTemp))
+ m_timer.setSingleShot(true);
+ m_timer.start(100); //will cause signature to rebuild for new size
+
+ //always do these as they need to be initialised on creation
+ const unsigned int w=width();
+ const unsigned int h=height();
+ m_offset.rx() = (w - m_map.width()) / 2;
+ m_offset.ry() = (h - m_map.height()) / 2;
+}
+
+void RadialMap::Widget::paintEvent(QPaintEvent*)
+{
+ if(cache.isNull() || cache.width()!=width() || cache.height()!=height())
+ {
+ QImage temp(width(),height(),QImage::Format_ARGB32);
+ temp.fill(Qt::transparent);
+ QPainter paint;
+ paint.begin(&temp);
+
+ if (!m_map.isNull())
+ {
+ QPixmap p(m_map.pixmap());
+
+ int margin=((p.width() < p.height()) ? p.width() : p.height())/50;
+ if(margin<1)
+ margin=1;
+ paint.setRenderHint(QPainter::Antialiasing);
+ QRect rect = p.rect();
+ rect.moveTo(m_offset);
+ rect.adjust(-margin, -margin, margin, margin);
+ paint.setPen(QColor(200,200,200));
+ paint.setBrush(QColor(255,255,255));
+ paint.drawEllipse(rect);
+ paint.setPen(QColor(0,0,0));
+
+ paint.drawPixmap(m_offset,p);
+ }
+ else
+ {
+ const unsigned int w=width();
+ const unsigned int h=height();
+ unsigned int min=w;
+ unsigned int x=0;
+ unsigned int y=0;
+ if(h<w)
+ {
+ min=h;
+ x=(width()-min)/2;
+ }
+ else
+ y=(height()-min)/2;
+
+ paint.setRenderHint(QPainter::Antialiasing);
+ QRect rect(x,y,min,min);
+ //rect.moveTo(m_offset);
+ paint.setPen(QColor(200,200,200));
+ paint.setBrush(QColor(255,255,255));
+ paint.drawEllipse(rect);
+ paint.setPen(QColor(0,0,0));
+
+ paint.drawText(rect, Qt::AlignHCenter | Qt::AlignVCenter, "...");
+ return;
+ }
+
+ //exploded labels
+ if (!m_map.isNull() && !m_timer.isActive())
+ {
+ if (true) {
+ paint.setRenderHint(QPainter::Antialiasing);
+ //make lines appear on pixel boundaries
+ paint.translate(0.5, 0.5);
+ }
+ paintExplodedLabels(paint);
+ }
+
+ cache=QPixmap::fromImage(temp);
+ }
+ QPainter paint;
+ paint.begin(this);
+ paint.drawPixmap(0,0,cache.width(), cache.height(), cache);
+}
+
+const RadialMap::Segment* RadialMap::Widget::segmentAt(QPoint &e) const
+{
+ //determine which segment QPoint e is above
+
+ e -= m_offset;
+
+ if (!m_map.m_signature)
+ return nullptr;
+
+ const int m_map_width=m_map.width();
+ const int m_map_height=m_map.height();
+ if (e.x() <= m_map_width && e.y() <= m_map_height)
+ {
+ //transform to cartesian coords
+ e.rx() -= m_map_width / 2; //should be an int
+ e.ry() = m_map_height / 2 - e.y();
+
+ double length = hypot(e.x(), e.y());
+
+ if (length >= m_map.m_innerRadius) //not hovering over inner circle
+ {
+ uint depth = ((int)length - m_map.m_innerRadius) / m_map.m_ringBreadth;
+
+ if (depth <= m_map.m_visibleDepth) //**** do earlier since you can //** check not outside of range
+ {
+ //vector calculation, reduces to simple trigonometry
+ //cos angle = (aibi + ajbj) / albl
+ //ai = x, bi=1, aj=y, bj=0
+ //cos angle = x / (length)
+
+ uint a = (uint)(acos((double)e.x() / length) * 916.736); //916.7324722 = #radians in circle * 16
+
+ //acos only understands 0-180 degrees
+ if (e.y() < 0) a = 5760 - a;
+
+ for (Segment *segment : m_map.m_signature[depth]) {
+ if (segment->intersects(a))
+ return segment;
+ }
+ }
+ }
+ else return m_rootSegment; //hovering over inner circle
+ }
+
+ return nullptr;
+}
+
+void RadialMap::Widget::mouseMoveEvent(QMouseEvent *e)
+{
+ //set m_focus to what we hover over, update UI if it's a new segment
+
+ Segment const * const oldFocus = m_focus;
+ QPoint p = e->pos();
+
+ m_focus = segmentAt(p); //NOTE p is passed by non-const reference
+
+ if (m_focus)
+ {
+ m_tooltip.move(e->globalX() + 20, e->globalY() + 20);
+ if (m_focus != oldFocus) //if not same as last time
+ {
+ setCursor(Qt::PointingHandCursor);
+
+ QString string;
+
+
+ const QString &path=m_focus->file()->displayPath();
+ if (m_focus->file()->isFolder())
+ {
+ const Folder* folder=static_cast<const Folder*>(m_focus->file());
+ if(path.isEmpty())
+ string += m_focus->file()->humanReadableSize()+tr(" into %1 files").arg(folder->children());
+ else
+ string += path+"\n"+m_focus->file()->humanReadableSize()+tr(" into %1 files").arg(folder->children());
+ }
+ else
+ string += path+" "+m_focus->file()->humanReadableSize();
+
+ // Calculate a semi-sane size for the tooltip
+ QFontMetrics fontMetrics(font());
+ int tooltipWidth = 0;
+ int tooltipHeight = 0;
+ for (const QString &part : string.split(QLatin1Char('\n'))) {
+ tooltipHeight += fontMetrics.height();
+ #if QT_VERSION < QT_VERSION_CHECK(5, 6, 0)
+ tooltipWidth = qMax(tooltipWidth, fontMetrics.width(part));
+ #else
+ tooltipWidth = qMax(tooltipWidth, fontMetrics.horizontalAdvance(part));
+ #endif
+ }
+ // Limit it to the window size, probably should find something better
+ tooltipWidth = qMin(tooltipWidth, window()->width());
+ tooltipWidth += 10;
+ tooltipHeight += 10;
+ m_tooltip.resize(tooltipWidth, tooltipHeight);
+ m_tooltip.setText(string);
+ m_tooltip.show();
+
+ emit mouseHover(m_focus->file()->displayPath());
+ update();
+ }
+ }
+ else if (oldFocus && oldFocus->file() != m_tree)
+ {
+ m_tooltip.hide();
+ unsetCursor();
+ update();
+
+ emit mouseHover(QString());
+ }
+}
+
+void RadialMap::Widget::enterEvent(QEvent *)
+{
+ if (!m_focus) return;
+
+ setCursor(Qt::PointingHandCursor);
+ emit mouseHover(m_focus->file()->displayPath());
+ update();
+}
+
+void RadialMap::Widget::leaveEvent(QEvent *)
+{
+ m_tooltip.hide();
+}
+
+void RadialMap::Widget::changeEvent(QEvent *e)
+{
+ if (e->type() == QEvent::ApplicationPaletteChange ||
+ e->type() == QEvent::PaletteChange)
+ m_map.paint();
+}
diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/add.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/add.png
new file mode 100755
index 0000000..7932127
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/add.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/exit.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/exit.png
new file mode 100755
index 0000000..ae3c4e8
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/exit.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/informations.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/informations.png
new file mode 100755
index 0000000..5b7b255
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/informations.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/options.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/options.png
new file mode 100755
index 0000000..23ec531
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/options.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Unix.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Unix.png
new file mode 100755
index 0000000..6f5d1cf
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Unix.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Windows.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Windows.png
new file mode 100755
index 0000000..5464856
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Windows.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
new file mode 100755
index 0000000..b2bb2e3
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
new file mode 100755
index 0000000..0abeb5f
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Unix.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Unix.png
new file mode 100755
index 0000000..5e313b9
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Unix.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Windows.png b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Windows.png
new file mode 100755
index 0000000..828e7e6
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Windows.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/add.png b/plugins/Themes/Oxygen2/resources/add.png
new file mode 100755
index 0000000..7932127
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/add.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/cancel.png b/plugins/Themes/Oxygen2/resources/cancel.png
new file mode 100755
index 0000000..ae3c4e8
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/cancel.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/cancelDarkD.png b/plugins/Themes/Oxygen2/resources/cancelDarkD.png
new file mode 100755
index 0000000..a2f4556
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/cancelDarkD.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/cancelDarkE.png b/plugins/Themes/Oxygen2/resources/cancelDarkE.png
new file mode 100755
index 0000000..1cda258
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/cancelDarkE.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/click.opus b/plugins/Themes/Oxygen2/resources/click.opus
new file mode 100755
index 0000000..ddd2a25
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/click.opus
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/darkButton.png b/plugins/Themes/Oxygen2/resources/darkButton.png
new file mode 100755
index 0000000..ab8d393
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/darkButton.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/darkButtonOver.png b/plugins/Themes/Oxygen2/resources/darkButtonOver.png
new file mode 100755
index 0000000..ea42018
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/darkButtonOver.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/darkButtonPushed.png b/plugins/Themes/Oxygen2/resources/darkButtonPushed.png
new file mode 100755
index 0000000..d8fba09
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/darkButtonPushed.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/darkmoveDown.png b/plugins/Themes/Oxygen2/resources/darkmoveDown.png
new file mode 100755
index 0000000..cfe6fe6
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/darkmoveDown.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/darkmoveUp.png b/plugins/Themes/Oxygen2/resources/darkmoveUp.png
new file mode 100755
index 0000000..1d5f41c
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/darkmoveUp.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/darkplayer_end.png b/plugins/Themes/Oxygen2/resources/darkplayer_end.png
new file mode 100755
index 0000000..b5e41ba
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/darkplayer_end.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/darkplayer_pause.png b/plugins/Themes/Oxygen2/resources/darkplayer_pause.png
new file mode 100755
index 0000000..8ce7922
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/darkplayer_pause.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/darkplayer_play.png b/plugins/Themes/Oxygen2/resources/darkplayer_play.png
new file mode 100755
index 0000000..b1d58a1
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/darkplayer_play.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/export-transfer-list.png b/plugins/Themes/Oxygen2/resources/export-transfer-list.png
new file mode 100755
index 0000000..3a0aac6
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/export-transfer-list.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/import-transfer-list.png b/plugins/Themes/Oxygen2/resources/import-transfer-list.png
new file mode 100755
index 0000000..ee47f0d
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/import-transfer-list.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/main.png b/plugins/Themes/Oxygen2/resources/main.png
new file mode 100755
index 0000000..5464856
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/main.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/moveDown.png b/plugins/Themes/Oxygen2/resources/moveDown.png
new file mode 100755
index 0000000..82a312c
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/moveDown.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/moveUp.png b/plugins/Themes/Oxygen2/resources/moveUp.png
new file mode 100755
index 0000000..7f7ba72
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/moveUp.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/over.opus b/plugins/Themes/Oxygen2/resources/over.opus
new file mode 100755
index 0000000..7344831
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/over.opus
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/player_end.png b/plugins/Themes/Oxygen2/resources/player_end.png
new file mode 100755
index 0000000..18982db
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/player_end.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/player_pause.png b/plugins/Themes/Oxygen2/resources/player_pause.png
new file mode 100755
index 0000000..68ee21f
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/player_pause.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/player_play.png b/plugins/Themes/Oxygen2/resources/player_play.png
new file mode 100755
index 0000000..a1c5b83
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/player_play.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/progressBarin.png b/plugins/Themes/Oxygen2/resources/progressBarin.png
new file mode 100755
index 0000000..6af26c7
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/progressBarin.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/progressBarout.png b/plugins/Themes/Oxygen2/resources/progressBarout.png
new file mode 100755
index 0000000..08f3748
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/progressBarout.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/putOnBottom.png b/plugins/Themes/Oxygen2/resources/putOnBottom.png
new file mode 100755
index 0000000..512286e
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/putOnBottom.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/putOnTop.png b/plugins/Themes/Oxygen2/resources/putOnTop.png
new file mode 100755
index 0000000..30fe96b
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/putOnTop.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/remove.png b/plugins/Themes/Oxygen2/resources/remove.png
new file mode 100755
index 0000000..b711740
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/remove.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/resources/search.png b/plugins/Themes/Oxygen2/resources/search.png
new file mode 100755
index 0000000..cef1836
--- /dev/null
+++ b/plugins/Themes/Oxygen2/resources/search.png
Binary files differ
diff --git a/plugins/Themes/Oxygen2/themesOptions.ui b/plugins/Themes/Oxygen2/themesOptions.ui
new file mode 100755
index 0000000..b2da124
--- /dev/null
+++ b/plugins/Themes/Oxygen2/themesOptions.ui
@@ -0,0 +1,466 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>themesOptions</class>
+ <widget class="QWidget" name="themesOptions">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>519</width>
+ <height>389</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QToolBox" name="toolBox">
+ <property name="currentIndex">
+ <number>0</number>
+ </property>
+ <widget class="QWidget" name="page">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>492</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <attribute name="label">
+ <string>Use</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="4" column="1">
+ <widget class="QCheckBox" name="startMinimized">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Minimize on close to systray</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1" colspan="2">
+ <widget class="QCheckBox" name="alwaysOnTop"/>
+ </item>
+ <item row="0" column="1">
+ <widget class="QCheckBox" name="checkBoxStartWithMoreButtonPushed"/>
+ </item>
+ <item row="7" column="0">
+ <widget class="QLabel" name="label_Slider_speed">
+ <property name="text">
+ <string>Limit copy speed to</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QCheckBox" name="minimizeToSystray"/>
+ </item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>At the end of the copy</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="0">
+ <widget class="QCheckBox" name="checkBox_limitSpeed">
+ <property name="text">
+ <string>Limit copy speed to</string>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="1" colspan="2">
+ <widget class="QSpinBox" name="limitSpeed">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="suffix">
+ <string> KB/s</string>
+ </property>
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>999999</number>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0">
+ <widget class="QLabel" name="labelStartWithMoreButtonPushed">
+ <property name="text">
+ <string>Start with the &quot;more button&quot; pushed</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_startMinimized">
+ <property name="text">
+ <string>Start minimized</string>
+ </property>
+ </widget>
+ </item>
+ <item row="9" column="2">
+ <spacer name="verticalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>133</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="labelAlwaysOnTop">
+ <property name="text">
+ <string>Always on top</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="labelSavePosition">
+ <property name="text">
+ <string>Position at start</string>
+ </property>
+ </widget>
+ </item>
+ <item row="6" column="1" colspan="2">
+ <widget class="QComboBox" name="comboBox_copyEnd">
+ <item>
+ <property name="text">
+ <string notr="true">Don't close if errors are found</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Never close</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string notr="true">Always close</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item row="7" column="1" colspan="2">
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QSlider" name="SliderSpeed">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Fixed">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximum">
+ <number>5</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_SpeedMaxValue">
+ <property name="text">
+ <string notr="true">Unlimited</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="1" column="1">
+ <widget class="QCheckBox" name="dark">
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>Dark UI</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1">
+ <widget class="QComboBox" name="savePosition">
+ <item>
+ <property name="text">
+ <string>Default</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Save as previous</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>At Center</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="page_2">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>509</width>
+ <height>283</height>
+ </rect>
+ </property>
+ <attribute name="label">
+ <string>Informations</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
+ <widget class="QLabel" name="labelShowSpeedAsMain">
+ <property name="text">
+ <string>Show speed as main information</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QCheckBox" name="checkBoxShowSpeed"/>
+ </item>
+ <item row="1" column="2">
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>529</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="page_3">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>509</width>
+ <height>283</height>
+ </rect>
+ </property>
+ <attribute name="label">
+ <string>Display</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0">
+ <widget class="QLabel" name="labelSpeedWithProgressBar">
+ <property name="text">
+ <string>Speed with progress bar</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QCheckBox" name="speedWithProgressBar"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="labelDualProgression">
+ <property name="text">
+ <string>Show dual progression</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QCheckBox" name="showDualProgression"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Show progression in the title</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QCheckBox" name="showProgressionInTheTitle"/>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="labelProgressionColor">
+ <property name="text">
+ <string>Progression color</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QFrame" name="frameProgressionColor">
+ <property name="minimumSize">
+ <size>
+ <width>225</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>225</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Click to edit the color</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="leftMargin">
+ <number>0</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>0</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QPushButton" name="progressColorWrite">
+ <property name="minimumSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="progressColorRead">
+ <property name="minimumSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="progressColorRemaining">
+ <property name="minimumSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="iconSize">
+ <size>
+ <width>75</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="flat">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="4" column="0">
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>455</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>checkBox_limitSpeed</sender>
+ <signal>clicked(bool)</signal>
+ <receiver>limitSpeed</receiver>
+ <slot>setEnabled(bool)</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>109</x>
+ <y>144</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>199</x>
+ <y>144</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/plugins/Themes/README.md b/plugins/Themes/README.md
index ab63693..ab63693 100644..100755
--- a/plugins/Themes/README.md
+++ b/plugins/Themes/README.md
diff --git a/plugins/Themes/Supercopier/README.md b/plugins/Themes/Supercopier/README.md
index e0bf248..e0bf248 100644..100755
--- a/plugins/Themes/Supercopier/README.md
+++ b/plugins/Themes/Supercopier/README.md
diff --git a/plugins/Themes/Supercopier/informations.xml b/plugins/Themes/Supercopier/informations.xml
index 7f61b17..77c7ccd 100644..100755
--- a/plugins/Themes/Supercopier/informations.xml
+++ b/plugins/Themes/Supercopier/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[Supercopier style for Ultracopier]]></description>
<description xml:lang="fr"><![CDATA[Style supercopier pour Ultracopier]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>Supercopier</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/Themes/Supercopier/interface.pro b/plugins/Themes/Supercopier/interface.pro
index 1b0ef2e..647df4b 100644..100755
--- a/plugins/Themes/Supercopier/interface.pro
+++ b/plugins/Themes/Supercopier/interface.pro
@@ -1,6 +1,8 @@
DEFINES+=SUPERCOPIER
include($$PWD/../Oxygen/interfaceInclude.pri)
+TEMPLATE = lib
+CONFIG += plugin
!CONFIG(static) {
RESOURCES += \
diff --git a/plugins/Themes/Supercopier/interface.pro.user.4.8-pre1 b/plugins/Themes/Supercopier/interface.pro.user.4.8-pre1
new file mode 100755
index 0000000..1c6f64c
--- /dev/null
+++ b/plugins/Themes/Supercopier/interface.pro.user.4.8-pre1
@@ -0,0 +1,328 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.6.2, 2018-08-21T19:00:40. -->
+<qtcreator>
+ <data>
+ <variable>EnvironmentId</variable>
+ <value type="QByteArray">{74ab603f-f657-4135-92cf-c93af71b2f91}</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.ActiveTarget</variable>
+ <value type="int">0</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.EditorSettings</variable>
+ <valuemap type="QVariantMap">
+ <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+ <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+ <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+ <value type="QString" key="language">Cpp</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+ </valuemap>
+ </valuemap>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
+ <value type="QString" key="language">QmlJS</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
+ </valuemap>
+ </valuemap>
+ <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
+ <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+ <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+ <value type="int" key="EditorConfiguration.IndentSize">4</value>
+ <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+ <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+ <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+ <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+ <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+ <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+ <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+ <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+ <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+ <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+ <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+ <value type="int" key="EditorConfiguration.TabSize">8</value>
+ <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+ <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+ <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+ <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+ <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+ <value type="bool" key="EditorConfiguration.inEntireDocument">true</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.PluginSettings</variable>
+ <valuemap type="QVariantMap"/>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.0</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop llvm</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop llvm</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{ba4f29d9-73b8-4c83-a619-0b3a4cb9295e}</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/plugins/Themes/build-interface-Desktop_llvm-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/plugins/Themes/build-interface-Desktop_llvm-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/plugins/Themes/build-interface-Desktop_llvm-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy locally</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+ <value type="int">0</value>
+ <value type="int">1</value>
+ <value type="int">2</value>
+ <value type="int">3</value>
+ <value type="int">4</value>
+ <value type="int">5</value>
+ <value type="int">6</value>
+ <value type="int">7</value>
+ <value type="int">8</value>
+ <value type="int">9</value>
+ <value type="int">10</value>
+ <value type="int">11</value>
+ <value type="int">12</value>
+ <value type="int">13</value>
+ <value type="int">14</value>
+ </valuelist>
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Arguments"></value>
+ <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.Executable"></value>
+ <value type="QString" key="ProjectExplorer.CustomExecutableRunConfiguration.WorkingDirectory">%{buildDir}</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Custom Executable</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.CustomExecutableRunConfiguration</value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.TargetCount</variable>
+ <value type="int">1</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+ <value type="int">18</value>
+ </data>
+ <data>
+ <variable>Version</variable>
+ <value type="int">18</value>
+ </data>
+</qtcreator>
diff --git a/plugins/Themes/Supercopier/interfaceResources.qrc b/plugins/Themes/Supercopier/interfaceResources.qrc
index d8990aa..d8990aa 100644..100755
--- a/plugins/Themes/Supercopier/interfaceResources.qrc
+++ b/plugins/Themes/Supercopier/interfaceResources.qrc
diff --git a/plugins/Themes/Supercopier/interfaceResources_unix.qrc b/plugins/Themes/Supercopier/interfaceResources_unix.qrc
index 2cf979f..2cf979f 100644..100755
--- a/plugins/Themes/Supercopier/interfaceResources_unix.qrc
+++ b/plugins/Themes/Supercopier/interfaceResources_unix.qrc
diff --git a/plugins/Themes/Supercopier/interfaceResources_windows.qrc b/plugins/Themes/Supercopier/interfaceResources_windows.qrc
index abbedba..abbedba 100644..100755
--- a/plugins/Themes/Supercopier/interfaceResources_windows.qrc
+++ b/plugins/Themes/Supercopier/interfaceResources_windows.qrc
diff --git a/plugins/Themes/Supercopier/resources/SystemTrayIcon/add.png b/plugins/Themes/Supercopier/resources/SystemTrayIcon/add.png
index d41fce6..d41fce6 100644..100755
--- a/plugins/Themes/Supercopier/resources/SystemTrayIcon/add.png
+++ b/plugins/Themes/Supercopier/resources/SystemTrayIcon/add.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/SystemTrayIcon/exit.png b/plugins/Themes/Supercopier/resources/SystemTrayIcon/exit.png
index 9599bba..9599bba 100644..100755
--- a/plugins/Themes/Supercopier/resources/SystemTrayIcon/exit.png
+++ b/plugins/Themes/Supercopier/resources/SystemTrayIcon/exit.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/SystemTrayIcon/informations.png b/plugins/Themes/Supercopier/resources/SystemTrayIcon/informations.png
index 86c9ba6..86c9ba6 100644..100755
--- a/plugins/Themes/Supercopier/resources/SystemTrayIcon/informations.png
+++ b/plugins/Themes/Supercopier/resources/SystemTrayIcon/informations.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/SystemTrayIcon/options.png b/plugins/Themes/Supercopier/resources/SystemTrayIcon/options.png
index cf699d5..cf699d5 100644..100755
--- a/plugins/Themes/Supercopier/resources/SystemTrayIcon/options.png
+++ b/plugins/Themes/Supercopier/resources/SystemTrayIcon/options.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Unix.png b/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Unix.png
index be2ba20..be2ba20 100644..100755
--- a/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Unix.png
+++ b/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Unix.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Windows.png b/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Windows.png
index 9c597af..9c597af 100644..100755
--- a/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Windows.png
+++ b/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Windows.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png b/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
index be2ba20..be2ba20 100644..100755
--- a/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
+++ b/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png b/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
index 9c597af..9c597af 100644..100755
--- a/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
+++ b/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Unix.png b/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Unix.png
index 4da8cc0..4da8cc0 100644..100755
--- a/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Unix.png
+++ b/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Unix.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Windows.png b/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Windows.png
index 8bfbcf9..8bfbcf9 100644..100755
--- a/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Windows.png
+++ b/plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Windows.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/add.png b/plugins/Themes/Supercopier/resources/add.png
index af8a401..af8a401 100644..100755
--- a/plugins/Themes/Supercopier/resources/add.png
+++ b/plugins/Themes/Supercopier/resources/add.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/cancel.png b/plugins/Themes/Supercopier/resources/cancel.png
index 1e7579c..1e7579c 100644..100755
--- a/plugins/Themes/Supercopier/resources/cancel.png
+++ b/plugins/Themes/Supercopier/resources/cancel.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/export-transfer-list.png b/plugins/Themes/Supercopier/resources/export-transfer-list.png
index 2bcc455..2bcc455 100644..100755
--- a/plugins/Themes/Supercopier/resources/export-transfer-list.png
+++ b/plugins/Themes/Supercopier/resources/export-transfer-list.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/import-transfer-list.png b/plugins/Themes/Supercopier/resources/import-transfer-list.png
index d208342..d208342 100644..100755
--- a/plugins/Themes/Supercopier/resources/import-transfer-list.png
+++ b/plugins/Themes/Supercopier/resources/import-transfer-list.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/main.png b/plugins/Themes/Supercopier/resources/main.png
index 9bec399..9bec399 100644..100755
--- a/plugins/Themes/Supercopier/resources/main.png
+++ b/plugins/Themes/Supercopier/resources/main.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/moveDown.png b/plugins/Themes/Supercopier/resources/moveDown.png
index 7f4ff27..7f4ff27 100644..100755
--- a/plugins/Themes/Supercopier/resources/moveDown.png
+++ b/plugins/Themes/Supercopier/resources/moveDown.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/moveUp.png b/plugins/Themes/Supercopier/resources/moveUp.png
index 9397b76..9397b76 100644..100755
--- a/plugins/Themes/Supercopier/resources/moveUp.png
+++ b/plugins/Themes/Supercopier/resources/moveUp.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/player_end.png b/plugins/Themes/Supercopier/resources/player_end.png
index 9730302..9730302 100644..100755
--- a/plugins/Themes/Supercopier/resources/player_end.png
+++ b/plugins/Themes/Supercopier/resources/player_end.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/player_pause.png b/plugins/Themes/Supercopier/resources/player_pause.png
index 429ae43..429ae43 100644..100755
--- a/plugins/Themes/Supercopier/resources/player_pause.png
+++ b/plugins/Themes/Supercopier/resources/player_pause.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/player_play.png b/plugins/Themes/Supercopier/resources/player_play.png
index a28ac73..a28ac73 100644..100755
--- a/plugins/Themes/Supercopier/resources/player_play.png
+++ b/plugins/Themes/Supercopier/resources/player_play.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/progressbarleft.png b/plugins/Themes/Supercopier/resources/progressbarleft.png
index bbee9c8..bbee9c8 100644..100755
--- a/plugins/Themes/Supercopier/resources/progressbarleft.png
+++ b/plugins/Themes/Supercopier/resources/progressbarleft.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/progressbarright.png b/plugins/Themes/Supercopier/resources/progressbarright.png
index 93e5781..93e5781 100644..100755
--- a/plugins/Themes/Supercopier/resources/progressbarright.png
+++ b/plugins/Themes/Supercopier/resources/progressbarright.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/putOnBottom.png b/plugins/Themes/Supercopier/resources/putOnBottom.png
index 9ac517c..9ac517c 100644..100755
--- a/plugins/Themes/Supercopier/resources/putOnBottom.png
+++ b/plugins/Themes/Supercopier/resources/putOnBottom.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/putOnTop.png b/plugins/Themes/Supercopier/resources/putOnTop.png
index 5682829..5682829 100644..100755
--- a/plugins/Themes/Supercopier/resources/putOnTop.png
+++ b/plugins/Themes/Supercopier/resources/putOnTop.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/remove.png b/plugins/Themes/Supercopier/resources/remove.png
index 3a2a9f1..3a2a9f1 100644..100755
--- a/plugins/Themes/Supercopier/resources/remove.png
+++ b/plugins/Themes/Supercopier/resources/remove.png
Binary files differ
diff --git a/plugins/Themes/Supercopier/resources/search.png b/plugins/Themes/Supercopier/resources/search.png
index 567f498..567f498 100644..100755
--- a/plugins/Themes/Supercopier/resources/search.png
+++ b/plugins/Themes/Supercopier/resources/search.png
Binary files differ
diff --git a/plugins/static-plugins-oxygen.qrc b/plugins/static-plugins-oxygen.qrc
index 21b4be0..804f75e 100644..100755
--- a/plugins/static-plugins-oxygen.qrc
+++ b/plugins/static-plugins-oxygen.qrc
@@ -1,6 +1,5 @@
<RCC>
<qresource prefix="/">
- <file>Themes/Oxygen/informations.xml</file>
- <file>Themes/Oxygen/Languages/fr/translation.qm</file>
+ <file>Themes/Oxygen2/informations.xml</file>
</qresource>
</RCC>
diff --git a/plugins/static-plugins-windows.qrc b/plugins/static-plugins-windows.qrc
index 6ddcdc0..59ba10d 100644..100755
--- a/plugins/static-plugins-windows.qrc
+++ b/plugins/static-plugins-windows.qrc
@@ -1,6 +1,5 @@
<RCC>
<qresource prefix="/">
<file>PluginLoader/catchcopy-v0002/informations.xml</file>
- <file>PluginLoader/catchcopy-v0002/Languages/fr/translation.qm</file>
</qresource>
</RCC>
diff --git a/plugins/static-plugins.qrc b/plugins/static-plugins.qrc
index b250e7c..a582439 100644..100755
--- a/plugins/static-plugins.qrc
+++ b/plugins/static-plugins.qrc
@@ -1,12 +1,7 @@
<RCC>
<qresource prefix="/">
- <file>CopyEngine/Ultracopier/informations.xml</file>
- <file>CopyEngine/Ultracopier/Languages/fr/translation.qm</file>
- <file>Languages/fr/informations.xml</file>
- <file>Languages/fr/flag.png</file>
- <file>Languages/fr/translation.qm</file>
+ <file>CopyEngine/Ultracopier-Spec/informations.xml</file>
<file>Listener/catchcopy-v0002/informations.xml</file>
- <file>Themes/Oxygen/informations.xml</file>
- <file>Themes/Oxygen/Languages/fr/translation.qm</file>
+ <file>Themes/Oxygen2/informations.xml</file>
</qresource>
</RCC>
diff --git a/recipe-haiku.txt b/recipe-haiku.txt
new file mode 100755
index 0000000..b96a9f9
--- /dev/null
+++ b/recipe-haiku.txt
@@ -0,0 +1,60 @@
+SUMMARY="A replacement for files copy dialogs"
+DESCRIPTION="Ultracopier is free and open source software licensed under \
+GPL3 that acts as a replacement for files copy dialogs."
+HOMEPAGE="https://ultracopier.first-world.info/"
+COPYRIGHT="2012-2019 BRULE Herman Jacques Roger (alpha_one_x86)"
+LICENSE="GNU GPL v3"
+REVISION="1"
+srcGitRev="a59a486b8b67f8f26c4849e9fbe74fd1e8fe6b90"
+SOURCE_URI="https://github.com/alphaonex86/Ultracopier/archive/$srcGitRev.tar.gz"
+CHECKSUM_SHA256="780bac14291c6bc69ead080643fe5773bb9dece6bc551d3715bb29f859cd09bc"
+SOURCE_FILENAME="ultracopier-$portVersion.tar.gz"
+SOURCE_DIR="Ultracopier-$srcGitRev"
+
+ARCHITECTURES="!x86_gcc2 ?x86 x86_64"
+SECONDARY_ARCHITECTURES="x86"
+
+PROVIDES="
+ ultracopier$secondaryArchSuffix = $portVersion
+ app:UltraCopier$secondaryArchSuffix
+ "
+REQUIRES="
+ haiku$secondaryArchSuffix
+ lib:libGL$secondaryArchSuffix
+ lib:libQt5Core$secondaryArchSuffix
+ lib:libQt5Gui$secondaryArchSuffix
+ lib:libQt5Network$secondaryArchSuffix
+ lib:libQt5Widgets$secondaryArchSuffix
+ lib:libQt5Xml$secondaryArchSuffix
+ "
+
+BUILD_REQUIRES="
+ haiku${secondaryArchSuffix}_devel
+ devel:libGL$secondaryArchSuffix
+ devel:libQt5Core$secondaryArchSuffix
+ devel:libQt5Gui$secondaryArchSuffix
+ devel:libQt5Network$secondaryArchSuffix
+ devel:libQt5Widgets$secondaryArchSuffix
+ devel:libQt5Xml$secondaryArchSuffix
+ "
+BUILD_PREREQUIRES="
+ cmd:find
+ cmd:gcc$secondaryArchSuffix
+ cmd:lrelease$secondaryArchSuffix >= 5
+ cmd:make
+ cmd:qmake$secondaryArchSuffix >= 5
+ "
+
+BUILD()
+{
+ find ./ -name '*.ts' -exec lrelease {} \;
+ qmake ultracopier.pro
+ make $jobArgs
+}
+
+INSTALL()
+{
+ mkdir -p $appsDir
+ cp ultracopier $appsDir/UltraCopier
+ addAppDeskbarSymlink $appsDir/UltraCopier
+}
diff --git a/resources/Languages/en/informations.xml b/resources/Languages/en/informations.xml
index da90cd5..04bd6f8 100644
--- a/resources/Languages/en/informations.xml
+++ b/resources/Languages/en/informations.xml
@@ -12,7 +12,7 @@
<!-- Detailed description -->
<description xml:lang="en"><![CDATA[File to define all English language related, Ultracopier is written in English, then not translation file needed]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>en</name>
<dependencies><![CDATA[
diff --git a/resources/Languages/en/translation.qm b/resources/Languages/en/translation.qm
new file mode 100644
index 0000000..d925dd6
--- /dev/null
+++ b/resources/Languages/en/translation.qm
Binary files differ
diff --git a/resources/Languages/en/translation.ts b/resources/Languages/en/translation.ts
index 4ec7788..e7b74e2 100644
--- a/resources/Languages/en/translation.ts
+++ b/resources/Languages/en/translation.ts
@@ -2,41 +2,6 @@
<!DOCTYPE TS>
<TS version="2.1" language="en">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/AvancedQFile.cpp" line="26"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/AvancedQFile.cpp" line="57"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CliParser</name>
<message>
<location filename="../../../CliParser.cpp" line="37"/>
@@ -128,106 +93,91 @@
<context>
<name>CopyEngine</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="429"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="451"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="438"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="462"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="484"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="473"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="508"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="732"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1062"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1065"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1070"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1074"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="976"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="979"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="984"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1063"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1067"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1071"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1075"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="977"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="981"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="985"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1066"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1068"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1080"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="982"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1072"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1076"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1077"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1078"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1079"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngine.cpp" line="1185"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -235,85 +185,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="427"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="430"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="435"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="428"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="432"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="436"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="433"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -321,30 +261,30 @@
<context>
<name>CopyEngineManager</name>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="233"/>
+ <location filename="../../../CopyEngineManager.cpp" line="234"/>
<source>Cannot find any copy engine with move support</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="261"/>
+ <location filename="../../../CopyEngineManager.cpp" line="262"/>
<source>This copy engine does not support move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="238"/>
+ <location filename="../../../CopyEngineManager.cpp" line="239"/>
<source>Cannot find any compatible engine!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyEngineManager.cpp" line="275"/>
+ <location filename="../../../CopyEngineManager.cpp" line="279"/>
<source>Cannot find any engine with this name: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -352,12 +292,12 @@
<context>
<name>CopyListener</name>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../CopyListener.cpp" line="159"/>
+ <location filename="../../../CopyListener.cpp" line="160"/>
<source>Error during the reception of the copy/move list
%1</source>
<translation type="unfinished"></translation>
@@ -366,72 +306,72 @@
<context>
<name>Core</name>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="117"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="217"/>
- <location filename="../../../Core.cpp" line="231"/>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="127"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="227"/>
+ <location filename="../../../Core.cpp" line="241"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="46"/>
- <location filename="../../../Core.cpp" line="143"/>
- <location filename="../../../Core.cpp" line="158"/>
- <location filename="../../../Core.cpp" line="178"/>
- <location filename="../../../Core.cpp" line="192"/>
- <location filename="../../../Core.cpp" line="201"/>
- <location filename="../../../Core.cpp" line="210"/>
- <location filename="../../../Core.cpp" line="231"/>
+ <location filename="../../../Core.cpp" line="56"/>
+ <location filename="../../../Core.cpp" line="153"/>
+ <location filename="../../../Core.cpp" line="168"/>
+ <location filename="../../../Core.cpp" line="188"/>
+ <location filename="../../../Core.cpp" line="202"/>
+ <location filename="../../../Core.cpp" line="211"/>
+ <location filename="../../../Core.cpp" line="220"/>
+ <location filename="../../../Core.cpp" line="241"/>
<source>Unable to get a copy engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Group window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="94"/>
+ <location filename="../../../Core.cpp" line="104"/>
<source>Do you want group the transfer with another actual running transfer?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="117"/>
+ <location filename="../../../Core.cpp" line="127"/>
<source>Unable to get a engine instance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="217"/>
+ <location filename="../../../Core.cpp" line="227"/>
<source>The argument for the mode is not valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1145"/>
+ <location filename="../../../Core.cpp" line="1185"/>
<source>Do you want to copy? If no, it will be moved.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="265"/>
- <location filename="../../../Core.cpp" line="402"/>
+ <location filename="../../../Core.cpp" line="275"/>
+ <location filename="../../../Core.cpp" line="413"/>
<source>Unable to load the interface, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="407"/>
+ <location filename="../../../Core.cpp" line="418"/>
<source>Unable to load the copy engine, copy aborted</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../Core.cpp" line="1144"/>
+ <location filename="../../../Core.cpp" line="1184"/>
<source>Transfer mode</source>
<translation type="unfinished"></translation>
</message>
@@ -439,27 +379,27 @@
<context>
<name>DiskSpace</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/DiskSpace.ui" line="14"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="14"/>
<source>Disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/DiskSpace.ui" line="24"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="24"/>
<source>You need more space on this drive to finish this transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/DiskSpace.ui" line="49"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="49"/>
<source>Continue</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/DiskSpace.ui" line="56"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/DiskSpace.ui" line="56"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/DiskSpace.cpp" line="23"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/DiskSpace.cpp" line="23"/>
<source>Drives %1 have %2 available but need %3</source>
<translation type="unfinished"></translation>
</message>
@@ -467,257 +407,262 @@
<context>
<name>FacilityEngine</name>
<message>
- <location filename="../../../FacilityEngine.cpp" line="38"/>
+ <location filename="../../../FacilityEngine.cpp" line="43"/>
<source>s</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="39"/>
+ <location filename="../../../FacilityEngine.cpp" line="44"/>
<source>Too big</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="40"/>
+ <location filename="../../../FacilityEngine.cpp" line="45"/>
<source>B</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="41"/>
+ <location filename="../../../FacilityEngine.cpp" line="46"/>
<source>KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="42"/>
+ <location filename="../../../FacilityEngine.cpp" line="47"/>
<source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="43"/>
+ <location filename="../../../FacilityEngine.cpp" line="48"/>
<source>GB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="44"/>
+ <location filename="../../../FacilityEngine.cpp" line="49"/>
<source>TB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="45"/>
+ <location filename="../../../FacilityEngine.cpp" line="50"/>
<source>PB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="46"/>
+ <location filename="../../../FacilityEngine.cpp" line="51"/>
<source>EB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="47"/>
+ <location filename="../../../FacilityEngine.cpp" line="52"/>
<source>ZB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="48"/>
+ <location filename="../../../FacilityEngine.cpp" line="53"/>
<source>YB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="49"/>
+ <location filename="../../../FacilityEngine.cpp" line="54"/>
<source>Less than %10 seconds</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="50"/>
+ <location filename="../../../FacilityEngine.cpp" line="55"/>
<source>About %10 seconds remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="51"/>
+ <location filename="../../../FacilityEngine.cpp" line="56"/>
<source>About %1 minutes remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="52"/>
+ <location filename="../../../FacilityEngine.cpp" line="57"/>
<source>About %1 hours remaining</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="54"/>
+ <location filename="../../../FacilityEngine.cpp" line="59"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="56"/>
+ <location filename="../../../FacilityEngine.cpp" line="61"/>
<source>Copy</source>
<extracomment>a copy</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="58"/>
+ <location filename="../../../FacilityEngine.cpp" line="63"/>
<source>Transfer</source>
<extracomment>a transfer</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="60"/>
+ <location filename="../../../FacilityEngine.cpp" line="65"/>
<source>Move</source>
<extracomment>a move</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="61"/>
+ <location filename="../../../FacilityEngine.cpp" line="66"/>
<source>Start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="62"/>
+ <location filename="../../../FacilityEngine.cpp" line="67"/>
<source>Pause</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="63"/>
+ <location filename="../../../FacilityEngine.cpp" line="68"/>
<source>Resume</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="64"/>
- <location filename="../../../FacilityEngine.cpp" line="78"/>
+ <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="84"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="65"/>
+ <location filename="../../../FacilityEngine.cpp" line="70"/>
<source>Unlimited</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="66"/>
+ <location filename="../../../FacilityEngine.cpp" line="71"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="67"/>
+ <location filename="../../../FacilityEngine.cpp" line="72"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="68"/>
+ <location filename="../../../FacilityEngine.cpp" line="73"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="69"/>
+ <location filename="../../../FacilityEngine.cpp" line="74"/>
<source>Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="70"/>
+ <location filename="../../../FacilityEngine.cpp" line="75"/>
<source>Target</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="71"/>
- <location filename="../../../FacilityEngine.cpp" line="75"/>
+ <location filename="../../../FacilityEngine.cpp" line="76"/>
+ <location filename="../../../FacilityEngine.cpp" line="80"/>
<source>Time remaining:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="72"/>
+ <location filename="../../../FacilityEngine.cpp" line="77"/>
<source>Listing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="73"/>
+ <location filename="../../../FacilityEngine.cpp" line="78"/>
<source>Copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="74"/>
+ <location filename="../../../FacilityEngine.cpp" line="79"/>
<source>Listing and copying</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="77"/>
+ <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <source>Remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../FacilityEngine.cpp" line="83"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="79"/>
+ <location filename="../../../FacilityEngine.cpp" line="85"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="80"/>
+ <location filename="../../../FacilityEngine.cpp" line="86"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="81"/>
+ <location filename="../../../FacilityEngine.cpp" line="87"/>
<source>Overwrite if the last modification dates are different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="82"/>
+ <location filename="../../../FacilityEngine.cpp" line="88"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="83"/>
+ <location filename="../../../FacilityEngine.cpp" line="89"/>
<source>Put to the end of the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="84"/>
+ <location filename="../../../FacilityEngine.cpp" line="90"/>
<source>Select source directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="85"/>
+ <location filename="../../../FacilityEngine.cpp" line="91"/>
<source>Select destination directory</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="86"/>
+ <location filename="../../../FacilityEngine.cpp" line="92"/>
<source>Internal error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="87"/>
+ <location filename="../../../FacilityEngine.cpp" line="93"/>
<source>Select one or more files to open</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="88"/>
+ <location filename="../../../FacilityEngine.cpp" line="94"/>
<source>All files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="89"/>
+ <location filename="../../../FacilityEngine.cpp" line="95"/>
<source>Save transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="90"/>
+ <location filename="../../../FacilityEngine.cpp" line="96"/>
<source>Open transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="91"/>
+ <location filename="../../../FacilityEngine.cpp" line="97"/>
<source>Transfer list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="92"/>
+ <location filename="../../../FacilityEngine.cpp" line="98"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="93"/>
+ <location filename="../../../FacilityEngine.cpp" line="99"/>
<source>Not supported on this platform</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../FacilityEngine.cpp" line="94"/>
+ <location filename="../../../FacilityEngine.cpp" line="100"/>
<source>Completed in %1</source>
<translation type="unfinished"></translation>
</message>
@@ -725,12 +670,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp" line="54"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp" line="57"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -738,22 +683,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp" line="137"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp" line="144"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp" line="228"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -761,22 +706,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -784,77 +729,77 @@
<context>
<name>FilterRules</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="17"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="17"/>
<source>Filters dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="33"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="33"/>
<source>Search:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="43"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="43"/>
<source>Search type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="51"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="51"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="56"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="56"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="61"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="61"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="69"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="69"/>
<source>Apply on:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="77"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="77"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="82"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="82"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="87"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="87"/>
<source>File and folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="95"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="95"/>
<source>Whole string must match</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="102"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="102"/>
<source>Checking</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="108"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="108"/>
<source>The regex is valid</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="115"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="115"/>
<source>Test string:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FilterRules.ui" line="125"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui" line="125"/>
<source>The test string matches with the regex</source>
<translation type="unfinished"></translation>
</message>
@@ -862,60 +807,60 @@
<context>
<name>Filters</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.ui" line="14"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.ui" line="14"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.ui" line="30"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.ui" line="93"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.ui" line="105"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="93"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="131"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="94"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="96"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="134"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="97"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="99"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="137"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="100"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="107"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="145"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="108"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="110"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="148"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="111"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="116"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="154"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="216"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/Filters.cpp" line="255"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="117"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="155"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="217"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -923,27 +868,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -951,7 +896,7 @@
<context>
<name>HelpDialog</name>
<message>
- <location filename="../../../HelpDialog.cpp" line="38"/>
+ <location filename="../../../HelpDialog.cpp" line="36"/>
<source>About Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -980,82 +925,77 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="128"/>
+ <location filename="../../../HelpDialog.ui" line="131"/>
<source>About Qt</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="151"/>
+ <location filename="../../../HelpDialog.ui" line="154"/>
<source>Check update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="158"/>
+ <location filename="../../../HelpDialog.ui" line="161"/>
<source>Do a crash</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="165"/>
+ <location filename="../../../HelpDialog.ui" line="168"/>
<source>Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.ui" line="172"/>
+ <location filename="../../../HelpDialog.ui" line="175"/>
<source>Close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="36"/>
- <source>About Supercopier</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../HelpDialog.cpp" line="83"/>
+ <location filename="../../../HelpDialog.cpp" line="80"/>
<source>For http://portableapps.com/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="86"/>
+ <location filename="../../../HelpDialog.cpp" line="83"/>
<source>Portable and all in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="88"/>
+ <location filename="../../../HelpDialog.cpp" line="85"/>
<source>Portable version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="93"/>
+ <location filename="../../../HelpDialog.cpp" line="90"/>
<source>All in one version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="95"/>
+ <location filename="../../../HelpDialog.cpp" line="92"/>
<source>Normal version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="112"/>
+ <location filename="../../../HelpDialog.cpp" line="109"/>
<source>http://ultracopier.first-world.info/</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="145"/>
+ <location filename="../../../HelpDialog.cpp" line="142"/>
<source>Update checking...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="151"/>
+ <location filename="../../../HelpDialog.cpp" line="148"/>
<source>Update: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="157"/>
+ <location filename="../../../HelpDialog.cpp" line="154"/>
<source>No update</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../HelpDialog.cpp" line="118"/>
+ <location filename="../../../HelpDialog.cpp" line="115"/>
<source>http://ultracopier.first-world.info/download.html</source>
<translation type="unfinished"></translation>
</message>
@@ -1063,49 +1003,49 @@ This version is compiled as version: %1.</source>
<context>
<name>ListThread</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ListThread.cpp" line="1487"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ListThread.cpp" line="2419"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="242"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ListThread.cpp" line="1494"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ListThread.cpp" line="2426"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="249"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ListThread.cpp" line="1510"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ListThread.cpp" line="1517"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ListThread.cpp" line="1526"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ListThread.cpp" line="1535"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ListThread.cpp" line="1541"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ListThread.cpp" line="1604"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ListThread.cpp" line="1612"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1121,12 +1061,12 @@ This version is compiled as version: %1.</source>
<context>
<name>LocalListener</name>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../LocalListener.cpp" line="162"/>
+ <location filename="../../../LocalListener.cpp" line="168"/>
<source>Timeout while recomposing data from connected clients</source>
<translation type="unfinished"></translation>
</message>
@@ -1155,36 +1095,42 @@ This version is compiled as version: %1.</source>
<context>
<name>MkPath</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/MkPath.cpp" line="93"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/MkPath.cpp" line="276"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp" line="124"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/MkPath.cpp" line="142"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp" line="187"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/MkPath.cpp" line="155"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/MkPath.cpp" line="183"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/MkPath.cpp" line="206"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/MkPath.cpp" line="233"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>OSSpecific</name>
@@ -1194,37 +1140,47 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="58"/>
+ <location filename="../../../OSSpecific.ui" line="119"/>
+ <source>Classic</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="124"/>
+ <source>Modern</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OSSpecific.ui" line="177"/>
<source>Don&apos;t show again</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.ui" line="83"/>
+ <location filename="../../../OSSpecific.ui" line="202"/>
<source>Ok</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="23"/>
- <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
+ <location filename="../../../OSSpecific.cpp" line="29"/>
+ <source>The replacement of default copy/move system is not supported by the file manager (Dolphin, Nautilus, ...).&lt;br /&gt;Ask the developer of your file manager to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="25"/>
+ <location filename="../../../OSSpecific.cpp" line="31"/>
<source>Reboot the system if previously had similar software installed (like Teracopy, Supercopier or an earlier version of Ultracopier).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="27"/>
+ <location filename="../../../OSSpecific.cpp" line="33"/>
<source>The replacement of default copy/move system is not supported and blocked by finder of Mac OS X.&lt;br /&gt;You need do the copy/move manually by right clicking on the system tray icon near the clock (not the dock icon).</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="29"/>
+ <location filename="../../../OSSpecific.cpp" line="35"/>
<source>The replacement of default copy/move system should be not supported by the file manager.&lt;br /&gt;Ask to the developer to support it.&lt;br /&gt;You need do the copy/move manually.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OSSpecific.cpp" line="32"/>
+ <location filename="../../../OSSpecific.cpp" line="38"/>
<source>Consider Supercopier as deprecated, prefer Ultracopier</source>
<translation type="unfinished"></translation>
</message>
@@ -1249,35 +1205,35 @@ This version is compiled as version: %1.</source>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="75"/>
- <location filename="../../../OptionDialog.ui" line="335"/>
- <location filename="../../../OptionDialog.cpp" line="283"/>
+ <location filename="../../../OptionDialog.ui" line="366"/>
+ <location filename="../../../OptionDialog.cpp" line="290"/>
<source>Copy engine</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="80"/>
- <location filename="../../../OptionDialog.ui" line="348"/>
- <location filename="../../../OptionDialog.cpp" line="284"/>
+ <location filename="../../../OptionDialog.ui" line="379"/>
+ <location filename="../../../OptionDialog.cpp" line="291"/>
<source>Listener</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="85"/>
- <location filename="../../../OptionDialog.ui" line="353"/>
- <location filename="../../../OptionDialog.cpp" line="285"/>
+ <location filename="../../../OptionDialog.ui" line="384"/>
+ <location filename="../../../OptionDialog.cpp" line="292"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="93"/>
- <location filename="../../../OptionDialog.ui" line="358"/>
- <location filename="../../../OptionDialog.cpp" line="286"/>
+ <location filename="../../../OptionDialog.ui" line="389"/>
+ <location filename="../../../OptionDialog.cpp" line="293"/>
<source>Session loader</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../../../OptionDialog.ui" line="101"/>
- <location filename="../../../OptionDialog.ui" line="363"/>
+ <location filename="../../../OptionDialog.ui" line="394"/>
<source>Themes</source>
<translation type="unfinished"></translation>
</message>
@@ -1302,12 +1258,12 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="741"/>
+ <location filename="../../../OptionDialog.ui" line="772"/>
<source>Write directly to the file when it receive a new entry (can produce 50% of lost of performance)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="325"/>
+ <location filename="../../../OptionDialog.ui" line="356"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
@@ -1357,178 +1313,193 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="330"/>
+ <location filename="../../../OptionDialog.ui" line="304"/>
+ <source>default: finish.opus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="311"/>
+ <source>Play</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="320"/>
+ <source>Sound when finish</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../OptionDialog.ui" line="361"/>
<source>Version</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="340"/>
+ <location filename="../../../OptionDialog.ui" line="371"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="371"/>
+ <location filename="../../../OptionDialog.ui" line="402"/>
<source>Plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="390"/>
+ <location filename="../../../OptionDialog.ui" line="421"/>
<source>Add</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="403"/>
+ <location filename="../../../OptionDialog.ui" line="434"/>
<source>Remove</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="413"/>
+ <location filename="../../../OptionDialog.ui" line="444"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="440"/>
+ <location filename="../../../OptionDialog.ui" line="471"/>
<source>Copy engine by order of preference:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="511"/>
+ <location filename="../../../OptionDialog.ui" line="542"/>
<source>Client connected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="567"/>
+ <location filename="../../../OptionDialog.ui" line="598"/>
<source>Themes:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="629"/>
+ <location filename="../../../OptionDialog.ui" line="660"/>
<source>Unable to load the themes plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="679"/>
+ <location filename="../../../OptionDialog.ui" line="710"/>
<source>No option for this plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="710"/>
+ <location filename="../../../OptionDialog.ui" line="741"/>
<source>Write the log file into:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="729"/>
+ <location filename="../../../OptionDialog.ui" line="760"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="744"/>
+ <location filename="../../../OptionDialog.ui" line="775"/>
<source>Synchronized log</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="754"/>
+ <location filename="../../../OptionDialog.ui" line="785"/>
<source>Write the transfers</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="784"/>
+ <location filename="../../../OptionDialog.ui" line="815"/>
<source>Write the errors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="814"/>
+ <location filename="../../../OptionDialog.ui" line="845"/>
<source>Write the folder operations</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="761"/>
+ <location filename="../../../OptionDialog.ui" line="792"/>
<source>The variables are %time%, %source%, %size%, %destination%</source>
<extracomment>%time%, %source%, %size%, %destination% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="791"/>
+ <location filename="../../../OptionDialog.ui" line="822"/>
<source>The variables are %time%, %path%, %size%, %mtime%, %error%</source>
<extracomment>%time%, %path%, %size%, %mtime%, %error% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.ui" line="824"/>
+ <location filename="../../../OptionDialog.ui" line="855"/>
<source>The variables are %path%, %operation%</source>
<extracomment>%path%, %operation% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="190"/>
+ <location filename="../../../OptionDialog.cpp" line="197"/>
<source>Load the theme?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="204"/>
+ <location filename="../../../OptionDialog.cpp" line="211"/>
<source>Load the language?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="291"/>
+ <location filename="../../../OptionDialog.cpp" line="298"/>
<source>Do nothing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="292"/>
+ <location filename="../../../OptionDialog.cpp" line="299"/>
<source>Ask source as folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="293"/>
+ <location filename="../../../OptionDialog.cpp" line="300"/>
<source>Ask sources as files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="294"/>
+ <location filename="../../../OptionDialog.cpp" line="301"/>
<source>Never</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="295"/>
+ <location filename="../../../OptionDialog.cpp" line="302"/>
<source>When source is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="296"/>
+ <location filename="../../../OptionDialog.cpp" line="303"/>
<source>When destination is same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="297"/>
+ <location filename="../../../OptionDialog.cpp" line="304"/>
<source>When source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="298"/>
+ <location filename="../../../OptionDialog.cpp" line="305"/>
<source>When source or destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="299"/>
+ <location filename="../../../OptionDialog.cpp" line="306"/>
<source>Always</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="313"/>
- <location filename="../../../OptionDialog.cpp" line="314"/>
- <location filename="../../../OptionDialog.cpp" line="315"/>
+ <location filename="../../../OptionDialog.cpp" line="320"/>
+ <location filename="../../../OptionDialog.cpp" line="321"/>
+ <location filename="../../../OptionDialog.cpp" line="322"/>
<source>The variables are %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../OptionDialog.cpp" line="945"/>
+ <location filename="../../../OptionDialog.cpp" line="962"/>
<source>Save logs as: </source>
<translation type="unfinished"></translation>
</message>
@@ -1668,7 +1639,7 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="338"/>
+ <location filename="../../../PluginsManager.cpp" line="339"/>
<source>Duplicated plugin found, already loaded!</source>
<translation type="unfinished"></translation>
</message>
@@ -1678,115 +1649,115 @@ This version is compiled as version: %1.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="399"/>
+ <location filename="../../../PluginsManager.cpp" line="400"/>
<source>English text missing in the informations.xml for the tag: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="407"/>
+ <location filename="../../../PluginsManager.cpp" line="408"/>
<source>Tag not found: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="488"/>
+ <location filename="../../../PluginsManager.cpp" line="489"/>
<source>Dependencies part is wrong</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="509"/>
+ <location filename="../../../PluginsManager.cpp" line="510"/>
<source>Dependencies %1 are not satisfied, for plugin: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Remove %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="672"/>
+ <location filename="../../../PluginsManager.cpp" line="673"/>
<source>Are you sure about removing &quot;%1&quot; in version %2?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="683"/>
+ <location filename="../../../PluginsManager.cpp" line="684"/>
<source>Error while the removing plugin, please check the rights on the folder:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="707"/>
+ <location filename="../../../PluginsManager.cpp" line="708"/>
<source>Previous import is in progress...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Open Ultracopier plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="710"/>
+ <location filename="../../../PluginsManager.cpp" line="711"/>
<source>Ultracopier plugin (*.urc)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="820"/>
- <location filename="../../../PluginsManager.cpp" line="833"/>
- <location filename="../../../PluginsManager.cpp" line="852"/>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Plugin loader</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="727"/>
+ <location filename="../../../PluginsManager.cpp" line="728"/>
<source>Unable to open the plugin: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="752"/>
- <location filename="../../../PluginsManager.cpp" line="870"/>
- <location filename="../../../PluginsManager.cpp" line="883"/>
+ <location filename="../../../PluginsManager.cpp" line="753"/>
+ <location filename="../../../PluginsManager.cpp" line="871"/>
+ <location filename="../../../PluginsManager.cpp" line="884"/>
<source>Unable to load the plugin content, please check it: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="820"/>
+ <location filename="../../../PluginsManager.cpp" line="821"/>
<source>Unable to create a folder to install the plugin:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="833"/>
+ <location filename="../../../PluginsManager.cpp" line="834"/>
<source>Unable to create a file to install the plugin:
%1
since:%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="852"/>
+ <location filename="../../../PluginsManager.cpp" line="853"/>
<source>Folder with same name is present, skip the plugin installation:
%1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../PluginsManager.cpp" line="858"/>
- <location filename="../../../PluginsManager.cpp" line="864"/>
- <location filename="../../../PluginsManager.cpp" line="876"/>
+ <location filename="../../../PluginsManager.cpp" line="859"/>
+ <location filename="../../../PluginsManager.cpp" line="865"/>
+ <location filename="../../../PluginsManager.cpp" line="877"/>
<source>Unable to load the plugin content, please check it</source>
<translation type="unfinished"></translation>
</message>
@@ -1858,24 +1829,17 @@ since:%2</source>
<context>
<name>ReadThread</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ReadThread.cpp" line="59"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ReadThread.cpp" line="196"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ReadThread.cpp" line="420"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ReadThread.cpp" line="237"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ReadThread.cpp" line="468"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -1883,198 +1847,183 @@ since:%2</source>
<context>
<name>RenamingRules</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/RenamingRules.ui" line="14"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="14"/>
<source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/RenamingRules.ui" line="35"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="35"/>
<source>First renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/RenamingRules.ui" line="41"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/RenamingRules.ui" line="51"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="51"/>
<source>Second renaming</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/RenamingRules.ui" line="57"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/RenamingRules.ui" line="67"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/RenamingRules.cpp" line="39"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="46"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/RenamingRules.cpp" line="43"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="50"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SystrayIcon</name>
<message>
- <location filename="../../../SystrayIcon.cpp" line="169"/>
+ <location filename="../../../SystrayIcon.cpp" line="171"/>
<source>No copy listener found. Do the copy manually by right click one the system tray icon.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="175"/>
+ <location filename="../../../SystrayIcon.cpp" line="177"/>
<source>Information</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="194"/>
+ <location filename="../../../SystrayIcon.cpp" line="196"/>
<source>Searching information...</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="207"/>
+ <location filename="../../../SystrayIcon.cpp" line="209"/>
<source>Do not replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="212"/>
+ <location filename="../../../SystrayIcon.cpp" line="214"/>
<source>Semi replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="217"/>
+ <location filename="../../../SystrayIcon.cpp" line="219"/>
<source>Replace the explorer copy/move</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>Warning</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="393"/>
+ <location filename="../../../SystrayIcon.cpp" line="398"/>
<source>The action on the systray icon is unknown!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="441"/>
+ <location filename="../../../SystrayIcon.cpp" line="446"/>
<source>&amp;About/Debug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="443"/>
+ <location filename="../../../SystrayIcon.cpp" line="448"/>
<source>&amp;About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="446"/>
+ <location filename="../../../SystrayIcon.cpp" line="451"/>
<source>&amp;Save bug report</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="448"/>
+ <location filename="../../../SystrayIcon.cpp" line="453"/>
<source>&amp;Quit</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="449"/>
+ <location filename="../../../SystrayIcon.cpp" line="454"/>
<source>&amp;Options</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="450"/>
+ <location filename="../../../SystrayIcon.cpp" line="455"/>
<source>&amp;Product key</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>New version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="488"/>
+ <location filename="../../../SystrayIcon.cpp" line="493"/>
<source>Go to the download page:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="515"/>
+ <location filename="../../../SystrayIcon.cpp" line="520"/>
<source>A&amp;dd copy/moving</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="541"/>
+ <location filename="../../../SystrayIcon.cpp" line="546"/>
<source>Add &amp;copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="542"/>
+ <location filename="../../../SystrayIcon.cpp" line="547"/>
<source>Add &amp;transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../SystrayIcon.cpp" line="543"/>
+ <location filename="../../../SystrayIcon.cpp" line="548"/>
<source>Add &amp;move</source>
<translation type="unfinished"></translation>
</message>
@@ -2082,68 +2031,56 @@ since:%2</source>
<context>
<name>Themes</name>
<message>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="303"/>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="320"/>
- <source>%1 is deprecated, Use %2</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="306"/>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="323"/>
- <source>This will be the last version for Mac, but you can compile from source</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="325"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="327"/>
<source>Buy the Ultimate version to fund development</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="410"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="412"/>
<source>File %1/%2, size: %3/%4</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="644"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="646"/>
<source>Copy list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="646"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="648"/>
<source>Move list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1067"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1076"/>
<source>Don&apos;t close if errors are found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1068"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1077"/>
<source>Never close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1069"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1078"/>
<source>Always close</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1071"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1080"/>
<source>File Name, 0KB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1265"/>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1277"/>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1289"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1274"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1286"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1298"/>
<source>Select a color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1364"/>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1368"/>
- <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1370"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1373"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1377"/>
+ <location filename="../../../plugins/Themes/Oxygen/interface.cpp" line="1379"/>
<source>%1 %2% of %3</source>
<translation type="unfinished"></translation>
</message>
@@ -2176,323 +2113,243 @@ since:%2</source>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="228"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="244"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="673"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="745"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="346"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="421"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="711"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="751"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="648"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="891"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="1315"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="1333"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/WriteThread.cpp" line="83"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="164"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="175"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>copyEngineOptions</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="44"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="44"/>
<source>Transfer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="53"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="60"/>
- <source>Transfer the file rights</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="70"/>
- <source>Keep the file date</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="90"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="139"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="145"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="155"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="181"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="414"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="427"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="440"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="453"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="490"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="397"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="589"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="618"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="624"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="634"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="646"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/copyEngineOptions.ui" line="668"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -2500,67 +2357,67 @@ since:%2</source>
<context>
<name>fileErrorDialog</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui" line="14"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="14"/>
<source>Error with file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui" line="20"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="20"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui" line="59"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="59"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui" line="76"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="76"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui" line="93"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="93"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui" line="110"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="110"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui" line="127"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="127"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui" line="173"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="173"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui" line="193"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="193"/>
<source>Try in with elevated privileges</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui" line="200"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="200"/>
<source>Put to bottom</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui" line="207"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="207"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui" line="214"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="214"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileErrorDialog.ui" line="221"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui" line="221"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2568,141 +2425,153 @@ since:%2</source>
<context>
<name>fileExistsDialog</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="14"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="14"/>
<source>The file exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="34"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="50"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="82"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="170"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="82"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="170"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="99"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="187"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="99"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="187"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="116"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="204"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="116"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="204"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="133"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="221"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="133"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="221"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="277"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="277"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="288"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="288"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="308"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="315"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="315"/>
<source>&amp;Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="325"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="325"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="332"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="332"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="341"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="341"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="346"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="349"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="346"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="349"/>
<source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="354"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileExistsDialog.ui" line="357"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="354"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="357"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="362"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="370"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>fileIsSameDialog</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui" line="14"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="14"/>
<source>The source and destination are same</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui" line="40"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="40"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui" line="70"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="70"/>
<source>File name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui" line="90"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="90"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui" line="110"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="110"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui" line="159"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="159"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui" line="170"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="170"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui" line="190"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="190"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui" line="197"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="197"/>
<source>&amp;Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui" line="204"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui" line="204"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
@@ -2710,65 +2579,65 @@ since:%2</source>
<context>
<name>folderExistsDialog</name>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="14"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="14"/>
<source>The source and destination is identical</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="34"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="34"/>
<source>Source</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="50"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="50"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="82"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="150"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="82"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="150"/>
<source>Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="99"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="160"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="99"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="160"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="116"/>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="184"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="116"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="184"/>
<source>Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="227"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="227"/>
<source>Suggest new &amp;name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="238"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="238"/>
<source>&amp;Always perform this action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="245"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="245"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="252"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="252"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="259"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="259"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../../plugins/CopyEngine/Ultracopier/folderExistsDialog.ui" line="266"/>
+ <location filename="../../../plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui" line="266"/>
<source>&amp;Cancel</source>
<translation type="unfinished"></translation>
</message>
diff --git a/resources/finish.opus b/resources/finish.opus
new file mode 100644
index 0000000..9336d69
--- /dev/null
+++ b/resources/finish.opus
Binary files differ
diff --git a/resources/resources-windows.rc b/resources/resources-windows.rc
index 2a471d0..0b9dfcb 100644
--- a/resources/resources-windows.rc
+++ b/resources/resources-windows.rc
@@ -1,5 +1,5 @@
#include <windows.h>
-#include "../Variable.h"
+#include "../Version.h"
1 VERSIONINFO
FILEVERSION ULTRACOPIER_WINDOWS_VERSION
diff --git a/resources/ultracopier-36x36.png b/resources/ultracopier-36x36.png
new file mode 100644
index 0000000..844c690
--- /dev/null
+++ b/resources/ultracopier-36x36.png
Binary files differ
diff --git a/resources/ultracopier-48x48.png b/resources/ultracopier-48x48.png
new file mode 100644
index 0000000..2adbb48
--- /dev/null
+++ b/resources/ultracopier-48x48.png
Binary files differ
diff --git a/resources/ultracopier-72x72.png b/resources/ultracopier-72x72.png
new file mode 100644
index 0000000..8a276d7
--- /dev/null
+++ b/resources/ultracopier-72x72.png
Binary files differ
diff --git a/resources/ultracopier-oxygen.png b/resources/ultracopier-oxygen.png
new file mode 100644
index 0000000..9910b1b
--- /dev/null
+++ b/resources/ultracopier-oxygen.png
Binary files differ
diff --git a/resources/ultracopier-oxygen2.png b/resources/ultracopier-oxygen2.png
new file mode 100644
index 0000000..62e474f
--- /dev/null
+++ b/resources/ultracopier-oxygen2.png
Binary files differ
diff --git a/resources/ultracopier-resources.qrc b/resources/ultracopier-resources.qrc
index b57de67..62c797a 100644
--- a/resources/ultracopier-resources.qrc
+++ b/resources/ultracopier-resources.qrc
@@ -11,5 +11,8 @@
<file>Languages/en/translation.qm</file>
<file>options.png</file>
<file>warning.png</file>
+ <file>ultracopier-oxygen.png</file>
+ <file>ultracopier-oxygen2.png</file>
+ <file>ultracopier-supercopier.png</file>
</qresource>
</RCC>
diff --git a/resources/ultracopier-supercopier.png b/resources/ultracopier-supercopier.png
new file mode 100644
index 0000000..2ef11d3
--- /dev/null
+++ b/resources/ultracopier-supercopier.png
Binary files differ
diff --git a/test-client-catchcopy/catchcopy-api-0002/ClientCatchcopy.cpp b/test-client-catchcopy/catchcopy-api-0002/ClientCatchcopy.cpp
new file mode 100644
index 0000000..0ac9d04
--- /dev/null
+++ b/test-client-catchcopy/catchcopy-api-0002/ClientCatchcopy.cpp
@@ -0,0 +1,380 @@
+/** \file ClientCatchcopy.cpp
+\brief Define the catchcopy client
+\author alpha_one_x86
+\version 0002
+\date 2010 */
+
+#include "ClientCatchcopy.h"
+#include "VariablesCatchcopy.h"
+#include "ExtraSocketCatchcopy.h"
+#include <QDataStream>
+
+ClientCatchcopy::ClientCatchcopy()
+{
+ disconnectedFromSocket();
+ error_string="Unknown error";
+ detectTimeOut.setSingleShot(true);
+ detectTimeOut.setInterval(CATCHCOPY_COMMUNICATION_TIMEOUT); // the max time to without send packet
+ connect(&socket, SIGNAL(connected()), this, SIGNAL(connected()));
+ connect(&socket, SIGNAL(disconnected()), this, SIGNAL(disconnected()));
+ connect(&socket, SIGNAL(disconnected()), this, SLOT(disconnectedFromSocket()));
+ connect(&socket, SIGNAL(stateChanged(QLocalSocket::LocalSocketState)), this, SIGNAL(stateChanged(QLocalSocket::LocalSocketState)));
+ connect(&socket, SIGNAL(error(QLocalSocket::LocalSocketError)), this, SIGNAL(errorSocket(QLocalSocket::LocalSocketError)));
+ connect(&socket, SIGNAL(readyRead()), this, SLOT(readyRead()));
+ connect(&detectTimeOut, SIGNAL(timeout()), this, SLOT(checkTimeOut()));
+ connect(&socket, SIGNAL(connected()), this, SLOT(socketIsConnected()));
+}
+
+void ClientCatchcopy::checkTimeOut()
+{
+ if(haveData)
+ {
+ error_string="The server is too long to send the next part of the reply";
+ emit error(error_string);
+ disconnectFromServer();
+ }
+}
+
+const QString ClientCatchcopy::errorString()
+{
+ return error_string;
+}
+
+void ClientCatchcopy::socketIsConnected()
+{
+ orderIdFirstSendProtocol=sendProtocol();
+}
+
+void ClientCatchcopy::connectToServer()
+{
+ socket.connectToServer(ExtraSocketCatchcopy::pathSocket());
+}
+
+void ClientCatchcopy::disconnectFromServer()
+{
+ socket.abort();
+ socket.disconnectFromServer();
+}
+
+const QString ClientCatchcopy::errorStringSocket()
+{
+ return socket.errorString();
+}
+
+/// \brief to send stream of string list
+quint32 ClientCatchcopy::sendRawOrderList(const QStringList & order)
+{
+ if(!socket.isValid())
+ {
+ error_string="Socket is not valid, try send: "+order.join(";");
+ emit error(error_string);
+ return -1;
+ }
+ if(socket.state()!=QLocalSocket::ConnectedState)
+ {
+ error_string="Socket is not connected "+QString::number(socket.state());
+ emit error(error_string);
+ return -1;
+ }
+ do
+ {
+ idNextOrder++;
+ if(idNextOrder>2000000000)
+ idNextOrder=0;
+ } while(notRepliedQuery.contains(idNextOrder));
+ notRepliedQuery << idNextOrder;
+ QByteArray block;
+ QDataStream out(&block, QIODevice::WriteOnly);
+ out.setVersion(QDataStream::Qt_4_4);
+ out << int(0);
+ out << idNextOrder;
+ out << order;
+ out.device()->seek(0);
+ out << block.size();
+ if(idNextOrder!=1) // drop if internal protocol send
+ {
+ emit dataSend(idNextOrder,block);
+ emit dataSend(idNextOrder,order);
+ }
+ do //cut string list and send it as block of 32KB
+ {
+ QByteArray blockToSend;
+ int byteWriten;
+ blockToSend=block.left(32*1024);//32KB
+ block.remove(0,blockToSend.size());
+ byteWriten = socket.write(blockToSend);
+ if(!socket.isValid())
+ {
+ error_string="Socket is not valid";
+ emit error(error_string);
+ return -1;
+ }
+ if(socket.errorString()!="Unknown error" && socket.errorString()!="")
+ {
+ error_string=socket.errorString();
+ emit error(error_string);
+ return -1;
+ }
+ if(blockToSend.size()!=byteWriten)
+ {
+ error_string="All the bytes have not be written";
+ emit error(error_string);
+ return -1;
+ }
+ }
+ while(block.size());
+ return idNextOrder;
+}
+
+void ClientCatchcopy::readyRead()
+{
+ while(socket.bytesAvailable()>0)
+ {
+ if(!haveData)
+ {
+ if(socket.bytesAvailable()<(int)sizeof(int))//int of size cuted
+ {
+ /* error_string="Bytes available is not sufficient to do a int";
+ emit error(error_string);
+ disconnectFromServer();*/
+ return;
+ }
+ QDataStream in(&socket);
+ in.setVersion(QDataStream::Qt_4_4);
+ in >> dataSize;
+ dataSize-=sizeof(int);
+ if(dataSize>64*1024*1024) // 64MB
+ {
+ error_string="Reply size is >64MB, seam corrupted";
+ emit error(error_string);
+ disconnectFromServer();
+ return;
+ }
+ if(dataSize<(int)(sizeof(int) //orderId
+ + sizeof(quint32) //returnCode
+ + sizeof(quint32) //string list size
+ ))
+ {
+ error_string="Reply size is too small to have correct code";
+ emit error(error_string);
+ disconnectFromServer();
+ return;
+ }
+ }
+ if(dataSize<(data.size()+socket.bytesAvailable()))
+ data.append(socket.read(dataSize-data.size()));
+ else
+ data.append(socket.readAll());
+ if(dataSize==data.size())
+ {
+ if(!checkDataIntegrity(data))
+ {
+ data.clear();
+ qWarning() << "Data of the reply is wrong";
+ return;
+ }
+ QStringList returnList;
+ quint32 orderId;
+ quint32 returnCode;
+ QDataStream in(data);
+ in.setVersion(QDataStream::Qt_4_4);
+ in >> orderId;
+ in >> returnCode;
+ in >> returnList;
+ data.clear();
+ if(orderId!=orderIdFirstSendProtocol)
+ {
+ if(!notRepliedQuery.contains(orderId))
+ qWarning() << "Unknown query not replied:" << orderId;
+ else
+ {
+ if(!parseReply(orderId,returnCode,returnList))
+ emit unknowReply(orderId);
+ emit newReply(orderId,returnCode,returnList);
+ }
+ }
+ else
+ {
+ if(!sendProtocolReplied)
+ {
+ sendProtocolReplied=true;
+ if(returnCode!=1000)
+ {
+ error_string="Protocol not supported";
+ emit error(error_string);
+ disconnectFromServer();
+ return;
+ }
+ }
+ else
+ {
+ error_string=QString("First send protocol send with the query id %1 have been already previously replied").arg(orderIdFirstSendProtocol);
+ emit error(error_string);
+ disconnectFromServer();
+ return;
+ }
+ }
+ }
+ }
+ if(haveData)
+ detectTimeOut.start();
+ else
+ detectTimeOut.stop();
+}
+
+bool ClientCatchcopy::checkDataIntegrity(QByteArray data)
+{
+ quint32 orderId;
+ qint32 replyCode;
+ qint32 listSize;
+ QDataStream in(data);
+ in.setVersion(QDataStream::Qt_4_4);
+ in >> orderId;
+ in >> replyCode;
+ in >> listSize;
+ if(listSize>65535)
+ {
+ emit error("List size is wrong");
+ qWarning() << "List size is wrong";
+ return false;
+ }
+ int index=0;
+ while(index<listSize)
+ {
+ qint32 stringSize;
+ in >> stringSize;
+ if(stringSize>65535)
+ {
+ emit error("String size is wrong");
+ qWarning() << "String size is wrong";
+ return false;
+ }
+ if(stringSize>(in.device()->size()-in.device()->pos()))
+ {
+ emit error(QString("String size is greater than the data: %1>(%2-%3)").arg(stringSize).arg(in.device()->size()).arg(in.device()->pos()));
+ qWarning() << QString("String size is greater than the data: %1>(%2-%3)").arg(stringSize).arg(in.device()->size()).arg(in.device()->pos());
+ return false;
+ }
+ in.device()->seek(in.device()->pos()+stringSize);
+ index++;
+ }
+ if(in.device()->size()!=in.device()->pos())
+ {
+ emit error("Remaining data after string list parsing");
+ qWarning() << "Remaining data after string list parsing";
+ return false;
+ }
+ return true;
+}
+
+QLocalSocket::LocalSocketState ClientCatchcopy::state()
+{
+ return socket.state();
+}
+
+void ClientCatchcopy::disconnectedFromSocket()
+{
+ haveData = false;
+ orderIdFirstSendProtocol= 0;
+ idNextOrder = 0;
+ sendProtocolReplied = false;
+ notRepliedQuery.clear();
+}
+
+/// \brief to send the protocol version used
+quint32 ClientCatchcopy::sendProtocol()
+{
+ return sendRawOrderList(QStringList() << "protocol" << CATCHCOPY_PROTOCOL_VERSION);
+}
+
+quint32 ClientCatchcopy::askServerName()
+{
+ return sendRawOrderList(QStringList() << "server" << "name?");
+}
+
+quint32 ClientCatchcopy::setClientName(const QString & name)
+{
+ return sendRawOrderList(QStringList() << "client" << name);
+}
+
+quint32 ClientCatchcopy::checkProtocolExtension(const QString & name)
+{
+ return sendRawOrderList(QStringList() << "protocol extension" << name);
+}
+
+quint32 ClientCatchcopy::checkProtocolExtension(const QString & name,const QString & version)
+{
+ return sendRawOrderList(QStringList() << "protocol extension" << name << version);
+}
+
+quint32 ClientCatchcopy::addCopyWithDestination(const QStringList & sources,const QString & destination)
+{
+ return sendRawOrderList(QStringList() << "cp" << sources << destination);
+}
+
+quint32 ClientCatchcopy::addCopyWithoutDestination(const QStringList & sources)
+{
+ return sendRawOrderList(QStringList() << "cp-?" << sources);
+}
+
+quint32 ClientCatchcopy::addMoveWithDestination(const QStringList & sources,const QString & destination)
+{
+ return sendRawOrderList(QStringList() << "mv" << sources << destination);
+}
+
+quint32 ClientCatchcopy::addMoveWithoutDestination(const QStringList & sources)
+{
+ return sendRawOrderList(QStringList() << "mv-?" << sources);
+}
+
+bool ClientCatchcopy::parseReply(quint32 orderId,quint32 returnCode,QStringList returnList)
+{
+ switch(returnCode)
+ {
+ case 1000:
+ emit protocolSupported(orderId);
+ break;
+ case 1001:
+ case 1002:
+ if(returnCode==1001)
+ emit protocolExtensionSupported(orderId,true);
+ else
+ emit protocolExtensionSupported(orderId,false);
+ break;
+ case 1003:
+ emit clientRegistered(orderId);
+ break;
+ case 1004:
+ if(returnList.size()!=1)
+ emit unknowOrder(orderId);
+ else
+ emit serverName(orderId,returnList.last());
+ break;
+ case 1005:
+ case 1006:
+ if(returnCode==1005)
+ emit copyFinished(orderId,false);
+ else
+ emit copyFinished(orderId,true);
+ break;
+ case 1007:
+ emit copyCanceled(orderId);
+ break;
+ case 5000:
+ emit incorrectArgumentListSize(orderId);
+ break;
+ case 5001:
+ emit incorrectArgument(orderId);
+ break;
+ case 5002:
+ emit unknowOrder(orderId); //the server have not understand the order
+ break;
+ case 5003:
+ emit protocolNotSupported(orderId);
+ break;
+ default:
+ return false;
+ }
+ return true;
+}
+
diff --git a/test-client-catchcopy/catchcopy-api-0002/ClientCatchcopy.h b/test-client-catchcopy/catchcopy-api-0002/ClientCatchcopy.h
new file mode 100644
index 0000000..278b0cd
--- /dev/null
+++ b/test-client-catchcopy/catchcopy-api-0002/ClientCatchcopy.h
@@ -0,0 +1,114 @@
+/** \file ClientCatchcopy.h
+\brief Define the catchcopy client
+\author alpha_one_x86
+\version 0002
+\date 2010 */
+
+#ifndef CLIENTCATCHCOPY_H
+#define CLIENTCATCHCOPY_H
+
+#include <QObject>
+#include <QLocalSocket>
+#include <QStringList>
+#include <QString>
+#include <QByteArray>
+#include <QTimer>
+
+/// \brief Define the catchcopy client
+class ClientCatchcopy : public QObject
+{
+ Q_OBJECT
+ public:
+ ClientCatchcopy();
+ /// \brief get the socket stat
+ QLocalSocket::LocalSocketState state();
+ /// \brief error string about the socket
+ const QString errorStringSocket();
+ /// \brief general error string
+ const QString errorString();
+ public slots:
+ void connectToServer();
+ void disconnectFromServer();
+ //to test and internal use
+ /// \brief to send order
+ quint32 sendProtocol();
+ /// \brief ask the server name
+ quint32 askServerName();
+ /// \brief set the client name
+ quint32 setClientName(const QString & name);
+ /// \brief check protocol extension
+ quint32 checkProtocolExtension(const QString & name);
+ /// \brief check protocol extension and version
+ quint32 checkProtocolExtension(const QString & name,const QString & version);
+ /// \brief add copy with destination
+ quint32 addCopyWithDestination(const QStringList & sources,const QString & destination);
+ /// \brief add copy without destination
+ quint32 addCopyWithoutDestination(const QStringList & sources);
+ /// \brief add move with destination
+ quint32 addMoveWithDestination(const QStringList & sources,const QString & destination);
+ /// \brief add move without destination
+ quint32 addMoveWithoutDestination(const QStringList & sources);
+ /// \brief to send stream of string list
+ quint32 sendRawOrderList(const QStringList & order);
+ signals:
+ /// \brief is connected
+ void connected();
+ /// \brief is disconnected
+ void disconnected();
+ /// \brief the socket state have changed
+ void stateChanged(QLocalSocket::LocalSocketState socketState);
+ /// \brief send the error string
+ void error(QString error);
+ /// \brief send socket error
+ void errorSocket(QLocalSocket::LocalSocketError socketError);
+ /// \brief have new reply
+ void newReply(quint32 orderId,quint32 returnCode,QStringList returnList);
+ /// \brief have data send
+ void dataSend(quint32 orderId,QByteArray data);
+ /// \brief have data send by string list
+ void dataSend(quint32 orderId,QStringList data);
+ /// \brief have unknow reply
+ void unknowReply(quint32 orderId);
+ //reply
+ /// \brief protocol is supported
+ void protocolSupported(quint32 orderId);
+ /// \brief incorrect argument list size
+ void incorrectArgumentListSize(quint32 orderId);
+ /// \brief incorrect argument
+ void incorrectArgument(quint32 orderId);
+ /// \brief protocol not supported
+ void protocolNotSupported(quint32 orderId);
+ /// \brief protocol extension supported
+ void protocolExtensionSupported(quint32 orderId,bool isSupported);
+ /// \brief client is registred
+ void clientRegistered(quint32 orderId);
+ /// \brief have the server name
+ void serverName(quint32 orderId,QString name);
+ /// \brief copy finished
+ void copyFinished(quint32 orderId,bool withError);
+ /// \brief copy canceled
+ void copyCanceled(quint32 orderId);
+ /// \brief have unknow order
+ void unknowOrder(quint32 orderId); //the server have not understand the order
+ private:
+ QLocalSocket socket;
+ QString error_string;
+ quint32 idNextOrder;
+ QByteArray data;
+ bool haveData;
+ int dataSize;
+ quint32 orderIdFirstSendProtocol;
+ QTimer detectTimeOut;
+ bool sendProtocolReplied;
+ QList<quint32> notRepliedQuery;
+ bool checkDataIntegrity(QByteArray data);
+ private slots:
+ void readyRead();
+ void disconnectedFromSocket();
+ void socketIsConnected();
+ void checkTimeOut();
+ protected:
+ bool parseReply(quint32 orderId,quint32 returnCode,QStringList returnList);
+};
+
+#endif // CLIENTCATCHCOPY_H
diff --git a/test-client-catchcopy/catchcopy-api-0002/ExtraSocketCatchcopy.cpp b/test-client-catchcopy/catchcopy-api-0002/ExtraSocketCatchcopy.cpp
new file mode 100644
index 0000000..7ee05ed
--- /dev/null
+++ b/test-client-catchcopy/catchcopy-api-0002/ExtraSocketCatchcopy.cpp
@@ -0,0 +1,31 @@
+/** \file ExtraSocketCatchcopy.cpp
+\brief Define the socket of catchcopy
+\author alpha_one_x86
+\version 0002
+\date 2010 */
+
+#include "ExtraSocketCatchcopy.h"
+
+const QString ExtraSocketCatchcopy::pathSocket()
+{
+#ifdef Q_OS_UNIX
+ return "advanced-copier-"+QString::number(getuid());
+#else
+ QString userName;
+ DWORD size=0;
+ if(GetUserNameW(NULL,&size) || (GetLastError()!=ERROR_INSUFFICIENT_BUFFER))
+ {
+ }
+ else
+ {
+ WCHAR * userNameW=new WCHAR[size];
+ if(GetUserNameW(userNameW,&size))
+ {
+ userName.fromWCharArray(userNameW,size*2);
+ userName=QString(QByteArray((char*)userNameW,size*2-2).toHex());
+ }
+ delete userNameW;
+ }
+ return "advanced-copier-"+userName;
+#endif
+}
diff --git a/test-client-catchcopy/catchcopy-api-0002/ExtraSocketCatchcopy.h b/test-client-catchcopy/catchcopy-api-0002/ExtraSocketCatchcopy.h
new file mode 100644
index 0000000..623c668
--- /dev/null
+++ b/test-client-catchcopy/catchcopy-api-0002/ExtraSocketCatchcopy.h
@@ -0,0 +1,27 @@
+/** \file ExtraSocketCatchcopy.h
+\brief Define the socket of catchcopy
+\author alpha_one_x86
+\version 0002
+\date 2010 */
+
+#ifndef EXTRASOCKETCATCHCOPY_H
+#define EXTRASOCKETCATCHCOPY_H
+
+#include <QString>
+
+#ifdef Q_OS_UNIX
+ #include <unistd.h>
+ #include <sys/types.h>
+#else
+ #include <windows.h>
+#endif
+
+/// \brief to have extra socket function
+class ExtraSocketCatchcopy
+{
+public:
+ /// \brief to get the socket path
+ static const QString pathSocket();
+};
+
+#endif // EXTRASOCKETCATCHCOPY_H
diff --git a/test-client-catchcopy/catchcopy-api-0002/ServerCatchcopy.cpp b/test-client-catchcopy/catchcopy-api-0002/ServerCatchcopy.cpp
new file mode 100644
index 0000000..b17fc0a
--- /dev/null
+++ b/test-client-catchcopy/catchcopy-api-0002/ServerCatchcopy.cpp
@@ -0,0 +1,725 @@
+/** \file ServerCatchcopy.cpp
+\brief Define the server of catchcopy
+\author alpha_one_x86
+\version 0002
+\date 2010 */
+
+#include "ServerCatchcopy.h"
+#include "VariablesCatchcopy.h"
+#include "ExtraSocketCatchcopy.h"
+
+ServerCatchcopy::ServerCatchcopy()
+{
+ name="Default avanced copier";
+ autoReply=true;
+ idNextClient=0;
+ error_string="Unknown error";
+ connect(&server, SIGNAL(newConnection()), this, SLOT(newConnection()));
+}
+
+ServerCatchcopy::~ServerCatchcopy()
+{
+ close();
+}
+
+bool ServerCatchcopy::isListening()
+{
+ return server.isListening();
+}
+
+void ServerCatchcopy::setName(const QString & name)
+{
+ this->name=name;
+}
+
+QString ServerCatchcopy::getName()
+{
+ return name;
+}
+
+bool ServerCatchcopy::listen()
+{
+ QLocalSocket socketTestConnection;
+ pathSocket=ExtraSocketCatchcopy::pathSocket();
+ socketTestConnection.connectToServer(pathSocket);
+ if(socketTestConnection.waitForConnected(CATCHCOPY_COMMUNICATION_TIMEOUT))
+ {
+ error_string="Other server is listening";
+ emit error(error_string);
+ return false;
+ }
+ else
+ {
+ server.removeServer(pathSocket);
+ if(server.listen(pathSocket))
+ return true;
+ else
+ {
+ error_string=QString("Unable to listen %1: %2").arg(pathSocket).arg(server.errorString());
+ emit error(error_string);
+ return false;
+ }
+ }
+}
+
+void ServerCatchcopy::close()
+{
+ if(server.isListening())
+ {
+ int index=0;
+ while(index<ClientList.size())
+ {
+ ClientList.at(index).socket->disconnectFromServer();
+ index++;
+ }
+ server.close();
+ QLocalServer::removeServer(pathSocket);
+ }
+}
+
+const QString ServerCatchcopy::errorStringServer()
+{
+ return server.errorString();
+}
+
+const QString ServerCatchcopy::errorString()
+{
+ return error_string;
+}
+
+/// \brief New connexion
+void ServerCatchcopy::newConnection()
+{
+ while(server.hasPendingConnections())
+ {
+ QLocalSocket *clientSocket = server.nextPendingConnection();
+ if(clientSocket!=NULL)
+ {
+ do
+ {
+ idNextClient++;
+ if(idNextClient>2000000000)
+ idNextClient=0;
+ } while(clientIdFound(idNextClient));
+ Client newClient;
+ newClient.id = idNextClient;
+ newClient.socket = clientSocket;
+ newClient.haveData = false;
+ newClient.firstProtocolReplied = false;
+ newClient.detectTimeOut = new QTimer(this);
+ newClient.detectTimeOut->setSingleShot(true);
+ newClient.detectTimeOut->setInterval(CATCHCOPY_COMMUNICATION_TIMEOUT);
+ connect(newClient.socket, SIGNAL(error(QLocalSocket::LocalSocketError)), this, SLOT(connectionError(QLocalSocket::LocalSocketError)));
+ connect(newClient.socket, SIGNAL(readyRead()), this, SLOT(readyRead()));
+ connect(newClient.socket, SIGNAL(disconnected()), this, SLOT(disconnected()));
+ connect(newClient.detectTimeOut,SIGNAL(timeout()), this, SLOT(checkTimeOut()));
+ ClientList << newClient;
+ emit connectedClient(newClient.id);
+ }
+ }
+}
+
+bool ServerCatchcopy::clientIdFound(quint32 id)
+{
+ int index=0;
+ while(index<ClientList.size())
+ {
+ if(ClientList.at(index).id==id)
+ return true;
+ index++;
+ }
+ return false;
+}
+
+/// \brief new error at connexion
+void ServerCatchcopy::connectionError(QLocalSocket::LocalSocketError error)
+{
+ QLocalSocket *socket=qobject_cast<QLocalSocket *>(QObject::sender());
+ if(socket==NULL)
+ {
+ qWarning() << "Unlocated client socket!";
+ return;
+ }
+ int index=0;
+ while(index<ClientList.size())
+ {
+ if(ClientList.at(index).socket==socket)
+ {
+ if(error!=QLocalSocket::PeerClosedError)
+ qWarning() << "error detected for the client: " << index << ", type: " << error;
+ ClientList.at(index).socket->disconnectFromServer();
+ return;
+ }
+ index++;
+ }
+}
+
+void ServerCatchcopy::disconnected()
+{
+ QLocalSocket *socket=qobject_cast<QLocalSocket *>(QObject::sender());
+ if(socket==NULL)
+ {
+ qWarning() << "Unlocated client socket!";
+ return;
+ }
+ int index=0;
+ while(index<ClientList.size())
+ {
+ if(ClientList.at(index).socket==socket)
+ {
+ emit disconnectedClient(ClientList.at(index).id);
+ disconnect(ClientList.at(index).socket);
+ disconnect(ClientList.at(index).detectTimeOut);
+ delete ClientList.at(index).detectTimeOut;
+ ClientList.at(index).socket->abort();
+ ClientList.at(index).socket->disconnectFromServer();
+ ClientList.at(index).socket->deleteLater();
+ ClientList.removeAt(index);
+ return;
+ }
+ index++;
+ }
+ qWarning() << "Unlocated client!";
+}
+
+void ServerCatchcopy::disconnectClient(quint32 id)
+{
+ int index=0;
+ while(index<ClientList.size())
+ {
+ if(ClientList.at(index).id==id)
+ {
+ ClientList.at(index).socket->disconnectFromServer();
+ return;
+ }
+ index++;
+ }
+ qWarning() << "Unlocated client!";
+}
+
+void ServerCatchcopy::readyRead()
+{
+ QLocalSocket *socket=qobject_cast<QLocalSocket *>(QObject::sender());
+ if(socket==NULL)
+ {
+ qWarning() << "Unlocated client socket!";
+ return;
+ }
+ int index=0;
+ while(index<ClientList.size())
+ {
+ if(ClientList.at(index).socket==socket)
+ {
+ while(socket->bytesAvailable()>0)
+ {
+ if(!ClientList.at(index).haveData)
+ {
+ if(socket->bytesAvailable()<(int)sizeof(int))//ignore because first int is cuted!
+ {
+ /*error_string="Bytes available is not sufficient to do a int";
+ emit error(error_string);
+ disconnectClient(ClientList.at(index).id);*/
+ return;
+ }
+ QDataStream in(socket);
+ in.setVersion(QDataStream::Qt_4_4);
+ in >> ClientList[index].dataSize;
+ ClientList[index].dataSize-=sizeof(int);
+ if(ClientList.at(index).dataSize>64*1024*1024) // 64MB
+ {
+ error_string="Reply size is >64MB, seam corrupted";
+ emit error(error_string);
+ disconnectClient(ClientList.at(index).id);
+ return;
+ }
+ if(ClientList.at(index).dataSize<(int)(sizeof(int) //orderId
+ + sizeof(quint32) //returnCode
+ + sizeof(quint32) //string list size
+ ))
+ {
+ error_string="Reply size is too small to have correct code";
+ emit error(error_string);
+ disconnectClient(ClientList.at(index).id);
+ return;
+ }
+ ClientList[index].haveData=true;
+ }
+ if(ClientList.at(index).dataSize<(ClientList.at(index).data.size()+socket->bytesAvailable()))
+ ClientList[index].data.append(socket->read(ClientList.at(index).dataSize-ClientList.at(index).data.size()));
+ else
+ ClientList[index].data.append(socket->readAll());
+ if(ClientList.at(index).dataSize==(quint32)ClientList.at(index).data.size())
+ {
+ if(!checkDataIntegrity(ClientList.at(index).data))
+ {
+ emit error("Data integrity wrong: "+QString(ClientList.at(index).data.toHex()));
+ ClientList[index].data.clear();
+ ClientList[index].haveData=false;
+ qWarning() << "Data integrity wrong";
+ return;
+ }
+ QStringList returnList;
+ quint32 orderId;
+ QDataStream in(ClientList.at(index).data);
+ in.setVersion(QDataStream::Qt_4_4);
+ in >> orderId;
+ in >> returnList;
+ ClientList[index].data.clear();
+ ClientList[index].haveData=false;
+ if(ClientList.at(index).queryNoReplied.contains(orderId))
+ {
+ emit error("Duplicate query id");
+ qWarning() << "Duplicate query id";
+ return;
+ }
+ ClientList[index].queryNoReplied << orderId;
+ if(!ClientList.at(index).firstProtocolReplied && returnList.size()==2 && returnList.first()=="protocol" && autoReply)
+ {
+ ClientList[index].firstProtocolReplied=true;
+ protocolSupported(ClientList.at(index).id,orderId,(returnList.last()==CATCHCOPY_PROTOCOL_VERSION));
+ }
+ else
+ parseInput(ClientList.at(index).id,orderId,returnList);
+ }
+ }
+ if(ClientList.at(index).haveData)
+ ClientList.at(index).detectTimeOut->start();
+ else
+ ClientList.at(index).detectTimeOut->stop();
+ return;
+ }
+ index++;
+ }
+ emit error("Unallocated client!");
+ qWarning() << "Unallocated client!";
+}
+
+bool ServerCatchcopy::checkDataIntegrity(QByteArray data)
+{
+ quint32 orderId;
+ qint32 listSize;
+ QDataStream in(data);
+ in.setVersion(QDataStream::Qt_4_4);
+ in >> orderId;
+ in >> listSize;
+ if(listSize>65535)
+ {
+ emit error("List size is wrong");
+ qWarning() << "List size is wrong";
+ return false;
+ }
+ int index=0;
+ while(index<listSize)
+ {
+ qint32 stringSize;
+ in >> stringSize;
+ if(stringSize>65535)
+ {
+ emit error("String size is wrong");
+ return false;
+ }
+ if(stringSize>(in.device()->size()-in.device()->pos()))
+ {
+ emit error(QString("String size is greater than the data: %1>(%2-%3)").arg(stringSize).arg(in.device()->size()).arg(in.device()->pos()));
+ return false;
+ }
+ in.device()->seek(in.device()->pos()+stringSize);
+ index++;
+ }
+ if(in.device()->size()!=in.device()->pos())
+ {
+ emit error("Remaining data after string list parsing");
+ return false;
+ }
+ return true;
+}
+
+void ServerCatchcopy::parseInput(quint32 client,quint32 orderId,QStringList returnList)
+{
+ switch(parseInputCurrentProtocol(client,orderId,returnList))
+ {
+ case Ok:
+ emit newQuery(client,orderId,returnList);
+ break;
+ case Replied:
+ break;
+ case ExtensionWrong:
+ if(autoReply)
+ protocolExtensionSupported(client,orderId,false);
+ else
+ emit newQuery(client,orderId,returnList);
+ break;
+ case WrongArgument:
+ if(autoReply)
+ incorrectArgument(client,orderId);
+ else
+ emit newQuery(client,orderId,returnList);
+ break;
+ case WrongArgumentListSize:
+ if(autoReply)
+ incorrectArgumentListSize(client,orderId);
+ else
+ emit newQuery(client,orderId,returnList);
+ break;
+ case UnknowOrder:
+ emit error("Unknown query");
+ qWarning() << "Unknown query";
+ if(autoReply)
+ unknowOrder(client,orderId);
+ else
+ emit newQuery(client,orderId,returnList);
+ break;
+ }
+}
+
+ServerCatchcopy::inputReturnType ServerCatchcopy::parseInputCurrentProtocol(quint32 client,quint32 orderId,QStringList returnList)
+{
+ if(returnList.size()==0)
+ return WrongArgumentListSize;
+ //if is supported
+ QString firstArgument=returnList.first();
+ if(firstArgument=="protocol")
+ {
+ if(returnList.size()!=2)
+ return WrongArgumentListSize;
+ emit askProtocolCompatibility(client,orderId,returnList.last());
+ return Ok;
+ }
+ else if(firstArgument=="protocol extension")
+ {
+ if(returnList.size()>3 || returnList.size()<2)
+ return WrongArgumentListSize;
+ if(!autoReply)
+ {
+ if(returnList.size()==2)
+ emit askProtocolExtension(client,orderId,returnList.last());
+ else
+ emit askProtocolExtension(client,orderId,returnList.at(1),returnList.last());
+ }
+ return ExtensionWrong;
+ }
+ else if(firstArgument=="client")
+ {
+ if(returnList.size()!=2)
+ return WrongArgumentListSize;
+ emit clientName(client,returnList.last());
+ if(autoReply)
+ {
+ clientRegistered(client,orderId);
+ return Replied;
+ }
+ else
+ {
+ emit clientName(client,orderId,returnList.last());
+ return Ok;
+ }
+ }
+ else if(firstArgument=="server")
+ {
+ if(returnList.size()!=2)
+ return WrongArgumentListSize;
+ if(returnList.last()!="name?")
+ return WrongArgument;
+ if(autoReply)
+ {
+ serverName(client,orderId,name);
+ return Replied;
+ }
+ else
+ {
+ askServerName(client,orderId);
+ return Ok;
+ }
+ }
+ else if(firstArgument=="cp")
+ {
+ if(returnList.size()<3)
+ return WrongArgumentListSize;
+ QStringList sourceList=returnList;
+ sourceList.removeFirst();
+ sourceList.removeLast();
+ emitNewCopy(client,orderId,sourceList,returnList.last());
+ return Ok;
+ }
+ else if(firstArgument=="cp-?")
+ {
+ if(returnList.size()<2)
+ return WrongArgumentListSize;
+ QStringList sourceList=returnList;
+ sourceList.removeFirst();
+ emitNewCopy(client,orderId,sourceList);
+ return Ok;
+ }
+ else if(firstArgument=="mv")
+ {
+ if(returnList.size()<3)
+ return WrongArgumentListSize;
+ QStringList sourceList=returnList;
+ sourceList.removeFirst();
+ sourceList.removeLast();
+ emitNewMove(client,orderId,sourceList,returnList.last());
+ return Ok;
+ }
+ else if(firstArgument=="mv-?")
+ {
+ if(returnList.size()<2)
+ return WrongArgumentListSize;
+ QStringList sourceList=returnList;
+ sourceList.removeFirst();
+ emitNewMove(client,orderId,sourceList);
+ return Ok;
+ }
+ else //if is not supported
+ return UnknowOrder;
+}
+
+void ServerCatchcopy::emitNewCopy(quint32 client,quint32 orderId,QStringList sources)
+{
+ emit newCopy(client,orderId,sources);
+ LinkGlobalToLocalClient newAssociation;
+ newAssociation.idClient=client;
+ newAssociation.orderId=orderId;
+ newAssociation.globalOrderId=incrementOrderId();
+ LinkGlobalToLocalClientList << newAssociation;
+ emit newCopy(newAssociation.globalOrderId,sources);
+}
+
+void ServerCatchcopy::emitNewCopy(quint32 client,quint32 orderId,QStringList sources,QString destination)
+{
+ emit newCopy(client,orderId,sources,destination);
+ LinkGlobalToLocalClient newAssociation;
+ newAssociation.idClient=client;
+ newAssociation.orderId=orderId;
+ newAssociation.globalOrderId=incrementOrderId();
+ LinkGlobalToLocalClientList << newAssociation;
+ emit newCopy(newAssociation.globalOrderId,sources,destination);
+}
+
+void ServerCatchcopy::emitNewMove(quint32 client,quint32 orderId,QStringList sources)
+{
+ emit newMove(client,orderId,sources);
+ LinkGlobalToLocalClient newAssociation;
+ newAssociation.idClient=client;
+ newAssociation.orderId=orderId;
+ newAssociation.globalOrderId=incrementOrderId();
+ LinkGlobalToLocalClientList << newAssociation;
+ emit newMove(newAssociation.globalOrderId,sources);
+}
+
+void ServerCatchcopy::emitNewMove(quint32 client,quint32 orderId,QStringList sources,QString destination)
+{
+ emit newMove(client,orderId,sources,destination);
+ LinkGlobalToLocalClient newAssociation;
+ newAssociation.idClient=client;
+ newAssociation.orderId=orderId;
+ newAssociation.globalOrderId=incrementOrderId();
+ LinkGlobalToLocalClientList << newAssociation;
+ emit newMove(newAssociation.globalOrderId,sources,destination);
+}
+
+void ServerCatchcopy::copyFinished(quint32 globalOrderId,bool withError)
+{
+ int index=0;
+ while(index<LinkGlobalToLocalClientList.size())
+ {
+ if(LinkGlobalToLocalClientList.at(index).globalOrderId==globalOrderId)
+ {
+ copyFinished(LinkGlobalToLocalClientList.at(index).idClient,LinkGlobalToLocalClientList.at(index).orderId,withError);
+ LinkGlobalToLocalClientList.removeAt(index);
+ orderList.removeOne(globalOrderId);
+ return;
+ }
+ index++;
+ }
+}
+
+void ServerCatchcopy::copyCanceled(quint32 globalOrderId)
+{
+ int index=0;
+ while(index<LinkGlobalToLocalClientList.size())
+ {
+ if(LinkGlobalToLocalClientList.at(index).globalOrderId==globalOrderId)
+ {
+ copyCanceled(LinkGlobalToLocalClientList.at(index).idClient,LinkGlobalToLocalClientList.at(index).orderId);
+ LinkGlobalToLocalClientList.removeAt(index);
+ orderList.removeOne(globalOrderId);
+ return;
+ }
+ index++;
+ }
+}
+
+void ServerCatchcopy::setAutoReply(bool value)
+{
+ autoReply=value;
+}
+
+bool ServerCatchcopy::getAutoReply()
+{
+ return autoReply;
+}
+
+void ServerCatchcopy::reply(quint32 client,quint32 orderId,quint32 returnCode,QString returnString)
+{
+ reply(client,orderId,returnCode,QStringList() << returnString);
+}
+
+void ServerCatchcopy::reply(quint32 client,quint32 orderId,quint32 returnCode,QStringList returnList)
+{
+ int index=0;
+ while(index<ClientList.size())
+ {
+ if(ClientList.at(index).id==client)
+ {
+ if(ClientList.at(index).socket->isValid() && ClientList.at(index).socket->state()==QLocalSocket::ConnectedState)
+ {
+ if(!ClientList.at(index).queryNoReplied.contains(orderId))
+ {
+ qWarning() << "Reply to missing query or previously replied";
+ return;
+ }
+ ClientList[index].queryNoReplied.removeOne(orderId);
+ //cut string list and send it as block of 32KB
+ QByteArray block;
+ QDataStream out(&block, QIODevice::WriteOnly);
+ out.setVersion(QDataStream::Qt_4_4);
+ out << int(0);
+ out << orderId;
+ out << returnCode;
+ out << returnList;
+ out.device()->seek(0);
+ out << block.size();
+ emit dataSend(client,orderId,returnCode,block);
+ emit dataSend(client,orderId,returnCode,returnList);
+ do
+ {
+ QByteArray blockToSend;
+ int byteWriten;
+ blockToSend=block.left(32*1024);//32KB
+ block.remove(0,blockToSend.size());
+ byteWriten = ClientList[index].socket->write(blockToSend);
+ if(!ClientList[index].socket->isValid())
+ {
+ error_string="Socket is not valid";
+ emit error(error_string);
+ return;
+ }
+ if(ClientList[index].socket->errorString()!="Unknown error" && ClientList[index].socket->errorString()!="")
+ {
+ error_string="Error with socket: "+ClientList[index].socket->errorString();
+ emit error(error_string);
+ return;
+ }
+ if(blockToSend.size()!=byteWriten)
+ {
+ error_string="All the bytes have not be written";
+ emit error(error_string);
+ return;
+ }
+ }
+ while(block.size());
+ }
+ else
+ {
+ error_string="Socket is not valid or not connected";
+ emit error(error_string);
+ }
+ return;
+ }
+ index++;
+ }
+ qWarning() << "Client id not found:" << client;
+}
+
+void ServerCatchcopy::protocolSupported(quint32 client,quint32 orderId,bool value)
+{
+ if(value)
+ reply(client,orderId,1000,"protocol supported");
+ else
+ reply(client,orderId,5003,"protocol not supported");
+}
+
+void ServerCatchcopy::incorrectArgumentListSize(quint32 client,quint32 orderId)
+{
+ reply(client,orderId,5000,"incorrect argument list size");
+}
+
+void ServerCatchcopy::incorrectArgument(quint32 client,quint32 orderId)
+{
+ reply(client,orderId,5001,"incorrect argument");
+}
+
+void ServerCatchcopy::protocolExtensionSupported(quint32 client,quint32 orderId,bool value)
+{
+ if(value)
+ reply(client,orderId,1001,"protocol extension supported");
+ else
+ reply(client,orderId,1002,"protocol extension not supported");
+}
+
+void ServerCatchcopy::clientRegistered(quint32 client,quint32 orderId)
+{
+ reply(client,orderId,1003,"client registered");
+}
+
+void ServerCatchcopy::serverName(quint32 client,quint32 orderId,QString name)
+{
+ reply(client,orderId,1004,name);
+}
+
+void ServerCatchcopy::copyFinished(quint32 client,quint32 orderId,bool withError)
+{
+ if(!withError)
+ reply(client,orderId,1005,"finished");
+ else
+ reply(client,orderId,1006,"finished with error(s)");
+}
+
+void ServerCatchcopy::copyCanceled(quint32 client,quint32 orderId)
+{
+ reply(client,orderId,1007,"canceled");
+}
+
+void ServerCatchcopy::unknowOrder(quint32 client,quint32 orderId)
+{
+ reply(client,orderId,5002,"unknown order");
+}
+
+void ServerCatchcopy::checkTimeOut()
+{
+ QTimer *timer=qobject_cast<QTimer *>(QObject::sender());
+ if(timer==NULL)
+ {
+ qWarning() << "Unallocated client timer!";
+ return;
+ }
+ int index=0;
+ while(index<ClientList.size())
+ {
+ if(ClientList.at(index).detectTimeOut==timer)
+ {
+ ClientList.at(index).detectTimeOut->stop();
+ if(ClientList.at(index).haveData)
+ {
+ error_string="The client is too long to send the next part of the reply: "+ClientList.at(index).data;
+ ClientList[index].haveData=false;
+ ClientList[index].data.clear();
+ ClientList.at(index).socket->disconnectFromServer();
+ emit error(error_string);
+ }
+ return;
+ }
+ index++;
+ }
+}
+
+quint32 ServerCatchcopy::incrementOrderId()
+{
+ do
+ {
+ nextOrderId++;
+ if(nextOrderId>2000000)
+ nextOrderId=0;
+ } while(orderList.contains(nextOrderId));
+ return nextOrderId;
+}
diff --git a/test-client-catchcopy/catchcopy-api-0002/ServerCatchcopy.h b/test-client-catchcopy/catchcopy-api-0002/ServerCatchcopy.h
new file mode 100644
index 0000000..5f7af35
--- /dev/null
+++ b/test-client-catchcopy/catchcopy-api-0002/ServerCatchcopy.h
@@ -0,0 +1,162 @@
+/** \file ServerCatchcopy.h
+\brief Define the server of catchcopy
+\author alpha_one_x86
+\version 0002
+\date 2010 */
+
+#ifndef SERVERCATCHCOPY_H
+#define SERVERCATCHCOPY_H
+
+#include <QObject>
+#include <QLocalSocket>
+#include <QLocalServer>
+#include <QStringList>
+#include <QString>
+#include <QByteArray>
+#include <QTimer>
+
+/// \brief Define the server of catchcopy
+class ServerCatchcopy : public QObject
+{
+ Q_OBJECT
+ public:
+ ServerCatchcopy();
+ ~ServerCatchcopy();
+ /// \brief return if is listening
+ bool isListening();
+ /// \brief try listen
+ bool listen();
+ /// \brief try close the server
+ void close();
+ /// \brief get the error string on the QLocalServer
+ const QString errorStringServer();
+ /// \brief get the general error string
+ const QString errorString();
+ /// \brief set if automatic reply is used
+ void setAutoReply(bool value);
+ /// \brief get if autoReply is set
+ bool getAutoReply();
+ /// \brief set the name of the server
+ void setName(const QString & name);
+ /// \brief get the name
+ QString getName();
+ private:
+ QString pathSocket;
+ QString name;
+ QString error_string;
+ QLocalServer server;
+ quint32 idNextClient;
+ struct Client
+ {
+ quint32 id;
+ QLocalSocket *socket;
+ QByteArray data;
+ bool haveData;
+ quint32 dataSize;
+ bool firstProtocolReplied;
+ QList<quint32> queryNoReplied;
+ QTimer *detectTimeOut;
+ };
+ QList<Client> ClientList;
+ struct LinkGlobalToLocalClient
+ {
+ quint32 idClient;
+ quint32 orderId;
+ quint32 globalOrderId;
+ };
+ QList<LinkGlobalToLocalClient> LinkGlobalToLocalClientList;
+ enum inputReturnType{Ok,Replied,ExtensionWrong,WrongArgument,WrongArgumentListSize,UnknowOrder};
+ inputReturnType parseInputCurrentProtocol(quint32 client,quint32 orderId,QStringList returnList);
+ bool autoReply;
+ bool clientIdFound(quint32 id);
+ quint32 nextOrderId;
+ QList<quint32> orderList;
+ quint32 incrementOrderId();
+ void emitNewCopy(quint32 client,quint32 orderId,QStringList sources);
+ void emitNewCopy(quint32 client,quint32 orderId,QStringList sources,QString destination);
+ void emitNewMove(quint32 client,quint32 orderId,QStringList sources);
+ void emitNewMove(quint32 client,quint32 orderId,QStringList sources,QString destination);
+ bool checkDataIntegrity(QByteArray data);
+ protected:
+ void parseInput(quint32 client,quint32 orderId,QStringList returnList);
+ private slots:
+ void newConnection();
+ void connectionError(QLocalSocket::LocalSocketError error);
+ void disconnected();
+ void readyRead();
+ void checkTimeOut();
+ public slots:
+ /// \brief disconnect one client
+ void disconnectClient(quint32 id);
+ /// \brief reply to a client with QStringList
+ void reply(quint32 client,quint32 orderId,quint32 returnCode,QStringList returnList);
+ /// \brief reply to a client
+ void reply(quint32 client,quint32 orderId,quint32 returnCode,QString returnString);
+ //reply
+ /// \brief send if the protocol is supported
+ void protocolSupported(quint32 client,quint32 orderId,bool value);
+ /// \brief send incorrect arguement list size
+ void incorrectArgumentListSize(quint32 client,quint32 orderId);
+ /// \brief send incorrect arguement
+ void incorrectArgument(quint32 client,quint32 orderId);
+ /// \brief send if protocol extension is supported
+ void protocolExtensionSupported(quint32 client,quint32 orderId,bool value);
+ /// \brief the client is registred
+ void clientRegistered(quint32 client,quint32 orderId);
+ /// \brief send the server name
+ void serverName(quint32 client,quint32 orderId,QString name);
+ /// \brief send the copy is finished
+ void copyFinished(quint32 client,quint32 orderId,bool withError);
+ /// \brief send the copy is canceled
+ void copyCanceled(quint32 client,quint32 orderId);
+ /// \brief send the copy is finished by global is order
+ void copyFinished(quint32 globalOrderId,bool withError);
+ /// \brief send copy cancel by global is order
+ void copyCanceled(quint32 globalOrderId);
+ /// \brief send the unknow order
+ void unknowOrder(quint32 client,quint32 orderId);
+ signals:
+ /// \brief send connected client
+ void connectedClient(quint32 id);
+ /// \brief send disconnect client
+ void disconnectedClient(quint32 id);
+ /// \brief have new query
+ void newQuery(quint32 client,quint32 orderId,QStringList returnList);
+ /// \brief send new data as string list
+ void dataSend(quint32 client,quint32 orderId,quint32 returnCode,QStringList returnList);
+ /// \brief send new data as raw data
+ void dataSend(quint32 client,quint32 orderId,quint32 returnCode,QByteArray block);
+ /// \brief have new error
+ void error(QString error);
+ //query
+ /// \brief ask the protocol compatility
+ void askProtocolCompatibility(quint32 client,quint32 orderId,QString version);
+ /// \brief ask protocol extension
+ void askProtocolExtension(quint32 client,quint32 orderId,QString extension);
+ /// \brief ask protocol extension with version
+ void askProtocolExtension(quint32 client,quint32 orderId,QString extension,QString version);
+ /// \brief send the client name, with query id
+ void clientName(quint32 client,quint32 orderId,QString name);
+ /// \brief send the client name, without query id
+ void clientName(quint32 client,QString name);
+ /// \brief send the client have ask the server name
+ void askServerName(quint32 client,quint32 orderId);
+ /// \brief copy is send, without destination
+ void newCopy(quint32 client,quint32 orderId,QStringList sources);
+ /// \brief copy is send, with destination
+ void newCopy(quint32 client,quint32 orderId,QStringList sources,QString destination);
+ /// \brief move is send, without destination
+ void newMove(quint32 client,quint32 orderId,QStringList sources);
+ /// \brief move is send, with destination
+ void newMove(quint32 client,quint32 orderId,QStringList sources,QString destination);
+ /// \brief copy is send, by globalOrderId, without destination
+ void newCopy(quint32 globalOrderId,QStringList sources);
+ /// \brief copy is send, by globalOrderId, with destination
+ void newCopy(quint32 globalOrderId,QStringList sources,QString destination);
+ /// \brief move is send, by globalOrderId, without destination
+ void newMove(quint32 globalOrderId,QStringList sources);
+ /// \brief move is send, by globalOrderId, with destination
+ void newMove(quint32 globalOrderId,QStringList sources,QString destination);
+};
+
+#endif // SERVERCATCHCOPY_H
diff --git a/test-client-catchcopy/catchcopy-api-0002/VariablesCatchcopy.h b/test-client-catchcopy/catchcopy-api-0002/VariablesCatchcopy.h
new file mode 100644
index 0000000..ce73aee
--- /dev/null
+++ b/test-client-catchcopy/catchcopy-api-0002/VariablesCatchcopy.h
@@ -0,0 +1,14 @@
+/** \file VariablesCatchcopy.h
+\brief Define the variable for catchcopy
+\author alpha_one_x86
+\version 0002
+\date 2010 */
+
+#ifndef VARIABLECATCHCOPY_H
+#define VARIABLECATCHCOPY_H
+
+#define CATCHCOPY_PROTOCOL_VERSION "0002"
+#define CATCHCOPY_COMMUNICATION_TIMEOUT 200
+
+#endif // VARIABLECATCHCOPY_H
+
diff --git a/test-client-catchcopy/catchcopy-api-0002/documentation.dox b/test-client-catchcopy/catchcopy-api-0002/documentation.dox
new file mode 100755
index 0000000..8ee4177
--- /dev/null
+++ b/test-client-catchcopy/catchcopy-api-0002/documentation.dox
@@ -0,0 +1,31 @@
+/* -*- mode: C++ ; c-file-style: "stroustrup" -*- **/
+
+/*
+ This file contains NO source code, just some documentation for doxygen to
+ parse.
+*/
+
+/*!
+ \mainpage Catchcopy API
+
+ \section mainpage_overview Overview
+
+ This code is to interface with the catchcopy protocol, the code is provided by the catchcopy projet: <a href="http://catchcopy.first-world.info/">Catchcopy web site</a>
+
+ \section mainpage_platforms Platforms
+
+ This plugin might be usable in all environments where you find Qt 4.\n
+
+ \section mainpage_downloads Downloads
+
+ You can found link on <a href="http://ultracopier.first-world.info/">Ultracopier (Supercopier/Teracopy)</a> project page, via git, snapshot sources, ...
+
+ \section mainpage_algorithm Protocol
+
+ The protocol in version 0.0.0.2 is used, you can see the documentation on <a href="http://catchcopy.first-world.info/">Catchcopy web site</a>
+
+ \section license GPL Version 3
+ The code source is under GPL3. The image is extacted from Oxygen icon pack of KDE4.
+
+*/
+
diff --git a/test-client-catchcopy/icon.ico b/test-client-catchcopy/icon.ico
new file mode 100644
index 0000000..f0296c0
--- /dev/null
+++ b/test-client-catchcopy/icon.ico
Binary files differ
diff --git a/test-client-catchcopy/images/dialog-ok-apply.png b/test-client-catchcopy/images/dialog-ok-apply.png
new file mode 100644
index 0000000..f5feac0
--- /dev/null
+++ b/test-client-catchcopy/images/dialog-ok-apply.png
Binary files differ
diff --git a/test-client-catchcopy/images/download.png b/test-client-catchcopy/images/download.png
new file mode 100755
index 0000000..4ffac41
--- /dev/null
+++ b/test-client-catchcopy/images/download.png
Binary files differ
diff --git a/test-client-catchcopy/images/main.png b/test-client-catchcopy/images/main.png
new file mode 100644
index 0000000..efdc90d
--- /dev/null
+++ b/test-client-catchcopy/images/main.png
Binary files differ
diff --git a/test-client-catchcopy/images/process-stop.png b/test-client-catchcopy/images/process-stop.png
new file mode 100644
index 0000000..a76314c
--- /dev/null
+++ b/test-client-catchcopy/images/process-stop.png
Binary files differ
diff --git a/test-client-catchcopy/images/tools-report-bug.png b/test-client-catchcopy/images/tools-report-bug.png
new file mode 100644
index 0000000..26af8d6
--- /dev/null
+++ b/test-client-catchcopy/images/tools-report-bug.png
Binary files differ
diff --git a/test-client-catchcopy/images/upload.png b/test-client-catchcopy/images/upload.png
new file mode 100755
index 0000000..4e9d532
--- /dev/null
+++ b/test-client-catchcopy/images/upload.png
Binary files differ
diff --git a/test-client-catchcopy/main.cpp b/test-client-catchcopy/main.cpp
new file mode 100644
index 0000000..bbda5ac
--- /dev/null
+++ b/test-client-catchcopy/main.cpp
@@ -0,0 +1,10 @@
+#include <QApplication>
+#include "mainwindow.h"
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+ MainWindow w;
+ w.show();
+ return a.exec();
+}
diff --git a/test-client-catchcopy/mainwindow.cpp b/test-client-catchcopy/mainwindow.cpp
new file mode 100644
index 0000000..59f2eda
--- /dev/null
+++ b/test-client-catchcopy/mainwindow.cpp
@@ -0,0 +1,305 @@
+#include <QStringList>
+#include <QListWidgetItem>
+
+#include "mainwindow.h"
+#include "ui_mainwindow.h"
+
+MainWindow::MainWindow(QWidget *parent) :
+ QMainWindow(parent),
+ ui(new Ui::MainWindow)
+{
+ ui->setupUi(this);
+ connect(&client,SIGNAL(connected()),this,SLOT(connected()));
+ connect(&client,SIGNAL(disconnected()),this,SLOT(disconnected()));
+ connect(&client,SIGNAL(errorSocket(QLocalSocket::LocalSocketError)),this,SLOT(errorSocket(QLocalSocket::LocalSocketError)));
+ connect(&client,SIGNAL(error(QString)),this,SLOT(error(QString)));
+ connect(&client,SIGNAL(dataSend(quint32 ,QStringList)),this,SLOT(dataSend(quint32 ,QStringList)));
+ connect(&client,SIGNAL(newReply(quint32 ,quint32,QStringList)),this,SLOT(newReply(quint32 ,quint32,QStringList)));
+ ui->groupBoxPredefinedFunction->setEnabled(false);
+ ui->groupBoxRaw->setEnabled(false);
+ ui->groupBoxRawSend->setEnabled(false);
+ ui->groupBoxCopyMove->setEnabled(false);
+}
+
+MainWindow::~MainWindow()
+{
+ delete ui;
+}
+
+void MainWindow::changeEvent(QEvent *e)
+{
+ QMainWindow::changeEvent(e);
+ switch (e->type()) {
+ case QEvent::LanguageChange:
+ ui->retranslateUi(this);
+ break;
+ default:
+ break;
+ }
+}
+
+void MainWindow::connected()
+{
+ ui->groupBoxPredefinedFunction->setEnabled(true);
+ ui->groupBoxRaw->setEnabled(true);
+ ui->groupBoxRawSend->setEnabled(true);
+ ui->groupBoxCopyMove->setEnabled(true);
+ ui->actionConnect->setEnabled(false);
+ ui->actionDisconnect->setEnabled(true);
+ ui->statusBar->showMessage(tr("Connected"),5000);
+}
+
+void MainWindow::disconnected()
+{
+ ui->groupBoxPredefinedFunction->setEnabled(false);
+ ui->groupBoxRaw->setEnabled(false);
+ ui->groupBoxRawSend->setEnabled(false);
+ ui->groupBoxCopyMove->setEnabled(false);
+ ui->actionConnect->setEnabled(true);
+ ui->actionDisconnect->setEnabled(false);
+ ui->listCommand->clear();
+ CommandList.clear();
+ on_listCommand_itemSelectionChanged();
+ ui->statusBar->showMessage(tr("Disconnected"),5000);
+}
+
+void MainWindow::tryConnect()
+{
+ ui->statusBar->showMessage(tr("Connection..."),5000);
+ client.connectToServer();
+}
+
+void MainWindow::tryDisconnect()
+{
+ ui->statusBar->showMessage(tr("Disconnection..."),5000);
+ client.disconnectFromServer();
+}
+
+void MainWindow::errorSocket(QLocalSocket::LocalSocketError socketError)
+{
+ if(socketError==QLocalSocket::ConnectionRefusedError)
+ ui->statusBar->showMessage(tr("Connection refused"),5000);
+ else if(socketError==QLocalSocket::PeerClosedError)
+ ui->statusBar->showMessage(tr("Peer have close the connexion"),5000);
+ else
+ ui->statusBar->showMessage(client.errorStringSocket(),5000);
+}
+
+
+void MainWindow::on_actionDisconnect_triggered()
+{
+ tryDisconnect();
+}
+
+void MainWindow::on_actionConnect_triggered()
+{
+ tryConnect();
+}
+
+void MainWindow::on_RawSendRemove_clicked()
+{
+ int index=0;
+ QList<QListWidgetItem *> list=ui->listRawSend->selectedItems();
+ while(index<list.size())
+ {
+
+ delete list.at(index);
+ index++;
+ }
+}
+
+void MainWindow::on_RawSendAdd_clicked()
+{
+ ui->listRawSend->addItem(new QListWidgetItem(ui->lineEditRawSendText->text()));
+}
+
+void MainWindow::on_sendProtocol_clicked()
+{
+ client.sendProtocol();
+}
+
+void MainWindow::on_sendRawList_clicked()
+{
+ QStringList list;
+ int index=0;
+ while(index<ui->listRawSend->count())
+ {
+ list<<ui->listRawSend->item(index)->text();
+ index++;
+ }
+ client.sendRawOrderList(list);
+}
+
+void MainWindow::stateChanged(QLocalSocket::LocalSocketState socketState)
+{
+ if(socketState==QLocalSocket::UnconnectedState)
+ disconnected();
+ else if(socketState==QLocalSocket::ConnectedState)
+ connected();
+ else
+ {
+ ui->actionConnect->setEnabled(false);
+ ui->groupBoxPredefinedFunction->setEnabled(false);
+ ui->groupBoxRaw->setEnabled(false);
+ ui->groupBoxRawSend->setEnabled(false);
+ ui->groupBoxCopyMove->setEnabled(false);
+ }
+}
+
+void MainWindow::dataSend(quint32 orderId,QStringList data)
+{
+ Command newCommand;
+ newCommand.orderId=orderId;
+ newCommand.sendTime=QTime::currentTime();
+ newCommand.replied=false;
+ newCommand.sendList=data;
+ newCommand.returnCode=0;
+ CommandList << newCommand;
+ ui->listCommand->addItem(new QListWidgetItem(QString(newCommand.sendTime.toString()+" - "+QString::number(orderId))));
+ int index=0;
+ while(index<CommandList.size())
+ {
+ if(orderId==CommandList.at(index).orderId)
+ {
+ if(data.size()!=0)
+ ui->listCommand->item(index)->setText(QString(CommandList.at(index).sendTime.toString()+") "+QString::number(orderId)+" - "+data.first()));
+ return;
+ }
+ index++;
+ }
+}
+
+void MainWindow::on_listCommand_itemSelectionChanged()
+{
+ ui->listCommandListSended->clear();
+ ui->listReplyList->clear();
+ ui->lineReplyCode->setText("");
+ if(ui->listCommand->currentRow()<0)
+ {
+ ui->listCommandListSended->setEnabled(false);
+ ui->listReplyList->setEnabled(false);
+ ui->lineReplyCode->setEnabled(false);
+ ui->timeEditReply->setEnabled(false);
+ }
+ else
+ {
+ if(ui->listCommand->currentRow()<CommandList.size())
+ {
+ ui->listCommandListSended->setEnabled(true);
+ ui->listCommandListSended->addItems(CommandList.at(ui->listCommand->currentRow()).sendList);
+ if(CommandList.at(ui->listCommand->currentRow()).replied)
+ {
+ ui->listReplyList->setEnabled(true);
+ ui->lineReplyCode->setEnabled(true);
+ ui->timeEditReply->setEnabled(true);
+ ui->listReplyList->addItems(CommandList.at(ui->listCommand->currentRow()).returnList);
+ ui->lineReplyCode->setText(QString::number(CommandList.at(ui->listCommand->currentRow()).returnCode));
+ ui->timeEditReply->setTime(CommandList.at(ui->listCommand->currentRow()).replyTime);
+ }
+ else
+ {
+ ui->timeEditReply->setEnabled(false);
+ ui->listReplyList->setEnabled(false);
+ ui->lineReplyCode->setEnabled(false);
+ }
+ }
+ else
+ qWarning() << "out of bound!";
+ }
+}
+
+void MainWindow::newReply(quint32 orderId,quint32 returnCode,QStringList returnList)
+{
+ int index=0;
+ while(index<CommandList.size())
+ {
+ if(orderId==CommandList.at(index).orderId)
+ {
+ CommandList[index].replied=true;
+ CommandList[index].replyTime=QTime::currentTime();
+ CommandList[index].returnCode=returnCode;
+ CommandList[index].returnList=returnList;
+ if(ui->listCommand->currentRow()==index)
+ on_listCommand_itemSelectionChanged();
+ return;
+ }
+ index++;
+ }
+}
+
+void MainWindow::on_pushButtonAskServerName_clicked()
+{
+ client.askServerName();
+}
+
+void MainWindow::on_pushButtonClientName_clicked()
+{
+ client.setClientName(ui->lineEditClientName->text());
+}
+
+void MainWindow::on_pushButtonProtocolName_clicked()
+{
+ client.checkProtocolExtension(ui->lineEditProtocolName->text());
+}
+
+void MainWindow::on_pushButtonProtocolNameVersion_clicked()
+{
+ client.checkProtocolExtension(ui->lineEditProtocolName->text(),ui->lineEditProtocolVersion->text());
+}
+
+void MainWindow::on_pushButtonCopyAdd_clicked()
+{
+ ui->listWidgetCopy->addItem(new QListWidgetItem(ui->lineEditAddCopy->text()));
+}
+
+void MainWindow::on_pushButtonCopyRemove_clicked()
+{
+ int index=0;
+ QList<QListWidgetItem *> list=ui->listWidgetCopy->selectedItems();
+ while(index<list.size())
+ {
+
+ delete list.at(index);
+ index++;
+ }
+}
+
+void MainWindow::on_pushButtonCopyWithoutDestination_clicked()
+{
+ QStringList list;
+ int index=0;
+ while(index<ui->listWidgetCopy->count())
+ {
+ list<<ui->listWidgetCopy->item(index)->text();
+ index++;
+ }
+ if(ui->comboBoxCopyType->currentIndex()==0)
+ client.addCopyWithoutDestination(list);
+ else
+ client.addMoveWithoutDestination(list);
+}
+
+void MainWindow::on_pushButtonCopyWithDestination_clicked()
+{
+ QStringList list;
+ int index=0;
+ while(index<ui->listWidgetCopy->count())
+ {
+ list<<ui->listWidgetCopy->item(index)->text();
+ index++;
+ }
+ if(ui->comboBoxCopyType->currentIndex()==0)
+ client.addCopyWithDestination(list,ui->lineEditCopyDestination->text());
+ else
+ client.addMoveWithDestination(list,ui->lineEditCopyDestination->text());
+}
+
+void MainWindow::error(QString error)
+{
+ ui->listError->addItem(error);
+}
+
+void MainWindow::on_listCommandListSended_itemSelectionChanged()
+{
+ on_listCommand_itemSelectionChanged();
+}
diff --git a/test-client-catchcopy/mainwindow.h b/test-client-catchcopy/mainwindow.h
new file mode 100644
index 0000000..d2dca25
--- /dev/null
+++ b/test-client-catchcopy/mainwindow.h
@@ -0,0 +1,68 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QTime>
+#include <QStringList>
+#include <QList>
+
+#include "catchcopy-api-0002/ClientCatchcopy.h"
+
+namespace Ui {
+ class MainWindow;
+}
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+ public:
+ explicit MainWindow(QWidget *parent = 0);
+ ~MainWindow();
+ protected:
+ void changeEvent(QEvent *e);
+ private:
+ Ui::MainWindow *ui;
+ ClientCatchcopy client;
+ /// \brief Structure of plugins
+ struct Command
+ {
+ QTime sendTime;
+ quint32 orderId;
+ QStringList sendList;
+ bool replied;
+ QTime replyTime;
+ quint32 returnCode;
+ QStringList returnList;
+ };
+ typedef struct Command Command;
+ QList<Command> CommandList;
+ void addCommand(int orderId);
+ private slots:
+ void connected();
+ void disconnected();
+ void tryConnect();
+ void tryDisconnect();
+ void errorSocket(QLocalSocket::LocalSocketError socketError);
+ void on_actionDisconnect_triggered();
+ void on_actionConnect_triggered();
+ void on_RawSendRemove_clicked();
+ void on_RawSendAdd_clicked();
+ void on_sendProtocol_clicked();
+ void on_sendRawList_clicked();
+ void stateChanged(QLocalSocket::LocalSocketState socketState);
+ void dataSend(quint32 orderId,QStringList data);
+ void on_listCommand_itemSelectionChanged();
+ void newReply(quint32 orderId,quint32 returnCode,QStringList returnList);
+ void on_pushButtonAskServerName_clicked();
+ void on_pushButtonClientName_clicked();
+ void on_pushButtonProtocolName_clicked();
+ void on_pushButtonProtocolNameVersion_clicked();
+ void on_pushButtonCopyAdd_clicked();
+ void on_pushButtonCopyRemove_clicked();
+ void on_pushButtonCopyWithoutDestination_clicked();
+ void on_pushButtonCopyWithDestination_clicked();
+ void error(QString error);
+ void on_listCommandListSended_itemSelectionChanged();
+};
+
+#endif // MAINWINDOW_H
diff --git a/test-client-catchcopy/mainwindow.ui b/test-client-catchcopy/mainwindow.ui
new file mode 100644
index 0000000..5b17ee7
--- /dev/null
+++ b/test-client-catchcopy/mainwindow.ui
@@ -0,0 +1,441 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>569</width>
+ <height>864</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>Test client catchcopy</string>
+ </property>
+ <property name="windowIcon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/images/main.png</normaloff>:/images/main.png</iconset>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QVBoxLayout" name="verticalLayout_7">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QGroupBox" name="groupBoxRawSend">
+ <property name="maximumSize">
+ <size>
+ <width>300</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="title">
+ <string>Raw send</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QLineEdit" name="lineEditRawSendText">
+ <property name="minimumSize">
+ <size>
+ <width>128</width>
+ <height>0</height>
+ </size>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="RawSendAdd">
+ <property name="text">
+ <string>+</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="RawSendRemove">
+ <property name="text">
+ <string>-</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QListWidget" name="listRawSend">
+ <property name="styleSheet">
+ <string notr="true">background-image: url(:/images/upload.png);
+background-position : center;
+background-repeat : no-repeat;
+background-color : #fff;
+background-attachment : fixed;
+</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="sendRawList">
+ <property name="text">
+ <string>Send</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBoxPredefinedFunction">
+ <property name="title">
+ <string>Predefined function</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="0" column="0">
+ <widget class="QPushButton" name="sendProtocol">
+ <property name="text">
+ <string>Send protocol</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="0">
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>protocol extension</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_4">
+ <item>
+ <widget class="QLabel" name="label_4">
+ <property name="text">
+ <string>Name:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditProtocolName">
+ <property name="placeholderText">
+ <string>extension</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButtonProtocolName">
+ <property name="text">
+ <string>Send name</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>Version:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditProtocolVersion">
+ <property name="placeholderText">
+ <string>version</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButtonProtocolNameVersion">
+ <property name="text">
+ <string>Send name and version</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QGroupBox" name="groupBox_2">
+ <property name="title">
+ <string>Client</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_5">
+ <item>
+ <widget class="QLineEdit" name="lineEditClientName">
+ <property name="placeholderText">
+ <string>Test client catchcopy</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButtonClientName">
+ <property name="text">
+ <string>Send name</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QPushButton" name="pushButtonAskServerName">
+ <property name="text">
+ <string>Ask server name</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <item>
+ <widget class="QGroupBox" name="groupBoxCopyMove">
+ <property name="title">
+ <string>Copy/Move</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_6">
+ <item>
+ <widget class="QComboBox" name="comboBoxCopyType">
+ <item>
+ <property name="text">
+ <string>Copy</string>
+ </property>
+ </item>
+ <item>
+ <property name="text">
+ <string>Move</string>
+ </property>
+ </item>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>Source:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <item>
+ <widget class="QLineEdit" name="lineEditAddCopy"/>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButtonCopyAdd">
+ <property name="text">
+ <string>+</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButtonCopyRemove">
+ <property name="text">
+ <string>-</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QListWidget" name="listWidgetCopy">
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>50</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-image: url(:/images/upload.png);
+background-position : center;
+background-repeat : no-repeat;
+background-color : #fff;
+background-attachment : fixed;</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButtonCopyWithoutDestination">
+ <property name="text">
+ <string>Send without destination</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>Destination:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="lineEditCopyDestination"/>
+ </item>
+ <item>
+ <widget class="QPushButton" name="pushButtonCopyWithDestination">
+ <property name="text">
+ <string>Send with destination</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBox_3">
+ <property name="title">
+ <string>Error</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QListWidget" name="listError"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="groupBoxRaw">
+ <property name="title">
+ <string>Raw</string>
+ </property>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="1">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Command</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>Sended</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QListWidget" name="listCommandListSended">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-image: url(:/images/upload.png);
+background-position : center;
+background-repeat : no-repeat;
+background-color : #fff;
+background-attachment : fixed;
+</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="3">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Reply</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="3">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QLineEdit" name="lineReplyCode">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QTimeEdit" name="timeEditReply">
+ <property name="readOnly">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QListWidget" name="listReplyList">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-image: url(:/images/download.png);
+background-position : center;
+background-repeat : no-repeat;
+background-color : #fff;
+background-attachment : fixed;
+</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="2" column="1">
+ <widget class="QListWidget" name="listCommand">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>200</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-image: url(:/images/tools-report-bug.png);
+background-position : center;
+background-repeat : no-repeat;
+background-color : #fff;
+background-attachment : fixed;
+</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QToolBar" name="mainToolBar">
+ <property name="iconSize">
+ <size>
+ <width>48</width>
+ <height>48</height>
+ </size>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextBesideIcon</enum>
+ </property>
+ <attribute name="toolBarArea">
+ <enum>TopToolBarArea</enum>
+ </attribute>
+ <attribute name="toolBarBreak">
+ <bool>false</bool>
+ </attribute>
+ <addaction name="actionConnect"/>
+ <addaction name="actionDisconnect"/>
+ </widget>
+ <widget class="QStatusBar" name="statusBar"/>
+ <action name="actionConnect">
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/images/dialog-ok-apply.png</normaloff>:/images/dialog-ok-apply.png</iconset>
+ </property>
+ <property name="text">
+ <string>Connect</string>
+ </property>
+ </action>
+ <action name="actionDisconnect">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/images/process-stop.png</normaloff>:/images/process-stop.png</iconset>
+ </property>
+ <property name="text">
+ <string>Disconnect</string>
+ </property>
+ </action>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources>
+ <include location="resources.qrc"/>
+ </resources>
+ <connections/>
+</ui>
diff --git a/test-client-catchcopy/resources-windows.rc b/test-client-catchcopy/resources-windows.rc
new file mode 100755
index 0000000..9ca49be
--- /dev/null
+++ b/test-client-catchcopy/resources-windows.rc
@@ -0,0 +1,2 @@
+IDI_ICON1 ICON DISCARDABLE "icon.ico"
+
diff --git a/test-client-catchcopy/resources.qrc b/test-client-catchcopy/resources.qrc
new file mode 100644
index 0000000..061e445
--- /dev/null
+++ b/test-client-catchcopy/resources.qrc
@@ -0,0 +1,10 @@
+<RCC>
+ <qresource prefix="/">
+ <file>images/dialog-ok-apply.png</file>
+ <file>images/download.png</file>
+ <file>images/main.png</file>
+ <file>images/process-stop.png</file>
+ <file>images/upload.png</file>
+ <file>images/tools-report-bug.png</file>
+ </qresource>
+</RCC>
diff --git a/test-client-catchcopy/test-client-catchcopy.pro b/test-client-catchcopy/test-client-catchcopy.pro
new file mode 100644
index 0000000..40b9567
--- /dev/null
+++ b/test-client-catchcopy/test-client-catchcopy.pro
@@ -0,0 +1,24 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2010-11-14T13:02:19
+#
+#-------------------------------------------------
+
+QT += core gui network widgets
+
+TARGET = test-client-catchcopy
+TEMPLATE = app
+
+
+SOURCES += main.cpp\
+ mainwindow.cpp \
+ catchcopy-api-0002/ClientCatchcopy.cpp \
+ catchcopy-api-0002/ExtraSocketCatchcopy.cpp
+
+HEADERS += mainwindow.h \
+ catchcopy-api-0002/ClientCatchcopy.h \
+ catchcopy-api-0002/ExtraSocketCatchcopy.h
+
+FORMS += mainwindow.ui
+win32:RC_FILE += resources-windows.rc
+RESOURCES += resources.qrc
diff --git a/test/button.png b/test/button.png
new file mode 100644
index 0000000..40bdd15
--- /dev/null
+++ b/test/button.png
Binary files differ
diff --git a/test/button.xcf b/test/button.xcf
new file mode 100644
index 0000000..274e2a8
--- /dev/null
+++ b/test/button.xcf
Binary files differ
diff --git a/test/chartarea/MainWindow.cpp b/test/chartarea/MainWindow.cpp
new file mode 100644
index 0000000..489fa6f
--- /dev/null
+++ b/test/chartarea/MainWindow.cpp
@@ -0,0 +1,26 @@
+#include "MainWindow.h"
+#include "ui_MainWindow.h"
+#include <QDir>
+
+MainWindow::MainWindow(QWidget *parent) :
+ QMainWindow(parent),
+ ui(new Ui::MainWindow),
+ m_map(new ChartArea::Widget(this))
+{
+ ui->setupUi(this);
+ //m_map->hide();
+ ui->verticalLayout->addWidget(m_map);
+
+ connect(&timer,&QTimer::timeout,this,&MainWindow::addValue);
+ timer.start(1000);
+}
+
+MainWindow::~MainWindow()
+{
+ delete ui;
+}
+
+void MainWindow::addValue()
+{
+ m_map->addValue(rand()%5000);
+}
diff --git a/test/chartarea/MainWindow.h b/test/chartarea/MainWindow.h
new file mode 100644
index 0000000..29a297d
--- /dev/null
+++ b/test/chartarea/MainWindow.h
@@ -0,0 +1,26 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QTimer>
+#include "widget.h"
+
+namespace Ui {
+class MainWindow;
+}
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ explicit MainWindow(QWidget *parent = 0);
+ ~MainWindow();
+ void addValue();
+private:
+ Ui::MainWindow *ui;
+ ChartArea::Widget * m_map;
+ QTimer timer;
+};
+
+#endif // MAINWINDOW_H
diff --git a/test/chartarea/MainWindow.ui b/test/chartarea/MainWindow.ui
new file mode 100644
index 0000000..312e028
--- /dev/null
+++ b/test/chartarea/MainWindow.ui
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>MainWindow</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-color: rgb(240, 240, 240);</string>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QProgressBar" name="progressBar">
+ <property name="maximumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-color: rgb(255, 255, 255,0);</string>
+ </property>
+ <property name="value">
+ <number>24</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="format">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/test/chartarea/chartarea.pro b/test/chartarea/chartarea.pro
new file mode 100644
index 0000000..91b165d
--- /dev/null
+++ b/test/chartarea/chartarea.pro
@@ -0,0 +1,35 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2019-05-30T12:37:58
+#
+#-------------------------------------------------
+
+QT += core gui
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = radialmap
+TEMPLATE = app
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which has been marked as deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+
+SOURCES += \
+ main.cpp \
+ MainWindow.cpp \
+ widget.cpp
+HEADERS += \
+ MainWindow.h \
+ widget.h
+
+FORMS += \
+ MainWindow.ui
diff --git a/test/chartarea/main.cpp b/test/chartarea/main.cpp
new file mode 100644
index 0000000..af9caac
--- /dev/null
+++ b/test/chartarea/main.cpp
@@ -0,0 +1,11 @@
+#include "MainWindow.h"
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+ MainWindow w;
+ w.show();
+
+ return a.exec();
+}
diff --git a/test/chartarea/widget.cpp b/test/chartarea/widget.cpp
new file mode 100644
index 0000000..0da898d
--- /dev/null
+++ b/test/chartarea/widget.cpp
@@ -0,0 +1,134 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+
+#include "widget.h"
+
+#include <QWidget>
+#include <QPainter>
+#include <QVector>
+#include <QPointF>
+#include <iostream>
+
+ChartArea::Widget::Widget(QWidget *parent)
+ : QWidget(parent)
+{
+ setSizePolicy(QSizePolicy::Preferred,QSizePolicy::MinimumExpanding);
+ setMinimumHeight(20);
+ setMinimumWidth(100);
+}
+
+ChartArea::Widget::~Widget()
+{
+}
+
+void ChartArea::Widget::invalidate()
+{
+}
+
+void ChartArea::Widget::resizeEvent(QResizeEvent*)
+{
+ /*std::cerr << "width(): " << width() << std::endl;
+ std::cerr << "height(): " << height() << std::endl;*/
+}
+
+void ChartArea::Widget::addValue(uint64_t value)
+{
+ //m_values.push_back(value);
+ while(m_values.size()>64)
+ m_values.erase(m_values.begin());
+ update();
+}
+
+void ChartArea::Widget::paintEvent(QPaintEvent*)
+{
+ //std::cerr << "paintEvent(): " << width() << std::endl;
+
+ QPainter painter;
+ painter.begin(this);
+ painter.drawRect(0,0,width()-1,height()-1);
+ painter.setRenderHint(QPainter::Antialiasing,true);
+ painter.setRenderHint(QPainter::SmoothPixmapTransform,true);
+ painter.setRenderHint(QPainter::HighQualityAntialiasing,true);
+
+ while(m_values.size()<64)
+ m_values.insert(m_values.begin(),0);
+ std::vector<uint64_t> values=m_values;
+ QVector<QPointF> points;
+ {
+ uint64_t max=0;
+ unsigned int index=0;
+ while(index<values.size())
+ {
+ if(max<values.at(index))
+ max=values.at(index);
+ index++;
+ }
+ if(max<=0)
+ {
+ points << QPointF(0, height()-1);
+ points << QPointF(width()/2, height()-1);
+ points << QPointF(width()-1, height()-1);
+ }
+ else
+ {
+ index=0;
+ while(index<values.size())
+ {
+ int w=width()-1;
+ int nw=w*index/(m_values.size()-1);
+ points << QPointF(nw, height()-values.at(index)*height()/max);
+ index++;
+ }
+ }
+ }
+
+ painter.setPen(Qt::NoPen);
+ QLinearGradient gradient(0,height()*0.5,0,height());
+ gradient.setColorAt(0, QColor(160,240,160,150));
+ //gradient.setColorAt(0.2, QColor(100,220,100,200));
+ gradient.setColorAt(1, QColor(160,240,160,0));
+ painter.setBrush(gradient);
+ points.push_front(QPointF(0, height()-1));
+ points.push_back(QPointF(width()-1, height()-1));
+ painter.drawPolygon(QPolygonF(points));
+
+ if(width()*height()>250000)
+ painter.setPen(QPen(QColor(160,240,160), 3));
+ else
+ painter.setPen(QPen(QColor(160,240,160), 2));
+ painter.drawPolyline(QPolygonF(points));
+
+
+ // todo: bounding rect + center flag
+ if(height()>30)
+ {
+ QFont font = painter.font();
+ int heightTemp=height()/5;
+ if(heightTemp<14)
+ heightTemp=14;
+ font.setPixelSize(heightTemp);
+ painter.setFont(font);
+
+ painter.setPen(QPen(QColor(140,140,140), 3));
+ painter.drawText(0,0,width(),height(),Qt::AlignHCenter | Qt::AlignBottom,tr("%1B/s").arg(m_values.back()));
+ }
+ painter.end();
+}
diff --git a/test/chartarea/widget.h b/test/chartarea/widget.h
new file mode 100644
index 0000000..8a4c742
--- /dev/null
+++ b/test/chartarea/widget.h
@@ -0,0 +1,49 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* 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/>.
+***********************************************************************/
+
+#ifndef WIDGET_H
+#define WIDGET_H
+
+#include <QResizeEvent>
+#include <QWidget>
+
+namespace ChartArea
+{
+
+class Widget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit Widget(QWidget* = nullptr);
+ ~Widget() override;
+ void addValue(uint64_t value);
+public Q_SLOTS:
+ void invalidate();
+protected:
+ void paintEvent(QPaintEvent*) override;
+ void resizeEvent(QResizeEvent*) override;
+private:
+ std::vector<uint64_t> m_values;
+};
+}
+
+#endif
diff --git a/test/darkbutton/DarkButton.cpp b/test/darkbutton/DarkButton.cpp
new file mode 100644
index 0000000..b785961
--- /dev/null
+++ b/test/darkbutton/DarkButton.cpp
@@ -0,0 +1,99 @@
+#include "DarkButton.h"
+#include <QPainter>
+
+DarkButton::DarkButton(QWidget *parent) :
+ QPushButton(parent)
+{
+ setMinimumHeight(36);
+ setMaximumHeight(36);
+ setStyleSheet("border:none;color:#afb;");
+ over=false;
+ enabled=true;
+}
+
+void DarkButton::paintEvent(QPaintEvent * event)
+{
+ if(backgroundLeft.isNull() || backgroundLeft.height()!=height())
+ {
+ QPixmap background(":/darkButton.png");
+ if(background.isNull())
+ abort();
+ QPixmap backgroundPushed(":/darkButtonPushed.png");
+ if(backgroundPushed.isNull())
+ abort();
+ QPixmap over(":/darkButtonOver.png");
+ if(over.isNull())
+ abort();
+ if(height()==background.height())
+ {
+ backgroundLeft=background.copy(0,0,10,36);
+ backgroundMiddle=background.copy(10,0,46,36);
+ backgroundRight=background.copy(56,0,10,36);
+ backgroundPushedLeft=backgroundPushed.copy(0,0,10,36);
+ backgroundPushedMiddle=backgroundPushed.copy(10,0,46,36);
+ backgroundPushedRight=backgroundPushed.copy(56,0,10,36);
+ overLeft=over.copy(0,0,10,36);
+ overMiddle=over.copy(10,0,46,36);
+ overRight=over.copy(56,0,10,36);
+ }
+ else
+ {
+ backgroundLeft=background.copy(0,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundMiddle=background.copy(10,0,46,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundRight=background.copy(56,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundPushedLeft=backgroundPushed.copy(0,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundPushedMiddle=backgroundPushed.copy(10,0,46,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundPushedRight=backgroundPushed.copy(56,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ overLeft=over.copy(0,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ overMiddle=over.copy(10,0,46,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ overRight=over.copy(56,0,10,36).scaledToHeight(height(),Qt::SmoothTransformation);
+ }
+ }
+ QPainter paint;
+ paint.begin(this);
+ if(enabled && !isEnabled())
+ {
+ setStyleSheet("border:none;color:#fab;");
+ enabled=false;
+ }
+ if(!enabled && isEnabled())
+ {
+ setStyleSheet("border:none;color:#afb;");
+ enabled=true;
+ }
+ if(isDown() && isEnabled())
+ {
+ paint.drawPixmap(0,0,backgroundPushedLeft.width(), backgroundPushedLeft.height(), backgroundPushedLeft);
+ paint.drawPixmap(backgroundPushedLeft.width(), 0,
+ width()-backgroundPushedLeft.width()-backgroundPushedRight.width(), backgroundPushedLeft.height(),backgroundPushedMiddle);
+ paint.drawPixmap(width()-backgroundPushedRight.width(),0, backgroundPushedRight.width(), backgroundPushedRight.height(),backgroundPushedRight);
+ }
+ else
+ {
+ paint.drawPixmap(0,0,backgroundLeft.width(), backgroundLeft.height(), backgroundLeft);
+ paint.drawPixmap(backgroundLeft.width(), 0,
+ width()-backgroundLeft.width()-backgroundRight.width(), backgroundLeft.height(),backgroundMiddle);
+ paint.drawPixmap(width()-backgroundRight.width(),0, backgroundRight.width(), backgroundRight.height(),backgroundRight);
+ }
+ if(over && isEnabled())
+ {
+ paint.drawPixmap(0,0,overLeft.width(), overLeft.height(), overLeft);
+ paint.drawPixmap(overLeft.width(), 0,
+ width()-overLeft.width()-overRight.width(), overLeft.height(),overMiddle);
+ paint.drawPixmap(width()-overRight.width(),0, overRight.width(), overRight.height(),overRight);
+ }
+ QPushButton::paintEvent(event);
+}
+
+void DarkButton::enterEvent(QEvent *e)
+{
+ over=true;
+ QWidget::enterEvent(e);
+ update();
+}
+void DarkButton::leaveEvent(QEvent *e)
+{
+ over=false;
+ QWidget::leaveEvent(e);
+ update();
+}
diff --git a/test/darkbutton/DarkButton.h b/test/darkbutton/DarkButton.h
new file mode 100644
index 0000000..38dbb60
--- /dev/null
+++ b/test/darkbutton/DarkButton.h
@@ -0,0 +1,22 @@
+#ifndef DarkButton_H
+#define DarkButton_H
+
+#include <QPushButton>
+
+class DarkButton : public QPushButton
+{
+public:
+ DarkButton(QWidget *parent = nullptr);
+ void paintEvent(QPaintEvent *) override;
+protected:
+ void enterEvent(QEvent *e) override;
+ void leaveEvent(QEvent *e) override;
+private:
+ QPixmap backgroundLeft,backgroundMiddle,backgroundRight;
+ QPixmap backgroundPushedLeft,backgroundPushedMiddle,backgroundPushedRight;
+ QPixmap overLeft,overMiddle,overRight;
+ bool over;
+ bool enabled;
+};
+
+#endif // PROGRESSBARDARK_H
diff --git a/test/darkbutton/MainWindow.cpp b/test/darkbutton/MainWindow.cpp
new file mode 100644
index 0000000..78cda6a
--- /dev/null
+++ b/test/darkbutton/MainWindow.cpp
@@ -0,0 +1,41 @@
+#include "MainWindow.h"
+#include "ui_MainWindow.h"
+#include <sys/stat.h>
+#include <iostream>
+#include <dirent.h>
+#include <stdio.h>
+
+MainWindow::MainWindow(QWidget *parent) :
+ QMainWindow(parent),
+ ui(new Ui::MainWindow),
+ darkButton(new DarkButton)
+{
+ ui->setupUi(this);
+
+ darkButton->setText("toto");
+ QIcon icon;
+ icon.addFile(QString::fromUtf8(":/cancelDarkD.png"), QSize(), QIcon::Normal, QIcon::Off);
+ icon.addFile(QString::fromUtf8(":/cancelDarkE.png"), QSize(), QIcon::Normal, QIcon::On);
+ darkButton->setIcon(icon);
+ darkButton->setCheckable(true);
+
+ ui->verticalLayout->addWidget(darkButton);
+ connect(&timer,&QTimer::timeout,this,&MainWindow::create);
+ timer.start(1000);
+}
+
+MainWindow::~MainWindow()
+{
+ delete ui;
+}
+
+void MainWindow::create()
+{
+ if(darkButton->isChecked())
+ {
+ darkButton->setEnabled(!darkButton->isEnabled());
+ darkButton->setChecked(false);
+ }
+ else
+ darkButton->setChecked(true);
+}
diff --git a/test/darkbutton/MainWindow.h b/test/darkbutton/MainWindow.h
new file mode 100644
index 0000000..118257f
--- /dev/null
+++ b/test/darkbutton/MainWindow.h
@@ -0,0 +1,26 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QTimer>
+#include "DarkButton.h"
+
+namespace Ui {
+class MainWindow;
+}
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ explicit MainWindow(QWidget *parent = 0);
+ ~MainWindow();
+ void create();
+private:
+ Ui::MainWindow *ui;
+ DarkButton * darkButton;
+ QTimer timer;
+};
+
+#endif // MAINWINDOW_H
diff --git a/test/darkbutton/MainWindow.ui b/test/darkbutton/MainWindow.ui
new file mode 100644
index 0000000..246d92c
--- /dev/null
+++ b/test/darkbutton/MainWindow.ui
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>MainWindow</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">#MainWindow{background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgb(70, 70, 70), stop:1 rgb(40, 40, 40));}</string>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QVBoxLayout" name="verticalLayout"/>
+ </widget>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/test/darkbutton/cancelDarkD.png b/test/darkbutton/cancelDarkD.png
new file mode 100644
index 0000000..a2f4556
--- /dev/null
+++ b/test/darkbutton/cancelDarkD.png
Binary files differ
diff --git a/test/darkbutton/cancelDarkE.png b/test/darkbutton/cancelDarkE.png
new file mode 100644
index 0000000..1cda258
--- /dev/null
+++ b/test/darkbutton/cancelDarkE.png
Binary files differ
diff --git a/test/darkbutton/darkButton.png b/test/darkbutton/darkButton.png
new file mode 100644
index 0000000..561fc02
--- /dev/null
+++ b/test/darkbutton/darkButton.png
Binary files differ
diff --git a/test/darkbutton/darkButtonOver.png b/test/darkbutton/darkButtonOver.png
new file mode 100644
index 0000000..ea42018
--- /dev/null
+++ b/test/darkbutton/darkButtonOver.png
Binary files differ
diff --git a/test/darkbutton/darkButtonPushed.png b/test/darkbutton/darkButtonPushed.png
new file mode 100644
index 0000000..e2e63a5
--- /dev/null
+++ b/test/darkbutton/darkButtonPushed.png
Binary files differ
diff --git a/test/darkbutton/darkbutton.pro b/test/darkbutton/darkbutton.pro
new file mode 100644
index 0000000..fc31c76
--- /dev/null
+++ b/test/darkbutton/darkbutton.pro
@@ -0,0 +1,38 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2019-05-30T12:37:58
+#
+#-------------------------------------------------
+
+QT += core gui
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = darkbutton
+TEMPLATE = app
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which has been marked as deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+FORMS += \
+ MainWindow.ui
+
+HEADERS += \
+ MainWindow.h \
+ DarkButton.h
+
+SOURCES += \
+ main.cpp \
+ MainWindow.cpp \
+ DarkButton.cpp
+
+RESOURCES += \
+ res.qrc
diff --git a/test/darkbutton/main.cpp b/test/darkbutton/main.cpp
new file mode 100644
index 0000000..af9caac
--- /dev/null
+++ b/test/darkbutton/main.cpp
@@ -0,0 +1,11 @@
+#include "MainWindow.h"
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+ MainWindow w;
+ w.show();
+
+ return a.exec();
+}
diff --git a/test/darkbutton/res.qrc b/test/darkbutton/res.qrc
new file mode 100644
index 0000000..cd9341b
--- /dev/null
+++ b/test/darkbutton/res.qrc
@@ -0,0 +1,9 @@
+<RCC>
+ <qresource prefix="/">
+ <file>darkButton.png</file>
+ <file>darkButtonPushed.png</file>
+ <file>darkButtonOver.png</file>
+ <file>cancelDarkE.png</file>
+ <file>cancelDarkD.png</file>
+ </qresource>
+</RCC>
diff --git a/test/progressbardark/MainWindow.cpp b/test/progressbardark/MainWindow.cpp
new file mode 100644
index 0000000..07939bc
--- /dev/null
+++ b/test/progressbardark/MainWindow.cpp
@@ -0,0 +1,32 @@
+#include "MainWindow.h"
+#include "ui_MainWindow.h"
+#include <sys/stat.h>
+#include <iostream>
+#include <dirent.h>
+#include <stdio.h>
+
+MainWindow::MainWindow(QWidget *parent) :
+ QMainWindow(parent),
+ ui(new Ui::MainWindow),
+ progressBarDark(new ProgressBarDark)
+{
+ ui->setupUi(this);
+ ui->verticalLayout->addWidget(progressBarDark);
+ connect(&treeTimer,&QTimer::timeout,this,&MainWindow::create);
+ treeTimer.start(100);
+}
+
+MainWindow::~MainWindow()
+{
+ delete ui;
+}
+
+void MainWindow::create()
+{
+ int val=progressBarDark->value();
+ if(val>=100)
+ val=0;
+ else
+ val++;
+ progressBarDark->setValue(val);
+}
diff --git a/test/progressbardark/MainWindow.h b/test/progressbardark/MainWindow.h
new file mode 100644
index 0000000..7fcf988
--- /dev/null
+++ b/test/progressbardark/MainWindow.h
@@ -0,0 +1,26 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QTimer>
+#include "ProgressBarDark.h"
+
+namespace Ui {
+class MainWindow;
+}
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ explicit MainWindow(QWidget *parent = 0);
+ ~MainWindow();
+ void create();
+private:
+ Ui::MainWindow *ui;
+ ProgressBarDark * progressBarDark;
+ QTimer treeTimer;
+};
+
+#endif // MAINWINDOW_H
diff --git a/test/progressbardark/MainWindow.ui b/test/progressbardark/MainWindow.ui
new file mode 100644
index 0000000..246d92c
--- /dev/null
+++ b/test/progressbardark/MainWindow.ui
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>MainWindow</string>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">#MainWindow{background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgb(70, 70, 70), stop:1 rgb(40, 40, 40));}</string>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QVBoxLayout" name="verticalLayout"/>
+ </widget>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/test/progressbardark/ProgressBarDark.cpp b/test/progressbardark/ProgressBarDark.cpp
new file mode 100644
index 0000000..a03167e
--- /dev/null
+++ b/test/progressbardark/ProgressBarDark.cpp
@@ -0,0 +1,50 @@
+#include "ProgressBarDark.h"
+#include <QPainter>
+
+ProgressBarDark::ProgressBarDark(QWidget *parent) :
+ QProgressBar(parent)
+{
+ setMinimumHeight(22);
+ setMaximumHeight(22);
+}
+
+void ProgressBarDark::paintEvent(QPaintEvent *)
+{
+ if(backgroundLeft.isNull() || backgroundLeft.height()!=height())
+ {
+ QPixmap background(":/progressBarout.png");
+ QPixmap bar(":/progressBarin.png");
+ if(height()==background.height())
+ {
+ backgroundLeft=background.copy(0,0,24,55);
+ backgroundMiddle=background.copy(24,0,701,55);
+ backgroundRight=background.copy(725,0,24,55);
+ barLeft=bar.copy(0,0,24,55);
+ barMiddle=bar.copy(24,0,701,55);
+ barRight=bar.copy(725,0,24,55);
+ }
+ else
+ {
+ backgroundLeft=background.copy(0,0,24,55).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundMiddle=background.copy(24,0,701,55).scaledToHeight(height(),Qt::SmoothTransformation);
+ backgroundRight=background.copy(725,0,24,55).scaledToHeight(height(),Qt::SmoothTransformation);
+ barLeft=bar.copy(0,0,24,55).scaledToHeight(height(),Qt::SmoothTransformation);
+ barMiddle=bar.copy(24,0,701,55).scaledToHeight(height(),Qt::SmoothTransformation);
+ barRight=bar.copy(725,0,24,55).scaledToHeight(height(),Qt::SmoothTransformation);
+ }
+ }
+ int size=width()-barLeft.width()-barRight.width();
+ int inpixel=value()*size/maximum();
+ QPainter paint;
+ paint.begin(this);
+ paint.drawPixmap(0,0,backgroundLeft.width(), backgroundLeft.height(), backgroundLeft);
+ paint.drawPixmap(0,0,barLeft.width(), barLeft.height(), barLeft);
+
+ paint.drawPixmap(backgroundLeft.width(), 0,
+ width()-backgroundLeft.width()-backgroundRight.width(), backgroundLeft.height(),backgroundMiddle);
+ paint.drawPixmap(barLeft.width(), 0,
+ inpixel, barLeft.height(),barMiddle);
+
+ paint.drawPixmap(width()-backgroundRight.width(),0, backgroundRight.width(), backgroundRight.height(),backgroundRight);
+ paint.drawPixmap(barLeft.width()+inpixel, 0, barRight.width(), barRight.height(),barRight);
+}
diff --git a/test/progressbardark/ProgressBarDark.h b/test/progressbardark/ProgressBarDark.h
new file mode 100644
index 0000000..9bf92f8
--- /dev/null
+++ b/test/progressbardark/ProgressBarDark.h
@@ -0,0 +1,16 @@
+#ifndef PROGRESSBARDARK_H
+#define PROGRESSBARDARK_H
+
+#include <QProgressBar>
+
+class ProgressBarDark : public QProgressBar
+{
+public:
+ ProgressBarDark(QWidget *parent = nullptr);
+ void paintEvent(QPaintEvent *) override;
+private:
+ QPixmap backgroundLeft,backgroundMiddle,backgroundRight;
+ QPixmap barLeft,barMiddle,barRight;
+};
+
+#endif // PROGRESSBARDARK_H
diff --git a/test/progressbardark/main.cpp b/test/progressbardark/main.cpp
new file mode 100644
index 0000000..af9caac
--- /dev/null
+++ b/test/progressbardark/main.cpp
@@ -0,0 +1,11 @@
+#include "MainWindow.h"
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+ MainWindow w;
+ w.show();
+
+ return a.exec();
+}
diff --git a/test/progressbardark/progressBarin.png b/test/progressbardark/progressBarin.png
new file mode 100644
index 0000000..6af26c7
--- /dev/null
+++ b/test/progressbardark/progressBarin.png
Binary files differ
diff --git a/test/progressbardark/progressBarout.png b/test/progressbardark/progressBarout.png
new file mode 100644
index 0000000..08f3748
--- /dev/null
+++ b/test/progressbardark/progressBarout.png
Binary files differ
diff --git a/test/progressbardark/progressbardark.pro b/test/progressbardark/progressbardark.pro
new file mode 100644
index 0000000..bdf4f71
--- /dev/null
+++ b/test/progressbardark/progressbardark.pro
@@ -0,0 +1,38 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2019-05-30T12:37:58
+#
+#-------------------------------------------------
+
+QT += core gui
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = progressbardark
+TEMPLATE = app
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which has been marked as deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+FORMS += \
+ MainWindow.ui
+
+HEADERS += \
+ MainWindow.h \
+ ProgressBarDark.h
+
+SOURCES += \
+ main.cpp \
+ MainWindow.cpp \
+ ProgressBarDark.cpp
+
+RESOURCES += \
+ res.qrc
diff --git a/test/progressbardark/progressbardark.pro.user.4.8-pre1 b/test/progressbardark/progressbardark.pro.user.4.8-pre1
new file mode 100644
index 0000000..efcb89e
--- /dev/null
+++ b/test/progressbardark/progressbardark.pro.user.4.8-pre1
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.6.2, 2019-06-16T18:36:54. -->
+<qtcreator>
+ <data>
+ <variable>EnvironmentId</variable>
+ <value type="QByteArray">{74ab603f-f657-4135-92cf-c93af71b2f91}</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.ActiveTarget</variable>
+ <value type="int">0</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.EditorSettings</variable>
+ <valuemap type="QVariantMap">
+ <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+ <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+ <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+ <value type="QString" key="language">Cpp</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+ </valuemap>
+ </valuemap>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
+ <value type="QString" key="language">QmlJS</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
+ </valuemap>
+ </valuemap>
+ <value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
+ <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+ <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+ <value type="int" key="EditorConfiguration.IndentSize">4</value>
+ <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+ <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+ <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+ <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+ <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+ <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+ <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+ <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+ <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+ <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+ <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+ <value type="int" key="EditorConfiguration.TabSize">8</value>
+ <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+ <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+ <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+ <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+ <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+ <value type="bool" key="EditorConfiguration.inEntireDocument">true</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.PluginSettings</variable>
+ <valuemap type="QVariantMap"/>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.0</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{23178a1c-09be-4e9f-9aab-ff55e05e7637}</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/test/build-progressbardark-Desktop-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/test/build-progressbardark-Desktop-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/sources/test/build-progressbardark-Desktop-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments">
+ <value type="QString">-w</value>
+ <value type="QString">-r</value>
+ </valuelist>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
+ <value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
+ <value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
+ <value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
+ <value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+ <value type="int">0</value>
+ <value type="int">1</value>
+ <value type="int">2</value>
+ <value type="int">3</value>
+ <value type="int">4</value>
+ <value type="int">5</value>
+ <value type="int">6</value>
+ <value type="int">7</value>
+ <value type="int">8</value>
+ <value type="int">9</value>
+ <value type="int">10</value>
+ <value type="int">11</value>
+ <value type="int">12</value>
+ <value type="int">13</value>
+ <value type="int">14</value>
+ </valuelist>
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">progressbardark</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/user/Desktop/ultracopier/sources/test/progressbardark/progressbardark.pro</value>
+ <value type="bool" key="QmakeProjectManager.QmakeRunConfiguration.UseLibrarySearchPath">true</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">progressbardark.pro</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory.default">/home/user/Desktop/ultracopier/sources/test/build-progressbardark-Desktop-Debug</value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.TargetCount</variable>
+ <value type="int">1</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+ <value type="int">18</value>
+ </data>
+ <data>
+ <variable>Version</variable>
+ <value type="int">18</value>
+ </data>
+</qtcreator>
diff --git a/test/progressbardark/res.qrc b/test/progressbardark/res.qrc
new file mode 100644
index 0000000..c4486c9
--- /dev/null
+++ b/test/progressbardark/res.qrc
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource prefix="/">
+ <file>progressBarin.png</file>
+ <file>progressBarout.png</file>
+ </qresource>
+</RCC>
diff --git a/test/radialmap/Config.cpp b/test/radialmap/Config.cpp
new file mode 100644
index 0000000..b36c392
--- /dev/null
+++ b/test/radialmap/Config.cpp
@@ -0,0 +1,31 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+
+#include "Config.h"
+
+#include <QFont>
+
+bool Config::varyLabelFontSizes=true;
+bool Config::showSmallFiles=false;
+bool Config::antialias=true;
+uint Config::contrast=94;
+int Config::minFontPitch=QFont().pointSize() - 3;
+uint Config::defaultRingDepth=4;
diff --git a/test/radialmap/Config.h b/test/radialmap/Config.h
new file mode 100644
index 0000000..1fb43df
--- /dev/null
+++ b/test/radialmap/Config.h
@@ -0,0 +1,45 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* 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/>.
+***********************************************************************/
+
+#ifndef Config_H
+#define Config_H
+
+#include <QStringList>
+
+namespace Filelight
+{
+class Config
+{
+public:
+ //keep everything positive, avoid using DON'T, NOT or NO
+
+ static bool varyLabelFontSizes;
+ static bool showSmallFiles;
+ static uint contrast;
+ static bool antialias;
+ static int minFontPitch;
+ static uint defaultRingDepth;
+};
+}
+
+using Filelight::Config;
+
+#endif
diff --git a/test/radialmap/MainWindow.cpp b/test/radialmap/MainWindow.cpp
new file mode 100644
index 0000000..5bebc05
--- /dev/null
+++ b/test/radialmap/MainWindow.cpp
@@ -0,0 +1,81 @@
+#include "MainWindow.h"
+#include "ui_MainWindow.h"
+#include "radialMap/widget.h"
+#include <sys/stat.h>
+#include <iostream>
+#include <dirent.h>
+#include <stdio.h>
+
+MainWindow::MainWindow(QWidget *parent) :
+ QMainWindow(parent),
+ ui(new Ui::MainWindow),
+ m_map(new RadialMap::Widget(this)),
+ tree(new Folder(""))
+{
+ recursiveTreeLoad(tree,"/etc/");
+
+ ui->setupUi(this);
+ //m_map->hide();
+ ui->verticalLayout->addWidget(m_map);
+ connect(&treeTimer,&QTimer::timeout,this,&MainWindow::create);
+ treeTimer.setSingleShot(true);
+ treeTimer.start(1);
+}
+
+MainWindow::~MainWindow()
+{
+ delete ui;
+}
+
+void MainWindow::create()
+{
+ m_map->create(tree);
+}
+
+uint64_t MainWindow::recursiveTreeLoad(Folder * tree,std::string folder)
+{
+ uint64_t size=0;
+ DIR *d;
+ struct dirent *entry;
+ d = opendir(folder.c_str());
+ if (d)
+ {
+ while ((entry = readdir(d)) != NULL)
+ {
+ if(entry==NULL)
+ break;
+ bool skip=false;
+ if(entry->d_name[0]=='.')
+ {
+ if(entry->d_name[1]==0x00)
+ skip=true;
+ else if(entry->d_name[1]=='.' && entry->d_name[2]==0x00)
+ skip=true;
+ }
+ if(!skip)
+ {
+
+ if(entry->d_type == DT_DIR)
+ {
+ Folder * newDir=new Folder(entry->d_name);
+ size+=recursiveTreeLoad(newDir,folder+entry->d_name+"/");
+ tree->append(newDir);
+ }
+ else
+ {
+ struct stat statbuf;
+ std::string path=folder+entry->d_name;
+ if(stat(path.c_str(), &statbuf) != -1)
+ {
+ size+=statbuf.st_size;
+ tree->append(entry->d_name,statbuf.st_size);
+ }
+ }
+ }
+ }
+ closedir(d);
+ }
+ if(tree->size()!=size)//wrong is recursiveTreeLoad() is call after append
+ abort();
+ return size;
+}
diff --git a/test/radialmap/MainWindow.h b/test/radialmap/MainWindow.h
new file mode 100644
index 0000000..1e0a4f7
--- /dev/null
+++ b/test/radialmap/MainWindow.h
@@ -0,0 +1,29 @@
+#ifndef MAINWINDOW_H
+#define MAINWINDOW_H
+
+#include <QMainWindow>
+#include <QTimer>
+#include "radialMap/widget.h"
+
+namespace Ui {
+class MainWindow;
+}
+
+class MainWindow : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ explicit MainWindow(QWidget *parent = 0);
+ ~MainWindow();
+ void create();
+private:
+ Ui::MainWindow *ui;
+ RadialMap::Widget * m_map;
+ Folder * tree;
+ QTimer treeTimer;
+
+ uint64_t recursiveTreeLoad(Folder * tree, std::string folder);
+};
+
+#endif // MAINWINDOW_H
diff --git a/test/radialmap/MainWindow.ui b/test/radialmap/MainWindow.ui
new file mode 100644
index 0000000..7b51134
--- /dev/null
+++ b/test/radialmap/MainWindow.ui
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>MainWindow</class>
+ <widget class="QMainWindow" name="MainWindow">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>MainWindow</string>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QProgressBar" name="progressBar">
+ <property name="maximumSize">
+ <size>
+ <width>30</width>
+ <height>30</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-color: rgb(255, 255, 255,0);</string>
+ </property>
+ <property name="value">
+ <number>24</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="format">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ <layoutdefault spacing="6" margin="11"/>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/test/radialmap/fileTree.cpp b/test/radialmap/fileTree.cpp
new file mode 100644
index 0000000..84c7938
--- /dev/null
+++ b/test/radialmap/fileTree.cpp
@@ -0,0 +1,54 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+* Copyright 2017 Harald Sitter <sitter@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+
+#include "fileTree.h"
+
+#include <QDir>
+#include <QUrl>
+
+QString File::displayName() const {
+ const QString decodedName = QFile::decodeName(m_name);
+ return url().isLocalFile() ? QDir::toNativeSeparators(decodedName) : decodedName;
+}
+
+QString File::displayPath(const Folder *root) const
+{
+ // Use QUrl to sanitize the path for display and then run it through
+ // QDir to make sure we use native path separators.
+ const QUrl url = this->url(root);
+ const QString cleanPath = url.toDisplayString(QUrl::PreferLocalFile | QUrl::NormalizePathSegments);
+ return url.isLocalFile() ? QDir::toNativeSeparators(cleanPath) : cleanPath;
+}
+
+QUrl File::url(const Folder *root) const
+{
+ QString path;
+
+ if (root == this)
+ root = nullptr; //prevent returning empty string when there is something we could return
+
+ for (const Folder *d = (Folder*)this; d != root && d; d = d->parent()) {
+ path.prepend(QFile::decodeName(d->name8Bit()));
+ }
+
+ return QUrl::fromUserInput(path, QString(), QUrl::AssumeLocalFile);
+}
diff --git a/test/radialmap/fileTree.h b/test/radialmap/fileTree.h
new file mode 100644
index 0000000..6baa316
--- /dev/null
+++ b/test/radialmap/fileTree.h
@@ -0,0 +1,157 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+* Copyright 2017 Harald Sitter <sitter@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* 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/>.
+***********************************************************************/
+
+#ifndef FILETREE_H
+#define FILETREE_H
+
+#include <QByteArray> //qstrdup
+#include <QFile> //decodeName()
+#include <QDebug>
+#include <QLocale>
+
+#include <stdlib.h>
+
+typedef quint64 FileSize;
+typedef quint64 Dirsize; //**** currently unused
+
+class Folder;
+
+class File
+{
+public:
+ friend class Folder;
+
+public:
+ File(const char *name, FileSize size) : m_parent(nullptr), m_name(qstrdup(name)), m_size(size) {}
+ virtual ~File() {
+ delete [] m_name;
+ }
+
+ Folder *parent() const {
+ return m_parent;
+ }
+
+ /** Do not use for user visible strings. Use name instead. */
+ const char *name8Bit() const {
+ return m_name;
+ }
+ /** Decoded name. Use when you need a QString. */
+ QString decodedName() const {
+ return QFile::decodeName(m_name);
+ }
+ /**
+ * Human readable name (including native separators where applicable).
+ * Only use for display.
+ */
+ QString displayName() const;
+
+ FileSize size() const {
+ return m_size;
+ }
+
+ virtual bool isFolder() const {
+ return false;
+ }
+
+ /**
+ * Human readable path for display (including native separators where applicable.
+ * Only use for display.
+ */
+ QString displayPath(const Folder * = nullptr) const;
+ QString humanReadableSize() const {
+ return QString::number(m_size);
+ }
+
+ /** Builds a complete QUrl by walking up to root. */
+ QUrl url(const Folder *root = nullptr) const;
+
+protected:
+ File(const char *name, FileSize size, Folder *parent) : m_parent(parent), m_name(qstrdup(name)), m_size(size) {}
+
+ Folder *m_parent; //0 if this is treeRoot
+ char *m_name;
+ FileSize m_size; //in units of KiB
+
+private:
+ File(const File&);
+ void operator=(const File&);
+};
+
+
+class Folder : public File
+{
+public:
+ Folder(const char *name) : File(name, 0), m_children(0) {} //DON'T pass the full path!
+
+ uint children() const {
+ return m_children;
+ }
+ bool isFolder() const override {
+ return true;
+ }
+
+ ///appends a Folder
+ void append(Folder *d, const char *name=nullptr)
+ {
+ if (name) {
+ delete [] d->m_name;
+ d->m_name = qstrdup(name);
+ } //directories that had a fullpath copy just their names this way
+
+ m_children += d->children(); //doesn't include the dir itself
+ d->m_parent = this;
+ append((File*)d); //will add 1 to filecount for the dir itself
+ }
+
+ ///appends a File
+ void append(const char *name, FileSize size)
+ {
+ append(new File(name, size, this));
+ }
+
+ /// removes a file
+ void remove(const File *f) {
+ files.removeAll(const_cast<File*>(f));
+
+ for (Folder *d = this; d; d = d->parent()) {
+ d->m_size -= f->size();
+ }
+ }
+
+ QList<File *> files;
+
+private:
+ void append(File *p)
+ {
+ m_children++;
+ m_size += p->size();
+ files.append(p);
+ }
+
+ uint m_children;
+
+private:
+ Folder(const Folder&); //undefined
+ void operator=(const Folder&); //undefined
+};
+
+#endif
diff --git a/test/radialmap/main.cpp b/test/radialmap/main.cpp
new file mode 100644
index 0000000..af9caac
--- /dev/null
+++ b/test/radialmap/main.cpp
@@ -0,0 +1,11 @@
+#include "MainWindow.h"
+#include <QApplication>
+
+int main(int argc, char *argv[])
+{
+ QApplication a(argc, argv);
+ MainWindow w;
+ w.show();
+
+ return a.exec();
+}
diff --git a/test/radialmap/radialMap/labels.cpp b/test/radialmap/radialMap/labels.cpp
new file mode 100644
index 0000000..030f4f4
--- /dev/null
+++ b/test/radialmap/radialMap/labels.cpp
@@ -0,0 +1,317 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+
+#include <QFont>
+#include <QFontMetrics>
+#include <QPainter>
+#include <QVector>
+
+#include "Config.h"
+#include "fileTree.h"
+#include "radialMap.h"
+#include "sincos.h"
+#include "widget.h"
+
+
+
+namespace RadialMap
+{
+class Label
+{
+public:
+ Label(const RadialMap::Segment *s, int l) : segment(s), level(l), angle(segment->start() + (segment->length() / 2)) { }
+
+ bool tooClose(const int otherAngle) const {
+ return (angle > otherAngle - LABEL_ANGLE_MARGIN && angle < otherAngle + LABEL_ANGLE_MARGIN);
+ }
+
+ const RadialMap::Segment *segment;
+ const unsigned int level;
+ const int angle;
+
+ int targetX, targetY, middleX, startY, startX;
+ int textX, textY, tw, th;
+
+ QString qs;
+};
+
+void RadialMap::Widget::paintExplodedLabels(QPainter &paint) const
+{
+ //we are a friend of RadialMap::Map
+
+ QVector<Label*> list;
+ unsigned int startLevel = 0;
+
+
+ //1. Create list of labels sorted in the order they will be rendered
+
+ if (m_focus && m_focus->file() != m_tree) { //separate behavior for selected vs unselected segments
+ //don't bother with files
+ if (m_focus && m_focus->file() && !m_focus->file()->isFolder()) {
+ return;
+ }
+
+ //find the range of levels we will be potentially drawing labels for
+ //startLevel is the level above whatever m_focus is in
+ for (const Folder *p = (const Folder*)m_focus->file(); p != m_tree; ++startLevel) {
+ p = p->parent();
+ }
+
+ //range=2 means 2 levels to draw labels for
+
+ const uint start = m_focus->start();
+ const uint end = m_focus->end(); //boundary angles
+ const uint minAngle = int(m_focus->length() * LABEL_MIN_ANGLE_FACTOR);
+
+
+ //**** Levels should be on a scale starting with 0
+ //**** range is a useless parameter
+ //**** keep a topblock var which is the lowestLevel OR startLevel for indentation purposes
+ for (unsigned int i = startLevel; i <= m_map.m_visibleDepth; ++i) {
+ for (const Segment *segment : m_map.m_signature[i]) {
+ if (segment->start() >= start && segment->end() <= end) {
+ if (segment->length() > minAngle) {
+ list.append(new Label(segment, i));
+ }
+ }
+ }
+ }
+ } else {
+ for (Segment *segment : *m_map.m_signature) {
+ if (segment->length() > 288) {
+ list.append(new Label(segment, 0));
+
+ }
+ }
+ }
+
+ std::sort(list.begin(), list.end(), [](Label *item1, Label *item2) {
+ //you add 1440 to work round the fact that later you want the circle split vertically
+ //and as it is you start at 3 o' clock. It's to do with rightPrevY, stops annoying bug
+
+ int angle1 = (item1)->angle + 1440;
+ int angle2 = (item2)->angle + 1440;
+
+ // Also sort by level
+ if (angle1 == angle2) {
+ return (item1->level > item2->level);
+ }
+
+ if (angle1 > 5760) angle1 -= 5760;
+ if (angle2 > 5760) angle2 -= 5760;
+
+ return (angle1 < angle2);
+
+ });
+
+ //2. Check to see if any adjacent labels are too close together
+ // if so, remove it (the least significant labels, since we sort by level too).
+
+ int pos = 0;
+ while (pos < list.size() - 1) {
+ if (list[pos]->tooClose(list[pos+1]->angle)) {
+ delete list.takeAt(pos+1);
+ } else {
+ ++pos;
+ }
+ }
+
+ //used in next two steps
+ bool varySizes;
+ //**** should perhaps use doubles
+ int *sizes = new int [ m_map.m_visibleDepth + 1 ]; //**** make sizes an array of floats I think instead (or doubles)
+
+ // If the minimum is larger than the default it fucks up further down
+ if (paint.font().pointSize() < 0 ||
+ paint.font().pointSize() < Config::minFontPitch) {
+ QFont font = paint.font();
+ font.setPointSize(Config::minFontPitch);
+ paint.setFont(font);
+ }
+
+ QVector<Label*>::iterator it;
+
+ do {
+ //3. Calculate font sizes
+
+ {
+ //determine current range of levels to draw for
+ uint range = 0;
+
+ for (Label *label : list) {
+ range = qMax(range, label->level);
+
+ //**** better way would just be to assign if nothing is range
+ }
+
+ range -= startLevel; //range 0 means 1 level of labels
+
+ varySizes = Config::varyLabelFontSizes && (range != 0);
+
+ if (varySizes) {
+ //create an array of font sizes for various levels
+ //will exceed normal font pitch automatically if necessary, but not minPitch
+ //**** this needs to be checked lots
+
+ //**** what if this is negative (min size gtr than default size)
+ uint step = (paint.font().pointSize() - Config::minFontPitch) / range;
+ if (step == 0) {
+ step = 1;
+ }
+
+ for (uint x = range + startLevel, y = Config::minFontPitch; x >= startLevel; y += step, --x) {
+ sizes[x] = y;
+ }
+ }
+ }
+
+ //4. determine label co-ordinates
+
+
+ const int preSpacer = int(m_map.m_ringBreadth * 0.5) + m_map.m_innerRadius;
+ const int fullStrutLength = (m_map.width() - m_map.MAP_2MARGIN) / 2 + LABEL_MAP_SPACER; //full length of a strut from map center
+
+ int prevLeftY = 0;
+ int prevRightY = height();
+
+ QFont font;
+
+ for (it = list.begin(); it != list.end(); ++it) {
+ Label *label = *it;
+ //** bear in mind that text is drawn with QPoint param as BOTTOM left corner of text box
+ QString string = label->segment->file()->displayName();
+ if (varySizes) {
+ font.setPointSize(sizes[label->level]);
+ }
+ QFontMetrics fontMetrics(font);
+ const int minTextWidth = fontMetrics.width(QString::fromLatin1("M...")) + LABEL_TEXT_HMARGIN; // Fully elided string
+
+ const int fontHeight = fontMetrics.height() + LABEL_TEXT_VMARGIN; //used to ensure label texts don't overlap
+ const int lineSpacing = fontHeight / 4;
+
+ const bool rightSide = (label->angle < 1440 || label->angle > 4320);
+
+ double sinra, cosra;
+ const double ra = M_PI/2880 * label->angle; //convert to radians
+ sincos(ra, &sinra, &cosra);
+
+
+ const int spacer = preSpacer + m_map.m_ringBreadth * label->level;
+
+ const int centerX = m_map.width() / 2 + m_offset.x(); //centre relative to canvas
+ const int centerY = m_map.height() / 2 + m_offset.y();
+ int targetX = centerX + cosra * spacer;
+ int targetY = centerY - sinra * spacer;
+ int startX = targetX + cosra * (fullStrutLength - spacer + m_map.m_ringBreadth / 2);
+ int startY = targetY - sinra * (fullStrutLength - spacer);
+
+ if (rightSide) { //righthand side, going upwards
+ if (startY > prevRightY /*- fmh*/) { //then it is too low, needs to be drawn higher
+ startY = prevRightY /*- fmh*/;
+ }
+ } else {//lefthand side, going downwards
+ if (startY < prevLeftY/* + fmh*/) { //then we're too high, need to be drawn lower
+ startY = prevLeftY /*+ fmh*/;
+ }
+ }
+
+ int middleX = targetX - (startY - targetY) / tan(ra);
+ int textY = startY + lineSpacing;
+
+ int textX;
+ const int textWidth = fontMetrics.width(string) + LABEL_TEXT_HMARGIN;
+ if (rightSide) {
+ if (startX + minTextWidth > width() || textY < fontHeight || middleX < targetX) {
+ //skip this strut
+ //**** don't duplicate this code
+ list.erase(it); //will delete the label and set it to list.current() which _should_ be the next ptr
+ break;
+ }
+
+ prevRightY = textY - fontHeight - lineSpacing; //must be after above's "continue"
+
+ if (m_offset.x() + m_map.width() + textWidth < width()) {
+ startX = m_offset.x() + m_map.width();
+ } else {
+ startX = qMax(width() - textWidth, startX);
+ string = fontMetrics.elidedText(string, Qt::ElideMiddle, width() - startX);
+ }
+
+ textX = startX + LABEL_TEXT_HMARGIN;
+ } else { // left side
+ if (startX - minTextWidth < 0 || textY > height() || middleX > targetX) {
+ //skip this strut
+ list.erase(it); //will delete the label and set it to list.current() which _should_ be the next ptr
+ break;
+ }
+
+ prevLeftY = textY + fontHeight - lineSpacing;
+
+ if (m_offset.x() - textWidth > 0) {
+ startX = m_offset.x();
+ textX = startX - textWidth - LABEL_TEXT_HMARGIN;
+ } else {
+ textX = 0;
+ string = fontMetrics.elidedText(string, Qt::ElideMiddle, startX);
+ startX = fontMetrics.width(string) + LABEL_TEXT_HMARGIN;
+ }
+ }
+
+ label->targetX = targetX;
+ label->targetY = targetY;
+ label->middleX = middleX;
+ label->startY = startY;
+ label->startX = startX;
+ label->textX = textX;
+ label->textY = textY;
+ label->qs = string;
+ }
+
+ //if an element is deleted at this stage, we need to do this whole
+ //iteration again, thus the following loop
+ //**** in rare case that deleted label was last label in top level
+ // and last in labelList too, this will not work as expected (not critical)
+
+ } while (it != list.end());
+
+
+ //5. Render labels
+
+ QFont font;
+ for (Label *label : list) {
+ if (varySizes) {
+ //**** how much overhead in making new QFont each time?
+ // (implicate sharing remember)
+ font.setPointSize(sizes[label->level]);
+ paint.setFont(font);
+ }
+
+ paint.drawLine(label->targetX, label->targetY, label->middleX, label->startY);
+ paint.drawLine(label->middleX, label->startY, label->startX, label->startY);
+
+ paint.drawText(label->textX, label->textY, label->qs);
+ }
+
+ qDeleteAll(list);
+ delete [] sizes;
+}
+}
+
diff --git a/test/radialmap/radialMap/map.cpp b/test/radialmap/radialMap/map.cpp
new file mode 100644
index 0000000..16d492b
--- /dev/null
+++ b/test/radialmap/radialMap/map.cpp
@@ -0,0 +1,413 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+
+#include <QApplication> //make()
+#include <QImage> //make() & paint()
+#include <QFont> //ctor
+#include <QFontMetrics> //ctor
+#include <QPainter>
+#include <QBrush>
+
+#include "radialMap.h" // defines
+
+#include "Config.h"
+#include "fileTree.h"
+#define SINCOS_H_IMPLEMENTATION (1)
+#include "sincos.h"
+#include "widget.h"
+
+RadialMap::Map::Map()
+ : m_signature(nullptr)
+ , m_visibleDepth(DEFAULT_RING_DEPTH)
+ , m_ringBreadth(MIN_RING_BREADTH)
+ , m_innerRadius(0)
+{
+
+ //FIXME this is all broken. No longer is a maximum depth!
+ const int fmh = QFontMetrics(QFont()).height();
+ const int fmhD4 = fmh / 4;
+ MAP_2MARGIN = 2 * (fmh - (fmhD4 - LABEL_MAP_SPACER)); //margin is dependent on fitting in labels at top and bottom
+
+ m_minSize=27300;
+}
+
+RadialMap::Map::~Map()
+{
+ delete [] m_signature;
+}
+
+void RadialMap::Map::invalidate()
+{
+ delete [] m_signature;
+ m_signature = nullptr;
+
+ m_visibleDepth = Config::defaultRingDepth;
+}
+
+void RadialMap::Map::make(const Folder *tree, bool refresh)
+{
+ if(height()<1)
+ abort();
+ //slow operation so set the wait cursor
+ QApplication::setOverrideCursor(Qt::WaitCursor);
+
+ //build a signature of visible components
+ {
+ //**** REMOVE NEED FOR the +1 with MAX_RING_DEPTH uses
+ //**** add some angle bounds checking (possibly in Segment ctor? can I delete in a ctor?)
+ //**** this is a mess
+
+ delete [] m_signature;
+ m_signature = new QList<Segment*>[m_visibleDepth + 1];
+
+ m_root = tree;
+
+ if (!refresh) {
+ quint64 varSize=tree->size();
+ quint64 varHeight=height();
+ quint64 varA=(varSize * 3);
+ quint64 varB=(PI * varHeight - MAP_2MARGIN);
+ m_minSize = varA / varB;
+ findVisibleDepth(tree);
+ }
+
+ setRingBreadth();
+
+ // Calculate ring size limits
+ m_limits.resize(m_visibleDepth + 1);
+ const double size = m_root->size();
+ const double pi2B = M_PI * 4 * m_ringBreadth;
+ for (uint depth = 0; depth <= m_visibleDepth; ++depth) {
+ m_limits[depth] = uint(size / double(pi2B * (depth + 1))); //min is angle that gives 3px outer diameter for that depth
+ }
+
+ build(tree);
+ }
+
+ //colour the segments
+ colorise();
+
+ m_centerText = tree->humanReadableSize();
+
+ //paint the pixmap
+ paint();
+
+ QApplication::restoreOverrideCursor();
+}
+
+void RadialMap::Map::setRingBreadth()
+{
+ //FIXME called too many times on creation
+
+ m_ringBreadth = (height() - MAP_2MARGIN) / (2 * m_visibleDepth + 4);
+ m_ringBreadth = qBound(MIN_RING_BREADTH, m_ringBreadth, MAX_RING_BREADTH);
+}
+
+void RadialMap::Map::findVisibleDepth(const Folder *dir, uint currentDepth)
+{
+
+ //**** because I don't use the same minimumSize criteria as in the visual function
+ // this can lead to incorrect visual representation
+ //**** BUT, you can't set those limits until you know m_depth!
+
+ //**** also this function doesn't check to see if anything is actually visible
+ // it just assumes that when it reaches a new level everything in it is visible
+ // automatically. This isn't right especially as there might be no files in the
+ // dir provided to this function!
+
+ static uint stopDepth = 0;
+
+ if (dir == m_root) {
+ stopDepth = m_visibleDepth;
+ m_visibleDepth = 0;
+ }
+
+ if (m_visibleDepth < currentDepth) m_visibleDepth = currentDepth;
+ if (m_visibleDepth >= stopDepth) return;
+
+ for (File *file : dir->files) {
+ if (file->isFolder() && file->size() > m_minSize) {
+ findVisibleDepth((Folder *)file, currentDepth + 1); //if no files greater than min size the depth is still recorded
+ }
+ }
+}
+
+//**** segments currently overlap at edges (i.e. end of first is start of next)
+bool RadialMap::Map::build(const Folder * const dir, const uint depth, uint a_start, const uint a_end)
+{
+ //first iteration: dir == m_root
+
+ if (dir->children() == 0) //we do fileCount rather than size to avoid chance of divide by zero later
+ return false;
+
+ FileSize hiddenSize = 0;
+ uint hiddenFileCount = 0;
+
+ for (File *file : dir->files) {
+ if (file->size() < m_limits[depth] * 6) { // limit is half a degree? we want at least 3 degrees
+ hiddenSize += file->size();
+ if (file->isFolder()) { //**** considered virtual, but dir wouldn't count itself!
+ hiddenFileCount += static_cast<const Folder*>(file)->children(); //need to add one to count the dir as well
+ }
+ ++hiddenFileCount;
+ continue;
+ }
+
+ unsigned int a_len = (unsigned int)(5760 * ((double)file->size() / (double)m_root->size()));
+
+ Segment *s = new Segment(file, a_start, a_len);
+ m_signature[depth].append(s);
+
+ if (file->isFolder()) {
+ if (depth != m_visibleDepth) {
+ //recurse
+ s->m_hasHiddenChildren = build((Folder*)file, depth + 1, a_start, a_start + a_len);
+ } else {
+ s->m_hasHiddenChildren = true;
+ }
+ }
+
+ a_start += a_len; //**** should we add 1?
+ }
+
+ if (hiddenFileCount == dir->children() && !Config::showSmallFiles) {
+ return true;
+ }
+
+ if ((depth == 0 || Config::showSmallFiles) && hiddenSize >= m_limits[depth] && hiddenFileCount > 0) {
+ //append a segment for unrepresented space - a "fake" segment
+ const QString s = QObject::tr("1 file, with an average size of %2",
+ "%1 files, with an average size of %2").arg(hiddenFileCount)
+ .arg(QString::number(hiddenSize/hiddenFileCount));
+
+
+ (m_signature + depth)->append(new Segment(new File(s.toUtf8().constData(), hiddenSize), a_start, a_end - a_start, true));
+ }
+
+ return false;
+}
+
+bool RadialMap::Map::resize(const QRect &rect)
+{
+ //there's a MAP_2MARGIN border
+
+#define mw width()
+#define mh height()
+#define cw rect.width()
+#define ch rect.height()
+
+ if (cw < mw || ch < mh || (cw > mw && ch > mh))
+ {
+ uint size = ((cw < ch) ? cw : ch) - MAP_2MARGIN;
+
+ //this also causes uneven sizes to always resize when resizing but map is small in that dimension
+ //size -= size % 2; //even sizes mean less staggered non-antialiased resizing
+
+ {
+ const uint minSize = MIN_RING_BREADTH * 2 * (m_visibleDepth + 2);
+
+ if (size < minSize)
+ size = minSize;
+
+ //this QRect is used by paint()
+ m_rect.setRect(0,0,size,size);
+ }
+ m_pixmap = QPixmap(m_rect.size());
+
+ //resize the pixmap
+ size += MAP_2MARGIN;
+
+ if (m_signature != nullptr)
+ {
+ setRingBreadth();
+ paint();
+ }
+
+ return true;
+ }
+
+#undef mw
+#undef mh
+#undef cw
+#undef ch
+
+ return false;
+}
+
+void RadialMap::Map::colorise()
+{
+ if (!m_signature || m_signature->isEmpty()) {
+ qDebug() << "no signature yet";
+ return;
+ }
+
+ QColor cp, cb;
+ double darkness = 1;
+ double contrast = (double)Config::contrast / (double)100;
+ int h, s1, s2, v1, v2;
+
+ for (uint i = 0; i <= m_visibleDepth; ++i, darkness += 0.04) {
+ for (Segment *segment : m_signature[i]) {
+ h = int(segment->start() / 16);
+ s1 = 160;
+ v1 = (int)(255.0 / darkness); //doing this more often than once seems daft!
+
+ v2 = v1 - int(contrast * v1);
+ s2 = s1 + int(contrast * (255 - s1));
+
+ if (s1 < 80) s1 = 80; //can fall too low and makes contrast between the files hard to discern
+
+ if (segment->isFake()) { //multi-file
+ cb.setHsv(h, s2, (v2 < 90) ? 90 : v2); //too dark if < 100
+ cp.setHsv(h, 17, v1);
+ } else if (!segment->file()->isFolder()) { //file
+ cb.setHsv(h, 17, v1);
+ cp.setHsv(h, 17, v2);
+ } else { //folder
+ cb.setHsv(h, s1, v1); //v was 225
+ cp.setHsv(h, s2, v2); //v was 225 - delta
+ }
+
+ segment->setPalette(cp, cb);
+ }
+ }
+}
+
+void RadialMap::Map::paint(bool antialias)
+{
+ QPainter paint;
+ QRect rect = m_rect;
+
+ rect.adjust(5, 5, -5, -5);
+ m_pixmap.fill(QColor(255,255,255));
+
+ //m_rect.moveRight(1); // Uncommenting this breaks repainting when recreating map from cache
+
+
+ //**** best option you can think of is to make the circles slightly less perfect,
+ // ** i.e. slightly eliptic when resizing inbetween
+
+ if (m_pixmap.isNull())
+ return;
+
+ if (!paint.begin(&m_pixmap)) {
+ qWarning() << "Filelight::RadialMap Failed to initialize painting, returning...";
+ return;
+ }
+
+ if (antialias && Config::antialias) {
+ paint.translate(0.7, 0.7);
+ paint.setRenderHint(QPainter::Antialiasing);
+ }
+
+ int step = m_ringBreadth;
+ int excess = -1;
+
+ //do intelligent distribution of excess to prevent nasty resizing
+ if (m_ringBreadth != MAX_RING_BREADTH && m_ringBreadth != MIN_RING_BREADTH) {
+ excess = rect.width() % m_ringBreadth;
+ ++step;
+ }
+
+
+ for (int x = m_visibleDepth; x >= 0; --x)
+ {
+ int width = rect.width() / 2;
+ //clever geometric trick to find largest angle that will give biggest arrow head
+ uint a_max = int(acos((double)width / double((width + 5))) * (180*16 / M_PI));
+
+ for (Segment *segment : m_signature[x]) {
+ //draw the pie segments, most of this code is concerned with drawing the little
+ //arrows on the ends of segments when they have hidden files
+
+ paint.setPen(segment->pen());
+
+ if (segment->hasHiddenChildren())
+ {
+ //draw arrow head to indicate undisplayed files/directories
+ QPolygon pts(3);
+ QPoint pos, cpos = rect.center();
+ uint a[3] = { segment->start(), segment->length(), 0 };
+
+ a[2] = a[0] + (a[1] / 2); //assign to halfway between
+ if (a[1] > a_max)
+ {
+ a[1] = a_max;
+ a[0] = a[2] - a_max / 2;
+ }
+
+ a[1] += a[0];
+
+ for (int i = 0, radius = width; i < 3; ++i)
+ {
+ double ra = M_PI/(180*16) * a[i], sinra, cosra;
+
+ if (i == 2)
+ radius += 5;
+ sincos(ra, &sinra, &cosra);
+ pos.rx() = cpos.x() + static_cast<int>(cosra * radius);
+ pos.ry() = cpos.y() - static_cast<int>(sinra * radius);
+ pts.setPoint(i, pos);
+ }
+
+ paint.setBrush(segment->pen());
+ paint.drawPolygon(pts);
+ }
+
+ paint.setBrush(segment->brush());
+ paint.drawPie(rect, segment->start(), segment->length());
+
+ if (segment->hasHiddenChildren())
+ {
+ //**** code is bloated!
+ paint.save();
+ QPen pen = paint.pen();
+ int width = 2;
+ pen.setWidth(width);
+ paint.setPen(pen);
+ QRect rect2 = rect;
+ width /= 2;
+ rect2.adjust(width, width, -width, -width);
+ paint.drawArc(rect2, segment->start(), segment->length());
+ paint.restore();
+ }
+ }
+
+ if (excess >= 0) { //excess allows us to resize more smoothly (still crud tho)
+ if (excess < 2) //only decrease rect by more if even number of excesses left
+ --step;
+ excess -= 2;
+ }
+
+ rect.adjust(step, step, -step, -step);
+ }
+
+ // if(excess > 0) rect.addCoords(excess, excess, 0, 0); //ugly
+
+ paint.setPen(QColor(0,0,0));
+ paint.setBrush(QColor(255,255,255));
+ paint.drawEllipse(rect);
+ paint.drawText(rect, Qt::AlignCenter, m_centerText);
+
+ m_innerRadius = rect.width() / 2; //rect.width should be multiple of 2
+
+ paint.end();
+}
diff --git a/test/radialmap/radialMap/map.h b/test/radialmap/radialMap/map.h
new file mode 100644
index 0000000..da899b0
--- /dev/null
+++ b/test/radialmap/radialMap/map.h
@@ -0,0 +1,84 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* 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/>.
+***********************************************************************/
+
+#ifndef MAP_H
+#define MAP_H
+
+#include "fileTree.h"
+
+#include <QPixmap>
+#include <QRect>
+#include <QString>
+
+namespace RadialMap {
+class Segment;
+
+class Map
+{
+public:
+ explicit Map();
+ ~Map();
+
+ void make(const Folder *, bool = false);
+ bool resize(const QRect&);
+
+ bool isNull() const {
+ return (m_signature == nullptr);
+ }
+ void invalidate();
+
+ int height() const {
+ return m_rect.height();
+ }
+ int width() const {
+ return m_rect.width();
+ }
+ QPixmap pixmap() const {
+ return m_pixmap;
+ }
+
+
+ friend class Widget;
+
+private:
+ void paint(bool antialias = true);
+ void colorise();
+ void setRingBreadth();
+ void findVisibleDepth(const Folder *dir, uint currentDepth = 0);
+ bool build(const Folder* const dir, const uint depth =0, uint a_start =0, const uint a_end =5760);
+
+ QList<Segment*> *m_signature;
+
+ const Folder *m_root;
+ uint m_minSize;
+ QVector<FileSize> m_limits;
+ QRect m_rect;
+ uint m_visibleDepth; ///visible level depth of system
+ QPixmap m_pixmap;
+ int m_ringBreadth;
+ uint m_innerRadius; ///radius of inner circle
+ QString m_centerText;
+
+ uint MAP_2MARGIN;
+};
+}
+
+#endif
diff --git a/test/radialmap/radialMap/radialMap.h b/test/radialmap/radialMap/radialMap.h
new file mode 100644
index 0000000..5bbba10
--- /dev/null
+++ b/test/radialmap/radialMap/radialMap.h
@@ -0,0 +1,109 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* 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/>.
+***********************************************************************/
+
+#ifndef RADIALMAP_H
+#define RADIALMAP_H
+
+#include <QColor>
+
+class File;
+
+namespace RadialMap
+{
+class Segment //all angles are in 16ths of degrees
+{
+public:
+ Segment(const File *f, uint s, uint l, bool isFake = false)
+ : m_angleStart(s)
+ , m_angleSegment(l)
+ , m_file(f)
+ , m_hasHiddenChildren(false)
+ , m_fake(isFake) {}
+ ~Segment();
+
+ uint start() const {
+ return m_angleStart;
+ }
+ uint length() const {
+ return m_angleSegment;
+ }
+ uint end() const {
+ return m_angleStart + m_angleSegment;
+ }
+ const File *file() const {
+ return m_file;
+ }
+ const QColor& pen() const {
+ return m_pen;
+ }
+ const QColor& brush() const {
+ return m_brush;
+ }
+
+ bool isFake() const {
+ return m_fake;
+ }
+ bool hasHiddenChildren() const {
+ return m_hasHiddenChildren;
+ }
+
+ bool intersects(uint a) const {
+ return ((a >= start()) && (a < end()));
+ }
+
+ friend class Map;
+ friend class Builder;
+
+private:
+ void setPalette(const QColor &p, const QColor &b) {
+ m_pen = p;
+ m_brush = b;
+ }
+
+ const uint m_angleStart, m_angleSegment;
+ const File* const m_file;
+ QColor m_pen, m_brush;
+ bool m_hasHiddenChildren;
+ const bool m_fake;
+};
+}
+
+
+#ifndef PI
+#define PI 3.141592653589793
+#endif
+#ifndef M_PI
+#define M_PI 3.14159265358979323846264338327
+#endif
+
+#define MIN_RING_BREADTH 20
+#define MAX_RING_BREADTH 60
+#define DEFAULT_RING_DEPTH 4 //first level = 0
+#define MIN_RING_DEPTH 0
+
+#define LABEL_MAP_SPACER 7
+#define LABEL_TEXT_HMARGIN 5
+#define LABEL_TEXT_VMARGIN 0
+#define LABEL_ANGLE_MARGIN 32
+#define LABEL_MIN_ANGLE_FACTOR 0.05
+#define LABEL_MAX_CHARS 30
+
+#endif
diff --git a/test/radialmap/radialMap/sincos.h b/test/radialmap/radialMap/sincos.h
new file mode 100644
index 0000000..2fe716d
--- /dev/null
+++ b/test/radialmap/radialMap/sincos.h
@@ -0,0 +1,45 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* 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/>.
+***********************************************************************/
+
+#ifndef SINCOS_H
+#define SINCOS_H
+
+#include <math.h>
+
+#if !defined(__GLIBC__) || (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 1)
+
+#include <qmath.h>
+
+void
+sincos(double angleRadians, double *Sin, double *Cos);
+
+#ifdef SINCOS_H_IMPLEMENTATION
+void
+sincos(double angleRadians, double *Sin, double *Cos)
+{
+ *Sin = qSin(angleRadians);
+ *Cos = qCos(angleRadians);
+}
+#endif
+
+#endif
+
+#endif
diff --git a/test/radialmap/radialMap/widget.cpp b/test/radialmap/radialMap/widget.cpp
new file mode 100644
index 0000000..145de20
--- /dev/null
+++ b/test/radialmap/radialMap/widget.cpp
@@ -0,0 +1,191 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+
+#include "widget.h"
+
+#include "Config.h"
+#include "fileTree.h"
+#include "radialMap.h" //constants
+#include "map.h"
+
+#include <QUrl>
+
+#include <QApplication> //sendEvent
+#include <QBitmap> //ctor - finding cursor size
+#include <QCursor> //slotPostMouseEvent()
+#include <QTimer> //member
+#include <QWidget>
+
+
+RadialMap::Widget::Widget(QWidget *parent)
+ : QWidget(parent)
+ , m_tree(nullptr)
+ , m_focus(nullptr)
+ , m_map()
+ , m_rootSegment(nullptr) //TODO we don't delete it, *shrug*
+ , m_toBeDeleted(nullptr)
+{
+ setAcceptDrops(true);
+ setMinimumSize(350, 250);
+
+ connect(this, &Widget::folderCreated, this, &Widget::sendFakeMouseEvent);
+ connect(&m_timer, &QTimer::timeout, this, &Widget::resizeTimeout);
+ m_tooltip.setFrameShape(QFrame::StyledPanel);
+ m_tooltip.setWindowFlags(Qt::ToolTip | Qt::WindowTransparentForInput);
+}
+
+RadialMap::Widget::~Widget()
+{
+ delete m_rootSegment;
+}
+
+
+QString RadialMap::Widget::path() const
+{
+ return m_tree->displayPath();
+}
+
+QUrl RadialMap::Widget::url(File const * const file) const
+{
+ return file ? file->url() : m_tree->url();
+}
+
+void RadialMap::Widget::invalidate()
+{
+ if (isValid())
+ {
+ //**** have to check that only way to invalidate is this function frankly
+ //**** otherwise you may get bugs..
+
+ //disable mouse tracking
+ setMouseTracking(false);
+
+ // Get this before reseting m_tree below
+ QUrl invalidatedUrl(url());
+
+ //ensure this class won't think we have a map still
+ m_tree = nullptr;
+ m_focus = nullptr;
+
+ delete m_rootSegment;
+ m_rootSegment = nullptr;
+
+ //FIXME move this disablement thing no?
+ // it is confusing in other areas, like the whole createFromCache() thing
+ m_map.invalidate();
+ update();
+
+ //tell rest of Filelight
+ emit invalidated(invalidatedUrl);
+ }
+}
+
+void
+RadialMap::Widget::create(const Folder *tree)
+{
+ //it is not the responsibility of create() to invalidate first
+ //skip invalidation at your own risk
+
+ //FIXME make it the responsibility of create to invalidate first
+
+ if (tree)
+ {
+ m_focus = nullptr;
+ //generate the filemap image
+ m_map.make(tree);
+
+ //this is the inner circle in the center
+ m_rootSegment = new Segment(tree, 0, 16*360);
+
+ setMouseTracking(true);
+ }
+
+ m_tree = tree;
+
+ //tell rest of Filelight
+ emit folderCreated(tree);
+}
+
+void
+RadialMap::Widget::createFromCache(const Folder *tree)
+{
+ //no scan was necessary, use cached tree, however we MUST still emit invalidate
+ invalidate();
+ create(tree);
+}
+
+void
+RadialMap::Widget::sendFakeMouseEvent() //slot
+{
+ QMouseEvent me(QEvent::MouseMove, mapFromGlobal(QCursor::pos()), Qt::NoButton, Qt::NoButton, Qt::NoModifier);
+ QApplication::sendEvent(this, &me);
+ update();
+}
+
+void
+RadialMap::Widget::resizeTimeout() //slot
+{
+ // the segments are about to erased!
+ // this was a horrid bug, and proves the OO programming should be obeyed always!
+ m_focus = nullptr;
+ if (m_tree)
+ m_map.make(m_tree, true);
+ update();
+}
+
+void
+RadialMap::Widget::refresh(int filth)
+{
+ //TODO consider a more direct connection
+
+ if (!m_map.isNull())
+ {
+ switch (filth)
+ {
+ case 1:
+ m_focus=nullptr;
+ m_map.make(m_tree, true); //true means refresh only
+ break;
+
+ case 2:
+ m_map.paint(true); //antialiased painting
+ break;
+
+ case 3:
+ m_map.colorise(); //FALL THROUGH!
+ case 4:
+ m_map.paint();
+
+ default:
+ break;
+ }
+
+ update();
+ }
+}
+
+RadialMap::Segment::~Segment()
+{
+ if (isFake())
+ delete m_file; //created by us in Builder::build()
+}
+
+
diff --git a/test/radialmap/radialMap/widget.h b/test/radialmap/radialMap/widget.h
new file mode 100644
index 0000000..35d1f1d
--- /dev/null
+++ b/test/radialmap/radialMap/widget.h
@@ -0,0 +1,112 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* 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/>.
+***********************************************************************/
+
+#ifndef WIDGET_H
+#define WIDGET_H
+
+#include <QUrl>
+
+#include <QLabel>
+#include <QDragEnterEvent>
+#include <QDropEvent>
+#include <QMouseEvent>
+#include <QPaintEvent>
+#include <QResizeEvent>
+#include <QWidget>
+#include <QTimer>
+
+#include "map.h"
+
+class Folder;
+class File;
+namespace KIO {
+class Job;
+}
+
+namespace RadialMap
+{
+class Segment;
+
+class Widget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit Widget(QWidget* = nullptr);
+ ~Widget() override;
+ QString path() const;
+ QUrl url(File const * const = nullptr) const;
+
+ bool isValid() const {
+ return m_tree != nullptr;
+ }
+
+ friend class Label; //FIXME badness
+
+public Q_SLOTS:
+ void create(const Folder*);
+ void invalidate();
+ void refresh(int);
+
+private Q_SLOTS:
+ void resizeTimeout();
+ void sendFakeMouseEvent();
+ void createFromCache(const Folder*);
+
+Q_SIGNALS:
+ void activated(const QUrl&);
+ void invalidated(const QUrl&);
+ void folderCreated(const Folder*);
+ void mouseHover(const QString&);
+ void giveMeTreeFor(const QUrl&);
+
+protected:
+ void changeEvent(QEvent*) override;
+ void mouseMoveEvent(QMouseEvent*) override;
+ void paintEvent(QPaintEvent*) override;
+ void resizeEvent(QResizeEvent*) override;
+ void enterEvent(QEvent*) override;
+ void leaveEvent(QEvent*) override;
+
+protected:
+ const Segment *segmentAt(QPoint&) const; //FIXME const reference for a library others can use
+ const Segment *rootSegment() const {
+ return m_rootSegment; ///never == 0
+ }
+ const Segment *focusSegment() const {
+ return m_focus; ///0 == nothing in focus
+ }
+
+private:
+ void paintExplodedLabels(QPainter&) const;
+
+ const Folder *m_tree;
+ const Segment *m_focus;
+ QPoint m_offset;
+ QTimer m_timer;
+ Map m_map;
+ Segment *m_rootSegment;
+ const Segment *m_toBeDeleted;
+ QLabel m_tooltip;
+};
+}
+
+#endif
diff --git a/test/radialmap/radialMap/widgetEvents.cpp b/test/radialmap/radialMap/widgetEvents.cpp
new file mode 100644
index 0000000..0dd980d
--- /dev/null
+++ b/test/radialmap/radialMap/widgetEvents.cpp
@@ -0,0 +1,212 @@
+/***********************************************************************
+* Copyright 2003-2004 Max Howell <max.howell@methylblue.com>
+* Copyright 2008-2009 Martin Sandsmark <martin.sandsmark@kde.org>
+*
+* 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) version 3 or any later version
+* accepted by the membership of KDE e.V. (or its successor approved
+* by the membership of KDE e.V.), which shall act as a proxy
+* defined in Section 14 of version 3 of the license.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see <http://www.gnu.org/licenses/>.
+***********************************************************************/
+
+#include "fileTree.h"
+#include "Config.h"
+#include "radialMap.h" //class Segment
+#include "widget.h"
+
+#include <QMenu> //::mousePressEvent()
+#include <QUrl>
+
+#include <QApplication> //QApplication::setOverrideCursor()
+#include <QClipboard>
+#include <QPainter>
+#include <QTimer> //::resizeEvent()
+#include <QDropEvent>
+#include <QPaintEvent>
+#include <QResizeEvent>
+#include <QMouseEvent>
+#include <QDragEnterEvent>
+#include <QToolTip>
+#include <QMimeData>
+
+#include <cmath> //::segmentAt()
+
+void RadialMap::Widget::resizeEvent(QResizeEvent*)
+{
+ if (m_map.resize(rect()))
+ m_timer.setSingleShot(true);
+ m_timer.start(500); //will cause signature to rebuild for new size
+
+ //always do these as they need to be initialised on creation
+ m_offset.rx() = (width() - m_map.width()) / 2;
+ m_offset.ry() = (height() - m_map.height()) / 2;
+}
+
+void RadialMap::Widget::paintEvent(QPaintEvent*)
+{
+ QPainter paint;
+ paint.begin(this);
+
+ if (!m_map.isNull())
+ paint.drawPixmap(m_offset, m_map.pixmap());
+ else
+ {
+ paint.drawText(rect(), 0, tr("We messed up, the user needs to initiate a rescan."));
+ return;
+ }
+
+ //exploded labels
+ if (!m_map.isNull() && !m_timer.isActive())
+ {
+ if (Config::antialias) {
+ paint.setRenderHint(QPainter::Antialiasing);
+ //make lines appear on pixel boundaries
+ paint.translate(0.5, 0.5);
+ }
+ paintExplodedLabels(paint);
+ }
+}
+
+const RadialMap::Segment* RadialMap::Widget::segmentAt(QPoint &e) const
+{
+ //determine which segment QPoint e is above
+
+ e -= m_offset;
+
+ if (!m_map.m_signature)
+ return nullptr;
+
+ if (e.x() <= m_map.width() && e.y() <= m_map.height())
+ {
+ //transform to cartesian coords
+ e.rx() -= m_map.width() / 2; //should be an int
+ e.ry() = m_map.height() / 2 - e.y();
+
+ double length = hypot(e.x(), e.y());
+
+ if (length >= m_map.m_innerRadius) //not hovering over inner circle
+ {
+ uint depth = ((int)length - m_map.m_innerRadius) / m_map.m_ringBreadth;
+
+ if (depth <= m_map.m_visibleDepth) //**** do earlier since you can //** check not outside of range
+ {
+ //vector calculation, reduces to simple trigonometry
+ //cos angle = (aibi + ajbj) / albl
+ //ai = x, bi=1, aj=y, bj=0
+ //cos angle = x / (length)
+
+ uint a = (uint)(acos((double)e.x() / length) * 916.736); //916.7324722 = #radians in circle * 16
+
+ //acos only understands 0-180 degrees
+ if (e.y() < 0) a = 5760 - a;
+
+ for (Segment *segment : m_map.m_signature[depth]) {
+ if (segment->intersects(a))
+ return segment;
+ }
+ }
+ }
+ else return m_rootSegment; //hovering over inner circle
+ }
+
+ return nullptr;
+}
+
+void RadialMap::Widget::mouseMoveEvent(QMouseEvent *e)
+{
+ //set m_focus to what we hover over, update UI if it's a new segment
+
+ Segment const * const oldFocus = m_focus;
+ QPoint p = e->pos();
+
+ m_focus = segmentAt(p); //NOTE p is passed by non-const reference
+
+ if (m_focus)
+ {
+ m_tooltip.move(e->globalX() + 20, e->globalY() + 20);
+ if (m_focus != oldFocus) //if not same as last time
+ {
+ setCursor(Qt::PointingHandCursor);
+
+ QString string;
+
+
+ string = QObject::tr("Tooltip of file/folder, %1 is path, %2 is size")
+ .arg(m_focus->file()->displayPath())
+ .arg(m_focus->file()->humanReadableSize());
+
+ if (m_focus->file()->isFolder()) {
+ int files = static_cast<const Folder*>(m_focus->file())->children();
+ const uint percent = uint((100 * files) / (double)m_tree->children());
+
+ string += QLatin1Char('\n');
+ if (percent > 0) {
+ string += QObject::tr("Tooltip of folder, %1 File (%2%)")
+ .arg(files).arg(percent);
+ } else {
+ string += QObject::tr("Tooltip of folder, %1 File")
+ .arg(files);
+ }
+ }
+
+
+ // Calculate a semi-sane size for the tooltip
+ QFontMetrics fontMetrics(font());
+ int tooltipWidth = 0;
+ int tooltipHeight = 0;
+ for (const QString &part : string.split(QLatin1Char('\n'))) {
+ tooltipHeight += fontMetrics.height();
+ tooltipWidth = qMax(tooltipWidth, fontMetrics.width(part));
+ }
+ // Limit it to the window size, probably should find something better
+ tooltipWidth = qMin(tooltipWidth, window()->width());
+ tooltipWidth += 10;
+ tooltipHeight += 10;
+ m_tooltip.resize(tooltipWidth, tooltipHeight);
+ m_tooltip.setText(string);
+ m_tooltip.show();
+
+ emit mouseHover(m_focus->file()->displayPath());
+ update();
+ }
+ }
+ else if (oldFocus && oldFocus->file() != m_tree)
+ {
+ m_tooltip.hide();
+ unsetCursor();
+ update();
+
+ emit mouseHover(QString());
+ }
+}
+
+void RadialMap::Widget::enterEvent(QEvent *)
+{
+ if (!m_focus) return;
+
+ setCursor(Qt::PointingHandCursor);
+ emit mouseHover(m_focus->file()->displayPath());
+ update();
+}
+
+void RadialMap::Widget::leaveEvent(QEvent *)
+{
+ m_tooltip.hide();
+}
+
+void RadialMap::Widget::changeEvent(QEvent *e)
+{
+ if (e->type() == QEvent::ApplicationPaletteChange ||
+ e->type() == QEvent::PaletteChange)
+ m_map.paint();
+}
diff --git a/test/radialmap/radialmap.pro b/test/radialmap/radialmap.pro
new file mode 100644
index 0000000..0a560ab
--- /dev/null
+++ b/test/radialmap/radialmap.pro
@@ -0,0 +1,46 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2019-05-30T12:37:58
+#
+#-------------------------------------------------
+
+QT += core gui
+
+greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
+
+TARGET = radialmap
+TEMPLATE = app
+
+# The following define makes your compiler emit warnings if you use
+# any feature of Qt which has been marked as deprecated (the exact warnings
+# depend on your compiler). Please consult the documentation of the
+# deprecated API in order to know how to port your code away from it.
+DEFINES += QT_DEPRECATED_WARNINGS
+
+# You can also make your code fail to compile if you use deprecated APIs.
+# In order to do so, uncomment the following line.
+# You can also select to disable deprecated APIs only up to a certain version of Qt.
+#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
+
+
+SOURCES += \
+ main.cpp \
+ MainWindow.cpp \
+ radialMap/labels.cpp \
+ radialMap/map.cpp \
+ radialMap/widgetEvents.cpp \
+ radialMap/widget.cpp \
+ fileTree.cpp \
+ Config.cpp
+
+HEADERS += \
+ MainWindow.h \
+ radialMap/map.h \
+ radialMap/widget.h \
+ radialMap/radialMap.h \
+ radialMap/sincos.h \
+ fileTree.h \
+ Config.h
+
+FORMS += \
+ MainWindow.ui
diff --git a/tools/to-pack/data/gentoo/ultracopier.ebuild b/tools/to-pack/data/gentoo/ultracopier.ebuild
new file mode 100644
index 0000000..0e97163
--- /dev/null
+++ b/tools/to-pack/data/gentoo/ultracopier.ebuild
@@ -0,0 +1,118 @@
+
+EAPI=4
+
+LANGS="ar de el es fr hi id it ja nl no pl pt ru th tr zh"
+
+inherit eutils qt5
+
+DESCRIPTION="Advanced file copying tool"
+HOMEPAGE="http://ultracopier.first-world.info/"
+SRC_URI="http://files.first-world.info/${PN}/${PV}/ultracopier-src-${PV}.tar.xz -> ${P}.tar.xz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="debug"
+S=${WORKDIR}/${P}/src/
+
+RDEPEND="x11-libs/qt-core:5
+ x11-libs/qt-gui:5"
+DEPEND="${RDEPEND}"
+
+DOCSDIR="${S}/"
+DOCS="README"
+
+src_prepare() {
+ find -name "informations.xml" -exec sed -i -r "s/<architecture>.*<\/architecture>/<architecture>linux-x86_64-pc<\/architecture>/g" {} \; > /dev/null 2>&1
+ find -name "informations.xml" -exec sed -i -r "s/<version>.*<\/version>/<version>${PV}<\/version>/g" {} \; > /dev/null 2>&1
+ find -name "Variable.h" -exec sed -i "s/#define ULTRACOPIER_VERSION_PORTABLE/\/\/#define ULTRACOPIER_VERSION_PORTABLE/g" {} \; > /dev/null 2>&1
+ find -name "Variable.h" -exec sed -i "s/#define ULTRACOPIER_VERSION_PORTABLEAPPS/\/\/#define ULTRACOPIER_VERSION_PORTABLEAPPS/g" {} \; > /dev/null 2>&1
+ if use debug ; then
+ then
+ find -name "Variable.h" -exec sed -i "s/\/\/#define ULTRACOPIER_DEBUG/#define ULTRACOPIER_DEBUG/g" {} \; > /dev/null 2>&1
+ find -name "Variable.h" -exec sed -i "s/\/\/#define ULTRACOPIER_PLUGIN_DEBUG/#define ULTRACOPIER_PLUGIN_DEBUG/g" {} \; > /dev/null 2>&1
+ find -name "Variable.h" -exec sed -i "s/\/\/#define ULTRACOPIER_PLUGIN_DEBUG_WINDOW/#define ULTRACOPIER_PLUGIN_DEBUG_WINDOW/g" {} \; > /dev/null 2>&1
+ else
+ find -name "Variable.h" -exec sed -i "s/#define ULTRACOPIER_DEBUG/\/\/#define ULTRACOPIER_DEBUG/g" {} \; > /dev/null 2>&1
+ find -name "Variable.h" -exec sed -i "s/#define ULTRACOPIER_PLUGIN_DEBUG/\/\/#define ULTRACOPIER_PLUGIN_DEBUG/g" {} \; > /dev/null 2>&1
+ find -name "Variable.h" -exec sed -i "s/#define ULTRACOPIER_PLUGIN_DEBUG_WINDOW/\/\/#define ULTRACOPIER_PLUGIN_DEBUG_WINDOW/g" {} \; > /dev/null 2>&1
+ fi
+ find -name "Variable.h" -exec sed -i "s/#define ULTRACOPIER_PLUGIN_ALL_IN_ONE/\/\/#define ULTRACOPIER_PLUGIN_ALL_IN_ONE/g" {} \; > /dev/null 2>&1
+ find -name "Variable.h" -exec sed -i "s/\/\/#define ULTRACOPIER_VERSION_ULTIMATE/#define ULTRACOPIER_VERSION_ULTIMATE/g" {} \; > /dev/null 2>&1
+ eqmake4 "${S}"/ultracopier-core.pro
+ eqmake4 "${S}"/plugins/CopyEngine/Ultracopier/CopyEngine.pro
+ eqmake4 "${S}"/plugins/Listener/catchcopy-v0002/listener.pro
+ eqmake4 "${S}"/plugins/plugins/SessionLoader/KDE4/sessionLoader.pro
+ eqmake4 "${S}"/plugins/Themes/Oxygen/interface.pro
+}
+
+src_compile() {
+ lrelease -nounfinished -compress -removeidentical -silent ultracopier-core.pro > /dev/null 2>&1 || die "Error when release the qm file"
+ if [ -f Makefile ] ; then
+ emake
+ fi
+ cd "${S}"/plugins/CopyEngine/Ultracopier/
+ if [ -f Makefile ] ; then
+ emake
+ fi
+ cd "${S}"/plugins/Listener/catchcopy-v0002/
+ if [ -f Makefile ] ; then
+ emake
+ fi
+ cd "${S}"/plugins/plugins/SessionLoader/KDE4/
+ if [ -f Makefile ] ; then
+ emake
+ fi
+ cd "${S}"/plugins/Themes/Oxygen/
+ if [ -f Makefile ] ; then
+ emake
+ fi
+}
+
+src_install() {
+ dobin ultracopier
+ newicon resources/ultracopier-128x128.png ultracopier.png
+ domenu resources/ultracopier.desktop
+
+ insinto /usr/share/Ultracopier/CopyEngine/Ultracopier/
+ doins plugins/CopyEngine/Ultracopier/informations.xml
+ doins plugins/CopyEngine/Ultracopier/libcopyEngine.so
+ fperms 0755 /plugins/CopyEngine/Ultracopier/libcopyEngine.so
+
+ insinto /usr/share/Ultracopier/Listener/catchcopy-v0002/
+ doins plugins/Listener/catchcopy-v0002/informations.xml
+ doins plugins/Listener/catchcopy-v0002/liblistener.so
+ fperms 0755 /plugins/Listener/catchcopy-v0002/liblistener.so
+
+ insinto /usr/share/Ultracopier/SessionLoader/KDE4/
+ doins plugins/SessionLoader/KDE4/informations.xml
+ doins plugins/SessionLoader/KDE4/libsessionLoader.so
+ fperms 0755 /plugins/SessionLoader/KDE4/libsessionLoader.so
+
+ insinto /usr/share/Ultracopier/Themes/Oxygen/
+ doins plugins/Themes/Oxygen/informations.xml
+ doins plugins/Themes/Oxygen/libinterface.so
+ fperms 0755 /plugins/Themes/Oxygen/libinterface.so
+
+ lrelease -nounfinished -compress -removeidentical -silent ultracopier-core.pro > /dev/null 2>&1 || die "Error when release the qm file"
+ for project in `find plugins/ plugins-alternative/ -maxdepth 2 -type d`
+ do
+ if [ -f ${project}/*.pro ]
+ then
+ lrelease -nounfinished -compress -removeidentical -silent ${project}/*.pro > /dev/null 2>&1 || die "Error when release the qm file"
+ fi
+ done
+ find -iname "*.ts" -exec rm {} \; > /dev/null 2>&1 || die "Error when remove the ts file"
+
+ # Install translations
+ for Z in ${LANGS}; do
+ if use linguas_${Z} ; then
+ insinto /usr/share/Ultracopier/Languages/${Z}/
+ doins -r plugins/Languages/${Z}/
+ insinto /usr/share/Ultracopier/CopyEngine/Ultracopier/Languages/${Z}/
+ doins -r plugins/CopyEngine/Ultracopier/Languages/${Z}/
+ insinto /usr/share/Ultracopier/Themes/Oxygen/Languages/${Z}/
+ doins -r plugins/Themes/Oxygen/Languages/${Z}/
+ fi
+ done
+}
diff --git a/tools/to-pack/data/qm-translation/ar.qm b/tools/to-pack/data/qm-translation/ar.qm
new file mode 100755
index 0000000..e524d5b
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/ar.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/cs.qm b/tools/to-pack/data/qm-translation/cs.qm
new file mode 100755
index 0000000..52462ef
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/cs.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/da.qm b/tools/to-pack/data/qm-translation/da.qm
new file mode 100755
index 0000000..1e7dda6
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/da.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/de.qm b/tools/to-pack/data/qm-translation/de.qm
new file mode 100755
index 0000000..3650eec
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/de.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/es.qm b/tools/to-pack/data/qm-translation/es.qm
new file mode 100755
index 0000000..5191160
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/es.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/fa.qm b/tools/to-pack/data/qm-translation/fa.qm
new file mode 100755
index 0000000..103df26
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/fa.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/fr.qm b/tools/to-pack/data/qm-translation/fr.qm
new file mode 100644
index 0000000..a3e8eaf
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/fr.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/gl.qm b/tools/to-pack/data/qm-translation/gl.qm
new file mode 100755
index 0000000..bbc92ce
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/gl.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/he.qm b/tools/to-pack/data/qm-translation/he.qm
new file mode 100755
index 0000000..4ff507e
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/he.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/hu.qm b/tools/to-pack/data/qm-translation/hu.qm
new file mode 100755
index 0000000..fe78c34
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/hu.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/ja.qm b/tools/to-pack/data/qm-translation/ja.qm
new file mode 100755
index 0000000..84dd973
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/ja.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/ko.qm b/tools/to-pack/data/qm-translation/ko.qm
new file mode 100755
index 0000000..31f2b67
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/ko.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/lt.qm b/tools/to-pack/data/qm-translation/lt.qm
new file mode 100755
index 0000000..bdd0f98
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/lt.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/pl.qm b/tools/to-pack/data/qm-translation/pl.qm
new file mode 100755
index 0000000..2967b46
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/pl.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/pt.qm b/tools/to-pack/data/qm-translation/pt.qm
new file mode 100755
index 0000000..fc92511
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/pt.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/ru.qm b/tools/to-pack/data/qm-translation/ru.qm
new file mode 100755
index 0000000..d54bae8
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/ru.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/sk.qm b/tools/to-pack/data/qm-translation/sk.qm
new file mode 100755
index 0000000..9e8f862
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/sk.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/sl.qm b/tools/to-pack/data/qm-translation/sl.qm
new file mode 100755
index 0000000..46428f3
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/sl.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/sv.qm b/tools/to-pack/data/qm-translation/sv.qm
new file mode 100755
index 0000000..f3556bc
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/sv.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/uk.qm b/tools/to-pack/data/qm-translation/uk.qm
new file mode 100755
index 0000000..02b2566
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/uk.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/zh_CN.qm b/tools/to-pack/data/qm-translation/zh_CN.qm
new file mode 100755
index 0000000..623b8e3
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/zh_CN.qm
Binary files differ
diff --git a/tools/to-pack/data/qm-translation/zh_TW.qm b/tools/to-pack/data/qm-translation/zh_TW.qm
new file mode 100755
index 0000000..a9a25b2
--- /dev/null
+++ b/tools/to-pack/data/qm-translation/zh_TW.qm
Binary files differ
diff --git a/ultracopier.dox b/ultracopier.dox
index 47b83b3..47b83b3 100644..100755
--- a/ultracopier.dox
+++ b/ultracopier.dox
diff --git a/ultracopier.pro b/ultracopier.pro
index 68c8886..8eb6833 100644..100755
--- a/ultracopier.pro
+++ b/ultracopier.pro
@@ -3,7 +3,7 @@ DEFINES += ULTRACOPIER_PLUGIN_ALL_IN_ONE
include(other-pro/ultracopier-core.pro)
RESOURCES += $$PWD/plugins/static-plugins.qrc \
- $$PWD/plugins/CopyEngine/Ultracopier/copyEngineResources.qrc \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/copyEngineResources.qrc \
$$PWD/plugins/Themes/Oxygen/interfaceResources_unix.qrc \
$$PWD/plugins/Themes/Oxygen/interfaceResources_windows.qrc \
$$PWD/plugins/Themes/Oxygen/interfaceResources.qrc
@@ -31,47 +31,46 @@ DEFINES += ULTRACOPIER_PLUGIN_ALL_IN_ONE
DEFINES += ULTRACOPIER_PLUGIN_ALL_IN_ONE_DIRECT
FORMS += \
- $$PWD/plugins/CopyEngine/Ultracopier/copyEngineOptions.ui \
- $$PWD/plugins/CopyEngine/Ultracopier/debugDialog.ui \
- $$PWD/plugins/CopyEngine/Ultracopier/DiskSpace.ui \
- $$PWD/plugins/CopyEngine/Ultracopier/fileErrorDialog.ui \
- $$PWD/plugins/CopyEngine/Ultracopier/fileExistsDialog.ui \
- $$PWD/plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui \
- $$PWD/plugins/CopyEngine/Ultracopier/FilterRules.ui \
- $$PWD/plugins/CopyEngine/Ultracopier/Filters.ui \
- $$PWD/plugins/CopyEngine/Ultracopier/folderExistsDialog.ui \
- $$PWD/plugins/CopyEngine/Ultracopier/RenamingRules.ui \
- $$PWD/plugins/Themes/Oxygen/themesOptions.ui \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/debugDialog.ui \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.ui \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/Filters.ui \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/RenamingRules.ui \
+ $$PWD/plugins/Themes/Oxygen/interface.ui \
$$PWD/plugins/Themes/Oxygen/options.ui \
- $$PWD/plugins/Themes/Oxygen/interface.ui
+ $$PWD/plugins/Themes/Oxygen/themesOptions.ui
HEADERS += \
- $$PWD/plugins/CopyEngine/Ultracopier/AvancedQFile.h \
- $$PWD/plugins/CopyEngine/Ultracopier/CompilerInfo.h \
- $$PWD/plugins/CopyEngine/Ultracopier/CopyEngine.h \
- $$PWD/plugins/CopyEngine/Ultracopier/DebugDialog.h \
- $$PWD/plugins/CopyEngine/Ultracopier/DebugEngineMacro.h \
- $$PWD/plugins/CopyEngine/Ultracopier/DiskSpace.h \
- $$PWD/plugins/CopyEngine/Ultracopier/DriveManagement.h \
- $$PWD/plugins/CopyEngine/Ultracopier/Environment.h \
- $$PWD/plugins/CopyEngine/Ultracopier/CopyEngineFactory.h \
- $$PWD/plugins/CopyEngine/Ultracopier/FileErrorDialog.h \
- $$PWD/plugins/CopyEngine/Ultracopier/FileExistsDialog.h \
- $$PWD/plugins/CopyEngine/Ultracopier/FileIsSameDialog.h \
- $$PWD/plugins/CopyEngine/Ultracopier/FilterRules.h \
- $$PWD/plugins/CopyEngine/Ultracopier/Filters.h \
- $$PWD/plugins/CopyEngine/Ultracopier/FolderExistsDialog.h \
- $$PWD/plugins/CopyEngine/Ultracopier/MkPath.h \
- $$PWD/plugins/CopyEngine/Ultracopier/ListThread.h \
- $$PWD/plugins/CopyEngine/Ultracopier/ReadThread.h \
- $$PWD/plugins/CopyEngine/Ultracopier/RenamingRules.h \
- $$PWD/plugins/CopyEngine/Ultracopier/ScanFileOrFolder.h \
- $$PWD/plugins/CopyEngine/Ultracopier/StructEnumDefinition_CopyEngine.h \
- $$PWD/plugins/CopyEngine/Ultracopier/StructEnumDefinition.h \
- $$PWD/plugins/CopyEngine/Ultracopier/TransferThread.h \
- $$PWD/plugins/CopyEngine/Ultracopier/Variable.h \
- $$PWD/plugins/CopyEngine/Ultracopier/WriteThread.h \
- $$PWD/plugins/Listener/catchcopy-v0002/Variable.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/CompilerInfo.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/DebugDialog.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/DebugEngineMacro.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/DriveManagement.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/Environment.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/FilterRules.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/Filters.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/MkPath.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/ListThread.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/RenamingRules.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition_CopyEngine.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/TransferThread.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/CopyEngineUltracopier-SpecVariable.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.h \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.h \
+ $$PWD/plugins/Listener/catchcopy-v0002/Listenercatchcopy-v0002Variable.h \
$$PWD/plugins/Listener/catchcopy-v0002/StructEnumDefinition.h \
$$PWD/plugins/Listener/catchcopy-v0002/listener.h \
$$PWD/plugins/Listener/catchcopy-v0002/Environment.h \
@@ -82,40 +81,46 @@ HEADERS += \
$$PWD/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/VariablesCatchcopy.h \
$$PWD/plugins/Themes/Oxygen/DebugEngineMacro.h \
$$PWD/plugins/Themes/Oxygen/Environment.h \
- $$PWD/plugins/Themes/Oxygen/ThemesFactory.h \
$$PWD/plugins/Themes/Oxygen/interface.h \
- $$PWD/plugins/Themes/Oxygen/Variable.h \
- $$PWD/plugins/Themes/Oxygen/TransferModel.h \
- $$PWD/plugins/Themes/Oxygen/StructEnumDefinition.h
+ $$PWD/plugins/Themes/Oxygen/OxygenVariable.h \
+ $$PWD/plugins/Themes/Oxygen/StructEnumDefinition.h \
+ $$PWD/plugins/Themes/Oxygen/ThemesFactory.h \
+ $$PWD/plugins/Themes/Oxygen/TransferModel.h
SOURCES += \
- $$PWD/plugins/CopyEngine/Ultracopier/AvancedQFile.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/CopyEngine-collision-and-error.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/CopyEngine.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/DebugDialog.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/DiskSpace.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/DriveManagement.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/FilterRules.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/Filters.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/ListThread_InodeAction.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/MkPath.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/ReadThread.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/RenamingRules.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/TransferThread.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/WriteThread.cpp \
- $$PWD/plugins/CopyEngine/Ultracopier/ListThread.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/CopyEngine-collision-and-error.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/DebugDialog.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/DriveManagement.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/FilterRules.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/Filters.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/ListThread_InodeAction.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/MkPath.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/RenamingRules.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/ListThread.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/ListThreadActions.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/ListThreadMedia.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/ListThreadNew.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/ListThreadOptions.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/ListThreadScan.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/ListThreadStat.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.cpp \
+ $$PWD/plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.cpp \
$$PWD/plugins/Listener/catchcopy-v0002/listener.cpp \
$$PWD/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ClientCatchcopy.cpp \
$$PWD/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ExtraSocketCatchcopy.cpp \
$$PWD/plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ServerCatchcopy.cpp \
- $$PWD/plugins/Themes/Oxygen/ThemesFactory.cpp \
$$PWD/plugins/Themes/Oxygen/interface.cpp \
+ $$PWD/plugins/Themes/Oxygen/ThemesFactory.cpp \
$$PWD/plugins/Themes/Oxygen/TransferModel.cpp
win32 {
@@ -126,7 +131,7 @@ win32 {
$$PWD/plugins/PluginLoader/catchcopy-v0002/pluginLoader.h \
$$PWD/plugins/PluginLoader/catchcopy-v0002/DebugEngineMacro.h \
$$PWD/plugins/PluginLoader/catchcopy-v0002/Environment.h \
- $$PWD/plugins/PluginLoader/catchcopy-v0002/Variable.h \
+ $$PWD/plugins/PluginLoader/catchcopy-v0002/PluginLoadercatchcopy-v0002Variable.h \
$$PWD/plugins/PluginLoader/catchcopy-v0002/PlatformMacro.h \
$$PWD/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.h
SOURCES += \
@@ -134,4 +139,9 @@ win32 {
$$PWD/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.cpp
FORMS += $$PWD/plugins/PluginLoader/catchcopy-v0002/OptionsWidget.ui
LIBS += -lole32 -lshell32
+ QT += winextras
}
+
+#temp
+HEADERS += $$PWD/plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.h
+SOURCES += $$PWD/plugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp
diff --git a/ultracopier.pro.user.4.9-pre1 b/ultracopier.pro.user.4.9-pre1
new file mode 100755
index 0000000..3e223a0
--- /dev/null
+++ b/ultracopier.pro.user.4.9-pre1
@@ -0,0 +1,601 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 4.8.2, 2020-06-18T09:16:33. -->
+<qtcreator>
+ <data>
+ <variable>EnvironmentId</variable>
+ <value type="QByteArray">{74ab603f-f657-4135-92cf-c93af71b2f91}</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.ActiveTarget</variable>
+ <value type="int">0</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.EditorSettings</variable>
+ <valuemap type="QVariantMap">
+ <value type="bool" key="EditorConfiguration.AutoIndent">true</value>
+ <value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
+ <value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
+ <valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
+ <value type="QString" key="language">Cpp</value>
+ <valuemap type="QVariantMap" key="value">
+ <value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
+ </valuemap>
+ </valuemap>
+ <value type="int" key="EditorConfiguration.CodeStyle.Count">1</value>
+ <value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
+ <value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
+ <value type="int" key="EditorConfiguration.IndentSize">4</value>
+ <value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
+ <value type="int" key="EditorConfiguration.MarginColumn">80</value>
+ <value type="bool" key="EditorConfiguration.MouseHiding">true</value>
+ <value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
+ <value type="int" key="EditorConfiguration.PaddingMode">1</value>
+ <value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
+ <value type="bool" key="EditorConfiguration.ShowMargin">false</value>
+ <value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
+ <value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
+ <value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
+ <value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
+ <value type="int" key="EditorConfiguration.TabSize">8</value>
+ <value type="bool" key="EditorConfiguration.UseGlobal">true</value>
+ <value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
+ <value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
+ <value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
+ <value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
+ <value type="bool" key="EditorConfiguration.inEntireDocument">true</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.PluginSettings</variable>
+ <valuemap type="QVariantMap">
+ <valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
+ <value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
+ <value type="bool" key="ClangTools.BuildBeforeAnalysis">false</value>
+ <value type="QString" key="ClangTools.DiagnosticConfig">Builtin.Clazy</value>
+ <valuelist type="QVariantList" key="ClangTools.SelectedDirs">
+ <value type="QString">/home/user/Desktop/ultracopier/sources/plugins</value>
+ </valuelist>
+ <valuelist type="QVariantList" key="ClangTools.SelectedFiles">
+ <value type="QString">/home/user/Desktop/ultracopier/sources/cpp11addition.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/cpp11additionstringtointcpp.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/DebugModel.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/ProductKey.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/CopyListener.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/FacilityEngine.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/LanguagesManager.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/LocalListener.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/EventDispatcher.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/ExtraSocket.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/PluginLoaderCore.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/CliParser.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/OptionEngine.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/SessionLoader.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/CopyEngineManager.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/main.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/PluginsManager.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/OSSpecific.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/PluginInformation.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/ThemesManager.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/HelpDialog.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/DebugEngine.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/LogThread.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/SystrayIcon.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/LocalPluginOptions.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/Core.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/InternetUpdater.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/ResourcesManager.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/FacilityEngineVersion.cpp</value>
+ <value type="QString">/home/user/Desktop/ultracopier/sources/OptionDialog.cpp</value>
+ </valuelist>
+ <valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
+ <value type="bool" key="ClangTools.UseGlobalSettings">true</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.0</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{23178a1c-09be-4e9f-9aab-ff55e05e7637}</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/build-ultracopier-Desktop-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments">DEFINES+=ULTRACOPIER_DEBUG DEFINES+=ULTRACOPIER_PLUGIN_DEBUG DEFINES+=ULTRACOPIER_PLUGIN_DEBUG_WINDOW</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">-j1</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/build-ultracopier-Desktop-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/build-ultracopier-Desktop-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+ <value type="int">0</value>
+ <value type="int">1</value>
+ <value type="int">2</value>
+ <value type="int">3</value>
+ <value type="int">4</value>
+ <value type="int">5</value>
+ <value type="int">6</value>
+ <value type="int">7</value>
+ <value type="int">8</value>
+ <value type="int">9</value>
+ <value type="int">10</value>
+ <value type="int">11</value>
+ <value type="int">12</value>
+ <value type="int">13</value>
+ <value type="int">14</value>
+ </valuelist>
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">ultracopier</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/user/Desktop/ultracopier/sources/ultracopier.pro</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">ultracopier.pro</value>
+ <value type="QString" key="RunConfiguration.Arguments"></value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
+ <value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/user/Desktop/ultracopier/build-ultracopier-Desktop-Debug</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Target.1</variable>
+ <valuemap type="QVariantMap">
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">llvm</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">llvm</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{e45c5df2-7bbe-4d7b-b0c8-2ccbcd656f05}</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
+ <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/build-ultracopier-llvm-Debug</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/build-ultracopier-llvm-Release</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
+ <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/user/Desktop/ultracopier/build-ultracopier-llvm-Profile</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
+ </valuemap>
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
+ <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
+ <valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
+ <value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
+ <value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
+ <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
+ <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
+ <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
+ <value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
+ <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
+ <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
+ <valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
+ <value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
+ <value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
+ <value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
+ <value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
+ <value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
+ <value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
+ <value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
+ <value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
+ <value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
+ <value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
+ <valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
+ <value type="int">0</value>
+ <value type="int">1</value>
+ <value type="int">2</value>
+ <value type="int">3</value>
+ <value type="int">4</value>
+ <value type="int">5</value>
+ <value type="int">6</value>
+ <value type="int">7</value>
+ <value type="int">8</value>
+ <value type="int">9</value>
+ <value type="int">10</value>
+ <value type="int">11</value>
+ <value type="int">12</value>
+ <value type="int">13</value>
+ <value type="int">14</value>
+ </valuelist>
+ <value type="int" key="PE.EnvironmentAspect.Base">2</value>
+ <valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">ultracopier</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/user/Desktop/ultracopier/sources/ultracopier.pro</value>
+ <value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">ultracopier.pro</value>
+ <value type="QString" key="RunConfiguration.Arguments"></value>
+ <value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
+ <value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
+ <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
+ <value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
+ <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
+ <value type="QString" key="RunConfiguration.WorkingDirectory"></value>
+ <value type="QString" key="RunConfiguration.WorkingDirectory.default"></value>
+ </valuemap>
+ <value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
+ </valuemap>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.TargetCount</variable>
+ <value type="int">2</value>
+ </data>
+ <data>
+ <variable>ProjectExplorer.Project.Updater.FileVersion</variable>
+ <value type="int">20</value>
+ </data>
+ <data>
+ <variable>Version</variable>
+ <value type="int">20</value>
+ </data>
+</qtcreator>