summaryrefslogtreecommitdiff
path: root/plugins-alternative
diff options
context:
space:
mode:
Diffstat (limited to 'plugins-alternative')
-rw-r--r--plugins-alternative/CopyEngine/Rsync/AvancedQFile.cpp94
-rw-r--r--plugins-alternative/CopyEngine/Rsync/AvancedQFile.h32
-rw-r--r--plugins-alternative/CopyEngine/Rsync/CompilerInfo.h1
-rw-r--r--plugins-alternative/CopyEngine/Rsync/FilterRules.cpp193
-rw-r--r--plugins-alternative/CopyEngine/Rsync/FilterRules.h46
-rw-r--r--plugins-alternative/CopyEngine/Rsync/FilterRules.ui162
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Filters.cpp456
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Filters.h44
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Filters.ui194
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/ar/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/de/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/el/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/es/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/fr/translation.ts810
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/hi/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/id/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/it/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/ja/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/ko/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/nl/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/no/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/pl/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/pt/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/ru/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/th/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/tr/translation.ts806
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Languages/zh/translation.ts806
-rwxr-xr-xplugins-alternative/CopyEngine/Rsync/ListThread.cpp1720
-rwxr-xr-xplugins-alternative/CopyEngine/Rsync/ListThread.h376
-rw-r--r--plugins-alternative/CopyEngine/Rsync/ListThread_InodeAction.cpp66
-rw-r--r--plugins-alternative/CopyEngine/Rsync/MkPath.cpp100
-rw-r--r--plugins-alternative/CopyEngine/Rsync/MkPath.h56
-rw-r--r--plugins-alternative/CopyEngine/Rsync/ReadThread.cpp597
-rw-r--r--plugins-alternative/CopyEngine/Rsync/ReadThread.h144
-rw-r--r--plugins-alternative/CopyEngine/Rsync/RenamingRules.cpp85
-rw-r--r--plugins-alternative/CopyEngine/Rsync/RenamingRules.h34
-rw-r--r--plugins-alternative/CopyEngine/Rsync/RenamingRules.ui129
-rw-r--r--plugins-alternative/CopyEngine/Rsync/RmPath.cpp179
-rw-r--r--plugins-alternative/CopyEngine/Rsync/RmPath.h58
-rw-r--r--plugins-alternative/CopyEngine/Rsync/StructEnumDefinition_CopyEngine.h90
-rw-r--r--plugins-alternative/CopyEngine/Rsync/TransferThread.cpp1252
-rw-r--r--plugins-alternative/CopyEngine/Rsync/TransferThread.h221
-rw-r--r--plugins-alternative/CopyEngine/Rsync/Variable.h35
-rw-r--r--plugins-alternative/CopyEngine/Rsync/WriteThread.cpp508
-rw-r--r--plugins-alternative/CopyEngine/Rsync/WriteThread.h138
-rw-r--r--plugins-alternative/CopyEngine/Rsync/copyEngine-collision-and-error.cpp565
-rwxr-xr-xplugins-alternative/CopyEngine/Rsync/copyEngine.cpp819
-rwxr-xr-xplugins-alternative/CopyEngine/Rsync/copyEngine.h362
-rw-r--r--plugins-alternative/CopyEngine/Rsync/copyEngine.pro82
-rw-r--r--plugins-alternative/CopyEngine/Rsync/debugDialog.cpp70
-rw-r--r--plugins-alternative/CopyEngine/Rsync/debugDialog.h40
-rw-r--r--plugins-alternative/CopyEngine/Rsync/debugDialog.ui100
-rwxr-xr-xplugins-alternative/CopyEngine/Rsync/documentation.dox42
-rw-r--r--plugins-alternative/CopyEngine/Rsync/factory.cpp420
-rw-r--r--plugins-alternative/CopyEngine/Rsync/factory.h96
-rw-r--r--plugins-alternative/CopyEngine/Rsync/fileErrorDialog.cpp95
-rw-r--r--plugins-alternative/CopyEngine/Rsync/fileErrorDialog.h45
-rw-r--r--plugins-alternative/CopyEngine/Rsync/fileErrorDialog.ui220
-rw-r--r--plugins-alternative/CopyEngine/Rsync/fileExistsDialog.cpp189
-rw-r--r--plugins-alternative/CopyEngine/Rsync/fileExistsDialog.h58
-rw-r--r--plugins-alternative/CopyEngine/Rsync/fileExistsDialog.ui367
-rw-r--r--plugins-alternative/CopyEngine/Rsync/fileIsSameDialog.cpp156
-rw-r--r--plugins-alternative/CopyEngine/Rsync/fileIsSameDialog.h56
-rw-r--r--plugins-alternative/CopyEngine/Rsync/fileIsSameDialog.ui192
-rw-r--r--plugins-alternative/CopyEngine/Rsync/folderExistsDialog.cpp143
-rw-r--r--plugins-alternative/CopyEngine/Rsync/folderExistsDialog.h54
-rw-r--r--plugins-alternative/CopyEngine/Rsync/folderExistsDialog.ui282
-rw-r--r--plugins-alternative/CopyEngine/Rsync/options.ui328
-rw-r--r--plugins-alternative/CopyEngine/Rsync/resources.qrc8
-rw-r--r--plugins-alternative/CopyEngine/Rsync/resources/add.pngbin564 -> 0 bytes
-rw-r--r--plugins-alternative/CopyEngine/Rsync/resources/edit.pngbin563 -> 0 bytes
-rw-r--r--plugins-alternative/CopyEngine/Rsync/resources/filter.pngbin429 -> 0 bytes
-rw-r--r--plugins-alternative/CopyEngine/Rsync/resources/remove.pngbin722 -> 0 bytes
-rw-r--r--plugins-alternative/CopyEngine/Rsync/scanFileOrFolder.cpp511
-rw-r--r--plugins-alternative/CopyEngine/Rsync/scanFileOrFolder.h91
-rw-r--r--plugins-alternative/PluginLoader/keybinding/DebugEngineMacro.h (renamed from plugins-alternative/CopyEngine/Rsync/DebugEngineMacro.h)7
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Environment.h (renamed from plugins-alternative/CopyEngine/Rsync/Environment.h)6
-rw-r--r--plugins-alternative/PluginLoader/keybinding/KeyBind.cpp11
-rw-r--r--plugins-alternative/PluginLoader/keybinding/KeyBind.h18
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/ar/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/de/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/el/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/en/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/es/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/fr/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/hi/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/hu/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/id/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/it/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/ja/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/ko/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/nl/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/no/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/pl/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/pt/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/ru/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/th/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/tr/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Languages/zh/translation.ts4
-rw-r--r--plugins-alternative/PluginLoader/keybinding/OptionsWidget.cpp55
-rw-r--r--plugins-alternative/PluginLoader/keybinding/OptionsWidget.h31
-rw-r--r--plugins-alternative/PluginLoader/keybinding/OptionsWidget.ui31
-rw-r--r--plugins-alternative/PluginLoader/keybinding/PlatformMacro.h1
-rw-r--r--plugins-alternative/PluginLoader/keybinding/StructEnumDefinition.h (renamed from plugins-alternative/CopyEngine/Rsync/StructEnumDefinition.h)0
-rw-r--r--plugins-alternative/PluginLoader/keybinding/Variable.h16
-rw-r--r--plugins-alternative/PluginLoader/keybinding/documentation.dox34
-rw-r--r--plugins-alternative/PluginLoader/keybinding/informations.xml27
-rw-r--r--plugins-alternative/PluginLoader/keybinding/plugin.json1
-rw-r--r--plugins-alternative/PluginLoader/keybinding/pluginLoader.cpp61
-rw-r--r--plugins-alternative/PluginLoader/keybinding/pluginLoader.h47
-rw-r--r--plugins-alternative/PluginLoader/keybinding/pluginLoader.pro50
-rw-r--r--plugins-alternative/PluginLoader/keybinding/pluginLoader.pro.user.3.3-pre1266
-rw-r--r--plugins-alternative/Themes/Clean/Languages/ar/translation.ts4
-rw-r--r--plugins-alternative/Themes/Clean/Languages/de/translation.ts16
-rw-r--r--plugins-alternative/Themes/Clean/Languages/el/translation.ts4
-rw-r--r--plugins-alternative/Themes/Clean/Languages/en/translation.ts55
-rw-r--r--plugins-alternative/Themes/Clean/Languages/es/translation.ts10
-rw-r--r--plugins-alternative/Themes/Clean/Languages/fr/translation.ts10
-rw-r--r--plugins-alternative/Themes/Clean/Languages/hi/translation.ts4
-rw-r--r--plugins-alternative/Themes/Clean/Languages/hu/translation.ts55
-rw-r--r--plugins-alternative/Themes/Clean/Languages/id/translation.ts4
-rw-r--r--plugins-alternative/Themes/Clean/Languages/it/translation.ts20
-rw-r--r--plugins-alternative/Themes/Clean/Languages/ja/translation.ts4
-rw-r--r--plugins-alternative/Themes/Clean/Languages/ko/translation.ts10
-rw-r--r--plugins-alternative/Themes/Clean/Languages/nl/translation.ts4
-rw-r--r--plugins-alternative/Themes/Clean/Languages/no/translation.ts4
-rw-r--r--plugins-alternative/Themes/Clean/Languages/pl/translation.ts4
-rw-r--r--plugins-alternative/Themes/Clean/Languages/ru/translation.ts10
-rw-r--r--plugins-alternative/Themes/Clean/Languages/th/translation.ts4
-rw-r--r--plugins-alternative/Themes/Clean/Languages/tr/translation.ts4
-rw-r--r--plugins-alternative/Themes/Clean/Languages/zh/translation.ts4
-rw-r--r--[-rwxr-xr-x]plugins-alternative/Themes/Clean/documentation.dox6
-rw-r--r--plugins-alternative/Themes/Clean/factory.cpp89
-rw-r--r--plugins-alternative/Themes/Clean/factory.h42
-rw-r--r--plugins-alternative/Themes/Clean/informations.xml3
-rw-r--r--plugins-alternative/Themes/Clean/interface.cpp557
-rw-r--r--plugins-alternative/Themes/Clean/interface.h242
-rw-r--r--plugins-alternative/Themes/Clean/interface.pro31
-rw-r--r--plugins-alternative/Themes/Clean/interface.ui14
-rw-r--r--plugins-alternative/Themes/Clean/plugin.json1
-rw-r--r--plugins-alternative/Themes/Clean/resources.qrc2
-rw-r--r--plugins-alternative/Themes/Clean/resources/SystemTrayIcon/informations.pngbin734 -> 841 bytes
-rw-r--r--plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Caught_Unix.pngbin798 -> 1093 bytes
-rw-r--r--plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Caught_Windows.pngbin563 -> 623 bytes
-rw-r--r--plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Semiuncaught_Unix.pngbin1007 -> 1296 bytes
-rw-r--r--plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Semiuncaught_Windows.pngbin664 -> 841 bytes
-rw-r--r--plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Uncaught_Unix.pngbin789 -> 754 bytes
-rw-r--r--plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Uncaught_Windows.pngbin551 -> 485 bytes
-rw-r--r--plugins-alternative/Themes/Clean/resources_unix.qrc4
-rw-r--r--plugins-alternative/Themes/Clean/resources_windows.qrc2
-rw-r--r--plugins-alternative/Themes/Supercopier/DebugEngineMacro.h28
-rw-r--r--plugins-alternative/Themes/Supercopier/Environment.h10
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/ar/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/de/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/el/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/en/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/es/translation.ts340
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/fr/translation.ts344
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/hi/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/hu/translation.ts328
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/id/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/it/translation.ts336
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/ja/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/ko/translation.ts336
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/nl/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/no/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/pl/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/pt/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/ru/translation.ts336
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/th/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/tr/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/Languages/zh/translation.ts324
-rw-r--r--plugins-alternative/Themes/Supercopier/StructEnumDefinition.h1
-rw-r--r--plugins-alternative/Themes/Supercopier/TransferModel.cpp569
-rw-r--r--plugins-alternative/Themes/Supercopier/TransferModel.h96
-rw-r--r--plugins-alternative/Themes/Supercopier/Variable.h15
-rw-r--r--plugins-alternative/Themes/Supercopier/documentation.dox33
-rw-r--r--plugins-alternative/Themes/Supercopier/factory.cpp441
-rw-r--r--plugins-alternative/Themes/Supercopier/factory.h83
-rw-r--r--plugins-alternative/Themes/Supercopier/informations.xml (renamed from plugins-alternative/CopyEngine/Rsync/informations.xml)15
-rw-r--r--plugins-alternative/Themes/Supercopier/interface.cpp1332
-rw-r--r--plugins-alternative/Themes/Supercopier/interface.h221
-rw-r--r--plugins-alternative/Themes/Supercopier/interface.pro59
-rw-r--r--plugins-alternative/Themes/Supercopier/interface.ui845
-rw-r--r--plugins-alternative/Themes/Supercopier/interfaceResources.qrc24
-rw-r--r--plugins-alternative/Themes/Supercopier/interfaceResources_unix.qrc9
-rw-r--r--plugins-alternative/Themes/Supercopier/interfaceResources_windows.qrc9
-rw-r--r--plugins-alternative/Themes/Supercopier/plugin.json1
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/add.pngbin0 -> 246 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/exit.pngbin0 -> 545 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/informations.pngbin0 -> 281 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/options.pngbin0 -> 275 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Bottom_Progress_Unix.pngbin0 -> 95 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Bottom_Progress_Windows.pngbin0 -> 93 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Unix.pngbin0 -> 147 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Windows.pngbin0 -> 148 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Unix.pngbin0 -> 147 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Windows.pngbin0 -> 148 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Top_Progress_Unix.pngbin0 -> 95 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Top_Progress_Windows.pngbin0 -> 93 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Unix.pngbin0 -> 141 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Windows.pngbin0 -> 139 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/add.pngbin0 -> 240 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/cancel.pngbin0 -> 284 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/export-transfer-list.pngbin0 -> 264 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/import-transfer-list.pngbin0 -> 316 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/main.pngbin0 -> 148 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/moveDown.pngbin0 -> 191 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/moveUp.pngbin0 -> 190 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/player_end.pngbin0 -> 226 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/player_pause.pngbin0 -> 207 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/player_play.pngbin0 -> 208 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/progressbarleft.pngbin0 -> 133 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/progressbarright.pngbin0 -> 132 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/putOnBottom.pngbin0 -> 206 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/putOnTop.pngbin0 -> 208 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/remove.pngbin0 -> 254 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/resources/search.pngbin0 -> 237 bytes
-rw-r--r--plugins-alternative/Themes/Supercopier/themesOptions.ui384
-rw-r--r--plugins-alternative/Themes/Teracopy/DebugEngineMacro.h7
-rw-r--r--plugins-alternative/Themes/Teracopy/Environment.h3
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/ar/translation.ts8
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/de/translation.ts26
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/el/translation.ts8
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/en/translation.ts89
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/es/translation.ts14
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/fr/translation.ts9
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/hi/translation.ts8
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/hu/translation.ts93
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/id/translation.ts8
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/it/translation.ts26
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/ja/translation.ts8
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/ko/translation.ts6
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/nl/translation.ts8
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/no/translation.ts8
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/pl/translation.ts8
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/ru/translation.ts14
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/th/translation.ts8
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/tr/translation.ts8
-rw-r--r--plugins-alternative/Themes/Teracopy/Languages/zh/translation.ts8
-rw-r--r--plugins-alternative/Themes/Teracopy/TransferModel.cpp841
-rw-r--r--plugins-alternative/Themes/Teracopy/TransferModel.h120
-rw-r--r--plugins-alternative/Themes/Teracopy/Variable.h3
-rw-r--r--[-rwxr-xr-x]plugins-alternative/Themes/Teracopy/documentation.dox6
-rw-r--r--plugins-alternative/Themes/Teracopy/factory.cpp107
-rw-r--r--plugins-alternative/Themes/Teracopy/factory.h38
-rw-r--r--plugins-alternative/Themes/Teracopy/informations.xml3
-rw-r--r--plugins-alternative/Themes/Teracopy/interface.cpp695
-rw-r--r--plugins-alternative/Themes/Teracopy/interface.h289
-rw-r--r--plugins-alternative/Themes/Teracopy/interface.pro31
-rw-r--r--plugins-alternative/Themes/Teracopy/interface.ui14
-rw-r--r--plugins-alternative/Themes/Teracopy/plugin.json1
-rw-r--r--plugins-alternative/Themes/Teracopy/resources.qrc2
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/add.pngbin564 -> 552 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/exit.pngbin775 -> 874 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/informations.pngbin734 -> 841 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/options.pngbin660 -> 624 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Caught_Unix.pngbin798 -> 1093 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Caught_Windows.pngbin563 -> 623 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Semiuncaught_Unix.pngbin1007 -> 1296 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Semiuncaught_Windows.pngbin664 -> 841 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Uncaught_Unix.pngbin789 -> 754 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Uncaught_Windows.pngbin551 -> 485 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/checkbox.pngbin654 -> 619 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/main.pngbin563 -> 623 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/player_pause.pngbin484 -> 640 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources/player_play.pngbin501 -> 673 bytes
-rw-r--r--plugins-alternative/Themes/Teracopy/resources_unix.qrc4
-rw-r--r--plugins-alternative/Themes/Teracopy/resources_windows.qrc2
-rw-r--r--plugins-alternative/Themes/Windows/DebugEngineMacro.h28
-rw-r--r--plugins-alternative/Themes/Windows/Environment.h10
-rw-r--r--plugins-alternative/Themes/Windows/Languages/ar/translation.ts121
-rw-r--r--plugins-alternative/Themes/Windows/Languages/de/translation.ts124
-rw-r--r--plugins-alternative/Themes/Windows/Languages/el/translation.ts121
-rw-r--r--plugins-alternative/Themes/Windows/Languages/en/translation.ts124
-rw-r--r--plugins-alternative/Themes/Windows/Languages/es/translation.ts124
-rw-r--r--plugins-alternative/Themes/Windows/Languages/fr/translation.ts124
-rw-r--r--plugins-alternative/Themes/Windows/Languages/hi/translation.ts121
-rw-r--r--plugins-alternative/Themes/Windows/Languages/hu/translation.ts121
-rw-r--r--plugins-alternative/Themes/Windows/Languages/id/translation.ts121
-rw-r--r--plugins-alternative/Themes/Windows/Languages/it/translation.ts125
-rw-r--r--plugins-alternative/Themes/Windows/Languages/ja/translation.ts121
-rw-r--r--plugins-alternative/Themes/Windows/Languages/ko/translation.ts121
-rw-r--r--plugins-alternative/Themes/Windows/Languages/nl/translation.ts121
-rw-r--r--plugins-alternative/Themes/Windows/Languages/no/translation.ts121
-rw-r--r--plugins-alternative/Themes/Windows/Languages/pl/translation.ts121
-rw-r--r--plugins-alternative/Themes/Windows/Languages/ru/translation.ts127
-rw-r--r--plugins-alternative/Themes/Windows/Languages/th/translation.ts121
-rw-r--r--plugins-alternative/Themes/Windows/Languages/tr/translation.ts121
-rw-r--r--plugins-alternative/Themes/Windows/Languages/zh/translation.ts121
-rw-r--r--plugins-alternative/Themes/Windows/StructEnumDefinition.h1
-rw-r--r--plugins-alternative/Themes/Windows/TransferModel.cpp286
-rw-r--r--plugins-alternative/Themes/Windows/TransferModel.h90
-rw-r--r--plugins-alternative/Themes/Windows/Variable.h15
-rw-r--r--plugins-alternative/Themes/Windows/documentation.dox29
-rw-r--r--plugins-alternative/Themes/Windows/factory.cpp74
-rw-r--r--plugins-alternative/Themes/Windows/factory.h45
-rw-r--r--plugins-alternative/Themes/Windows/informations.xml26
-rw-r--r--plugins-alternative/Themes/Windows/interface.cpp414
-rw-r--r--plugins-alternative/Themes/Windows/interface.h165
-rw-r--r--plugins-alternative/Themes/Windows/interface.pro48
-rw-r--r--plugins-alternative/Themes/Windows/interface.ui415
-rw-r--r--plugins-alternative/Themes/Windows/plugin.json1
-rw-r--r--plugins-alternative/Themes/Windows/resources.qrc10
-rw-r--r--plugins-alternative/Themes/Windows/resources/SystemTrayIcon/informations.pngbin0 -> 841 bytes
-rw-r--r--plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Caught_Unix.pngbin0 -> 1093 bytes
-rw-r--r--plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Caught_Windows.pngbin0 -> 623 bytes
-rw-r--r--plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Semiuncaught_Unix.pngbin0 -> 1296 bytes
-rw-r--r--plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Semiuncaught_Windows.pngbin0 -> 841 bytes
-rw-r--r--plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Uncaught_Unix.pngbin0 -> 754 bytes
-rw-r--r--plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Uncaught_Windows.pngbin0 -> 485 bytes
-rw-r--r--plugins-alternative/Themes/Windows/resources/arrow-down.pngbin0 -> 598 bytes
-rw-r--r--plugins-alternative/Themes/Windows/resources/arrow-up.pngbin0 -> 602 bytes
-rw-r--r--plugins-alternative/Themes/Windows/resources/empty.pngbin0 -> 95 bytes
-rw-r--r--plugins-alternative/Themes/Windows/resources/icon-top.pngbin0 -> 2437 bytes
-rw-r--r--plugins-alternative/Themes/Windows/resources/icon-top.xcfbin0 -> 4398 bytes
-rw-r--r--plugins-alternative/Themes/Windows/resources/icon.pngbin0 -> 379 bytes
-rw-r--r--plugins-alternative/Themes/Windows/resources_unix.qrc7
-rw-r--r--plugins-alternative/Themes/Windows/resources_windows.qrc7
-rw-r--r--plugins-alternative/static-plugins-supercopier.qrc6
320 files changed, 17556 insertions, 28582 deletions
diff --git a/plugins-alternative/CopyEngine/Rsync/AvancedQFile.cpp b/plugins-alternative/CopyEngine/Rsync/AvancedQFile.cpp
deleted file mode 100644
index af5805b..0000000
--- a/plugins-alternative/CopyEngine/Rsync/AvancedQFile.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/** \file AvancedQFile.cpp
-\brief Define the QFile herited class to set file date/time
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include "AvancedQFile.h"
-
-#ifdef Q_CC_GNU
-//this next header is needed to change file time/date under gcc
-#include <utime.h>
-#include <errno.h>
-#endif
-
-//source
-//hSrc=CreateFile(pData->pfiSrcFile->GetFullFilePath(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN | (bNoBuffer ? FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH : 0), NULL);
-//destination
-//hDst=CreateFile(pData->strDstFile, GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN | (bNoBuffer ? FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH : 0), NULL);
-
-bool AvancedQFile::setCreated(QDateTime time)
-{
- time_t ctime=time.toTime_t();
- #ifdef Q_CC_GNU
- //creation time not exists into unix world
- Q_UNUSED(ctime)
- return true;
- #else
- setErrorString(tr("Not supported on this platform"));
- return false;
- #endif
-}
-
-bool AvancedQFile::setLastModified(QDateTime time)
-{
- time_t actime=QFileInfo(*this).lastRead().toTime_t();
- //protect to wrong actime
- if(actime<0)
- actime=0;
- time_t modtime=time.toTime_t();
- if(modtime<0)
- {
- setErrorString(tr("Last modified date is wrong"));
- return false;
- }
- #ifdef Q_CC_GNU
- //this function avalaible on unix and mingw
- utimbuf butime;
- butime.actime=actime;
- butime.modtime=modtime;
- int returnVal=utime(this->fileName().toLocal8Bit().data(),&butime);
- if(returnVal==0)
- return true;
- else
- {
- setErrorString(strerror(errno));
- return false;
- }
- #else
- setErrorString(tr("Not supported on this platform"));
- return false;
- #endif
-}
-
-bool AvancedQFile::setLastRead(QDateTime time)
-{
- time_t modtime=QFileInfo(*this).lastModified().toTime_t();
- //protect to wrong actime
- if(modtime<0)
- modtime=0;
- time_t actime=time.toTime_t();
- if(actime<0)
- {
- setErrorString(tr("Last access date is wrong"));
- return false;
- }
- #ifdef Q_CC_GNU
- //this function avalaible on unix and mingw
- utimbuf butime;
- butime.actime=actime;
- butime.modtime=modtime;
- int returnVal=utime(this->fileName().toLocal8Bit().data(),&butime);
- if(returnVal==0)
- return true;
- else
- {
- setErrorString(strerror(errno));
- return false;
- }
- #else
- setErrorString(tr("Not supported on this platform"));
- return false;
- #endif
-}
-
diff --git a/plugins-alternative/CopyEngine/Rsync/AvancedQFile.h b/plugins-alternative/CopyEngine/Rsync/AvancedQFile.h
deleted file mode 100644
index 284cf02..0000000
--- a/plugins-alternative/CopyEngine/Rsync/AvancedQFile.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/** \file AvancedQFile.h
-\brief Define the QFile herited class to set file date/time
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#ifndef AVANCEDQFILE_H
-#define AVANCEDQFILE_H
-
-#include <QFile>
-#include <QDateTime>
-#include <QFileInfo>
-
-/// \brief devired class from QFile to set time/date on file
-class AvancedQFile : public QFile
-{
- Q_OBJECT
-public:
- /// \brief set created date, not exists in unix world
- bool setCreated(QDateTime time);
- /// \brief set last modification date
- bool setLastModified(QDateTime time);
- /// \brief set last read date
- bool setLastRead(QDateTime time);
-
-/* //fileName
- void close();
- bool open ( FILE * fh, OpenMode mode )
- bool open ( int fd, OpenMode mode )*/
-};
-
-#endif // AVANCEDQFILE_H
diff --git a/plugins-alternative/CopyEngine/Rsync/CompilerInfo.h b/plugins-alternative/CopyEngine/Rsync/CompilerInfo.h
deleted file mode 100644
index 84625b9..0000000
--- a/plugins-alternative/CopyEngine/Rsync/CompilerInfo.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../CompilerInfo.h"
diff --git a/plugins-alternative/CopyEngine/Rsync/FilterRules.cpp b/plugins-alternative/CopyEngine/Rsync/FilterRules.cpp
deleted file mode 100644
index 0e6ba25..0000000
--- a/plugins-alternative/CopyEngine/Rsync/FilterRules.cpp
+++ /dev/null
@@ -1,193 +0,0 @@
-#include "FilterRules.h"
-#include "ui_FilterRules.h"
-
-#include <QMessageBox>
-
-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;
-}
-
-QString FilterRules::get_search_text()
-{
- return ui->search->text();
-}
-
-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 1:
- return ApplyOn_fileAndFolder;
- case 2:
- return ApplyOn_folder;
- }
- return ApplyOn_fileAndFolder;
-}
-
-bool FilterRules::get_need_match_all()
-{
- return ui->need_match_all->isChecked();
-}
-
-void FilterRules::set_search_text(QString search_text)
-{
- ui->search->setText(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(1);
- break;
- case ApplyOn_folder:
- ui->apply_on->setCurrentIndex(2);
- 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 QString &arg1)
-{
- Q_UNUSED(arg1);
- updateChecking();
-}
-
-void FilterRules::updateChecking()
-{
- QRegExp regex;
- isValid=!ui->search->text().isEmpty();
- if(isValid)
- {
- QString tempString;
- if(ui->search_type->currentIndex()==0)
- {
- tempString=QRegExp::escape(ui->search->text());
- if(tempString.contains('/') || tempString.contains('\\'))
- isValid=false;
- }
- else if(ui->search_type->currentIndex()==1)
- {
- tempString=QRegExp::escape(ui->search->text());
- tempString.replace("\\*","[^\\\\/]*");
- }
- else if(ui->search_type->currentIndex()==2)
- {
- tempString=ui->search->text();
- if(tempString.startsWith('^') && tempString.endsWith('$'))
- {
- ui->need_match_all->setChecked(true);
- tempString.remove(QRegExp("^\\^"));
- tempString.remove(QRegExp("\\$$"));
- ui->search->setText(tempString);
- }
- }
- if(isValid)
- {
- if(ui->need_match_all->isChecked())
- tempString="^"+tempString+"$";
- regex=QRegExp(tempString);
- isValid=regex.isValid() && !regex.isEmpty();
- }
- }
-
- 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 QString &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();
- }
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/FilterRules.h b/plugins-alternative/CopyEngine/Rsync/FilterRules.h
deleted file mode 100644
index f06f0cb..0000000
--- a/plugins-alternative/CopyEngine/Rsync/FilterRules.h
+++ /dev/null
@@ -1,46 +0,0 @@
-#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();
- QString get_search_text();
- SearchType get_search_type();
- ApplyOn get_apply_on();
- bool get_need_match_all();
- void set_search_text(QString 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 QString &arg1);
- void on_isValid_clicked();
- void on_testString_textChanged(const QString &arg1);
- void on_matched_clicked();
- void on_search_type_currentIndexChanged(int index);
- void on_need_match_all_clicked();
- void on_buttonBox_clicked(QAbstractButton *button);
-private:
- Ui::FilterRules *ui;
- void updateChecking();
- bool isValid;
- bool haveBeenValided;
-};
-
-#endif // FILTERRULES_H
diff --git a/plugins-alternative/CopyEngine/Rsync/FilterRules.ui b/plugins-alternative/CopyEngine/Rsync/FilterRules.ui
deleted file mode 100644
index fad35cd..0000000
--- a/plugins-alternative/CopyEngine/Rsync/FilterRules.ui
+++ /dev/null
@@ -1,162 +0,0 @@
-<?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="resources.qrc">
- <normaloff>:/resources/filter.png</normaloff>:/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>All string need 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 match 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="resources.qrc"/>
- </resources>
- <connections/>
-</ui>
diff --git a/plugins-alternative/CopyEngine/Rsync/Filters.cpp b/plugins-alternative/CopyEngine/Rsync/Filters.cpp
deleted file mode 100644
index ce87b52..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Filters.cpp
+++ /dev/null
@@ -1,456 +0,0 @@
-#include "Filters.h"
-#include "ui_Filters.h"
-
-#include <QMessageBox>
-
-Filters::Filters(QWidget *parent) :
- QDialog(parent),
- ui(new Ui::Filters)
-{
- ui->setupUi(this);
-}
-
-Filters::~Filters()
-{
- delete ui;
-}
-
-void Filters::setFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions)
-{
- if(includeStrings.size()!=includeOptions.size() || excludeStrings.size()!=excludeOptions.size())
- return;
- Filters_rules new_item;
-
- include.clear();
- int index=0;
- while(index<includeStrings.size())
- {
- new_item.search_text=includeStrings.at(index);
- QStringList options=includeOptions.at(index).split(";");
- new_item.need_match_all=false;
- new_item.search_type=SearchType_rawText;
- new_item.apply_on=ApplyOn_fileAndFolder;
-
- if(options.contains("SearchType_simpleRegex"))
- new_item.search_type=SearchType_simpleRegex;
- if(options.contains("SearchType_perlRegex"))
- new_item.search_type=SearchType_perlRegex;
- if(options.contains("ApplyOn_file"))
- new_item.apply_on=ApplyOn_file;
- if(options.contains("ApplyOn_folder"))
- new_item.apply_on=ApplyOn_folder;
- if(options.contains("need_match_all"))
- new_item.need_match_all=true;
-
- if(convertToRegex(new_item))
- include << new_item;
-
- index++;
- }
-
- exclude.clear();
- index=0;
- while(index<excludeStrings.size())
- {
- new_item.search_text=excludeStrings.at(index);
- QStringList options=excludeOptions.at(index).split(";");
- new_item.need_match_all=false;
- new_item.search_type=SearchType_rawText;
- new_item.apply_on=ApplyOn_fileAndFolder;
-
- if(options.contains("SearchType_simpleRegex"))
- new_item.search_type=SearchType_simpleRegex;
- if(options.contains("SearchType_perlRegex"))
- new_item.search_type=SearchType_perlRegex;
- if(options.contains("ApplyOn_file"))
- new_item.apply_on=ApplyOn_file;
- if(options.contains("ApplyOn_folder"))
- new_item.apply_on=ApplyOn_folder;
- if(options.contains("need_match_all"))
- new_item.need_match_all=true;
-
- if(convertToRegex(new_item))
- exclude << new_item;
-
- index++;
- }
-
- reShowAll();
-}
-
-void Filters::reShowAll()
-{
- ui->inclusion->clear();
- int index=0;
- while(index<include.size())
- {
- QString entryShow=include.at(index).search_text+" (";
- QStringList optionsToShow;
- switch(include.at(index).search_type)
- {
- case SearchType_rawText:
- optionsToShow << tr("Raw text");
- break;
- case SearchType_simpleRegex:
- optionsToShow << tr("Simplified regex");
- break;
- case SearchType_perlRegex:
- optionsToShow << tr("Perl's regex");
- break;
- default:
- break;
- }
- switch(include.at(index).apply_on)
- {
- case ApplyOn_file:
- optionsToShow << tr("Only on file");
- break;
- case ApplyOn_folder:
- optionsToShow << tr("Only on folder");
- break;
- default:
- break;
- }
- if(include.at(index).need_match_all)
- optionsToShow << tr("Full match");
- entryShow+=optionsToShow.join(",");
- entryShow+=")";
- ui->inclusion->addItem(new QListWidgetItem(entryShow));
- index++;
- }
- ui->exclusion->clear();
- index=0;
- while(index<exclude.size())
- {
- QString entryShow=exclude.at(index).search_text+" (";
- QStringList optionsToShow;
- switch(exclude.at(index).search_type)
- {
- case SearchType_rawText:
- optionsToShow << tr("Raw text");
- break;
- case SearchType_simpleRegex:
- optionsToShow << tr("Simplified regex");
- break;
- case SearchType_perlRegex:
- optionsToShow << tr("Perl's regex");
- break;
- default:
- break;
- }
- switch(exclude.at(index).apply_on)
- {
- case ApplyOn_file:
- optionsToShow << tr("Only on file");
- break;
- case ApplyOn_folder:
- optionsToShow << tr("Only on folder");
- break;
- default:
- break;
- }
- if(exclude.at(index).need_match_all)
- optionsToShow << tr("Full match");
- entryShow+=optionsToShow.join(",");
- entryShow+=")";
- ui->exclusion->addItem(new QListWidgetItem(entryShow));
- index++;
- }
-}
-
-QList<Filters_rules> Filters::getInclude()
-{
- return include;
-}
-
-QList<Filters_rules> Filters::getExclude()
-{
- return exclude;
-}
-
-void Filters::newLanguageLoaded()
-{
- ui->retranslateUi(this);
- reShowAll();
-}
-
-void Filters::haveNewFilters()
-{
- QStringList includeStrings,includeOptions,excludeStrings,excludeOptions;
- int index=0;
- while(index<include.size())
- {
- includeStrings<<include.at(index).search_text;
- QStringList optionsToShow;
-
- switch(include.at(index).search_type)
- {
- case SearchType_rawText:
- optionsToShow << "SearchType_rawText";
- break;
- case SearchType_simpleRegex:
- optionsToShow << "SearchType_simpleRegex";
- break;
- case SearchType_perlRegex:
- optionsToShow << "SearchType_perlRegex";
- break;
- default:
- break;
- }
- switch(include.at(index).apply_on)
- {
- case ApplyOn_file:
- optionsToShow << "ApplyOn_file";
- break;
- case ApplyOn_fileAndFolder:
- optionsToShow << "ApplyOn_fileAndFolder";
- break;
- case ApplyOn_folder:
- optionsToShow << "ApplyOn_folder";
- break;
- default:
- break;
- }
- if(include.at(index).need_match_all)
- optionsToShow << tr("Full match");
- includeOptions<<optionsToShow.join(";");
- index++;
- }
- index=0;
- while(index<exclude.size())
- {
- excludeStrings<<exclude.at(index).search_text;
- QStringList optionsToShow;
-
- switch(exclude.at(index).search_type)
- {
- case SearchType_rawText:
- optionsToShow << "SearchType_rawText";
- break;
- case SearchType_simpleRegex:
- optionsToShow << "SearchType_simpleRegex";
- break;
- case SearchType_perlRegex:
- optionsToShow << "SearchType_perlRegex";
- break;
- default:
- break;
- }
- switch(exclude.at(index).apply_on)
- {
- case ApplyOn_file:
- optionsToShow << "ApplyOn_file";
- break;
- case ApplyOn_fileAndFolder:
- optionsToShow << "ApplyOn_fileAndFolder";
- break;
- case ApplyOn_folder:
- optionsToShow << "ApplyOn_folder";
- break;
- default:
- break;
- }
- if(exclude.at(index).need_match_all)
- optionsToShow << tr("Full match");
- excludeOptions<<optionsToShow.join(";");
- index++;
- }
- emit sendNewFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
-}
-
-bool Filters::convertToRegex(Filters_rules &item)
-{
- bool isValid=!item.search_text.isEmpty();
- if(isValid)
- {
- QRegExp regex;
- QString tempString;
- if(item.search_type==SearchType_rawText)
- {
- tempString=QRegExp::escape(item.search_text);
- if(tempString.contains('/') || tempString.contains('\\'))
- isValid=false;
- }
- else if(item.search_type==SearchType_simpleRegex)
- {
- tempString=QRegExp::escape(item.search_text);
- tempString.replace("\\*","[^\\\\/]*");
- }
- else if(item.search_type==SearchType_perlRegex)
- {
- tempString=item.search_text;
- if(tempString.startsWith('^') && tempString.endsWith('$'))
- {
- item.need_match_all=true;
- tempString.remove(QRegExp("^\\^"));
- tempString.remove(QRegExp("\\$$"));
- item.search_text=tempString;
- }
- }
- if(isValid)
- {
- if(item.need_match_all==true)
- tempString="^"+tempString+"$";
- regex=QRegExp(tempString);
- isValid=regex.isValid() && !regex.isEmpty();
- 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.removeAt(index);
- removedEntry=true;
- }
- else
- index++;
- }
- if(removedEntry)
- {
- reShowAll();
- haveNewFilters();
- }
-}
-
-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.removeAt(index);
- removedEntry=true;
- }
- else
- index++;
- }
- if(removedEntry)
- {
- reShowAll();
- haveNewFilters();
- }
-}
-
-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 << new_item;
- reShowAll();
- haveNewFilters();
- }
-}
-
-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 << new_item;
- reShowAll();
- haveNewFilters();
- }
-}
-
-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[index].apply_on);
- dialog.set_need_match_all(exclude[index].need_match_all);
- dialog.set_search_text(exclude[index].search_text);
- dialog.set_search_type(exclude[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.removeAt(index);
- editedEntry=true;
- }
- }
- index++;
- }
- if(editedEntry)
- {
- reShowAll();
- haveNewFilters();
- }
-}
-
-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[index].apply_on);
- dialog.set_need_match_all(exclude[index].need_match_all);
- dialog.set_search_text(exclude[index].search_text);
- dialog.set_search_type(exclude[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.removeAt(index);
- editedEntry=true;
- }
- }
- index++;
- }
- if(editedEntry)
- {
- reShowAll();
- haveNewFilters();
- }
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/Filters.h b/plugins-alternative/CopyEngine/Rsync/Filters.h
deleted file mode 100644
index dcdcb36..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Filters.h
+++ /dev/null
@@ -1,44 +0,0 @@
-#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();
- void setFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions);
- void reShowAll();
- QList<Filters_rules> getInclude();
- QList<Filters_rules> getExclude();
- void newLanguageLoaded();
-private:
- Ui::Filters *ui;
- QList<Filters_rules> include;
- QList<Filters_rules> exclude;
- void haveNewFilters();
- bool convertToRegex(Filters_rules &item);
-signals:
- void sendNewFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions);
-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-alternative/CopyEngine/Rsync/Filters.ui b/plugins-alternative/CopyEngine/Rsync/Filters.ui
deleted file mode 100644
index db8577c..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Filters.ui
+++ /dev/null
@@ -1,194 +0,0 @@
-<?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="resources.qrc">
- <normaloff>:/resources/filter.png</normaloff>:/resources/filter.png</iconset>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <property name="spacing">
- <number>1</number>
- </property>
- <property name="margin">
- <number>1</number>
- </property>
- <item>
- <widget class="QGroupBox" name="groupBox">
- <property name="title">
- <string>Exclusion filter</string>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <property name="spacing">
- <number>1</number>
- </property>
- <property name="margin">
- <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="resources.qrc">
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="edit_exclusion">
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/resources/edit.png</normaloff>:/resources/edit.png</iconset>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="remove_exclusion">
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/resources/remove.png</normaloff>:/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 filter</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_4">
- <property name="spacing">
- <number>1</number>
- </property>
- <property name="margin">
- <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="resources.qrc">
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="edit_inclusion">
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/resources/edit.png</normaloff>:/resources/edit.png</iconset>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="remove_inclusion">
- <property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/resources/remove.png</normaloff>:/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="resources.qrc"/>
- </resources>
- <connections/>
-</ui>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/ar/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/ar/translation.ts
deleted file mode 100644
index 338cb72..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/ar/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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="95"/>
- <source>All string need match</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="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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 filter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</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="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <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="26"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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.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>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on 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="56"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</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="153"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation type="unfinished"></translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/de/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/de/translation.ts
deleted file mode 100644
index 1370c9a..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/de/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="de" sourcelanguage="en">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation>Auf dieser Plattform nicht unterstützt</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation>Datum der letzten Änderung ist falsch</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation>Datum des letzten Zugriffs ist falsch</translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation>Optionen Fehler</translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation>Optionen Motor nicht geladen wird, kann nicht auf die Filter zu übersetzen</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>Perl&apos;s 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 Ordnernamen</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="95"/>
- <source>All string need match</source>
- <translation>Alle Saite muss passen</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="102"/>
- <source>Checking</source>
- <translation>Überprüfung</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="115"/>
- <source>Test string:</source>
- <translation>Test-String:</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="17"/>
- <source>Filters dialog</source>
- <translation>Filters dialog</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="108"/>
- <source>The regex is valid</source>
- <translation>Die Regex ist gültig</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</source>
- <translation>Der Test-String Match mit dem regex</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="30"/>
- <source>Exclusion filter</source>
- <translation>Ausschluss-Filter</translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</source>
- <translation>Einbeziehungsfilter</translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="105"/>
- <source>None = Include all</source>
- <translation>None = Schließt alle</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation>Roh text</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation>Vereinfachte regex</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation>Perl&apos;s regex</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation>Nur auf Datei</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation>Nur auf Ordner</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation>Spielaufzeichnung</translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <source>Unable do to move or copy item into wrong forced mode: %1</source>
- <translation>Kann nicht tun, verschieben oder kopieren Artikel in den falschen gezwungen Modus: %1</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation>Unfähig, die Transferliste sparen: %1</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation>Problem an der Lektüre, der Oder Dateigröße IST Null</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation>Falsche Header: &quot;%1&quot;</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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 in diesem Modus nicht</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1240"/>
- <source>The transfer list is in copy mode, but this instance is not in this mode</source>
- <translation>Die Transferliste ist im Copy-Mode, aber dieser Fall ist in diesem Modus nicht</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1246"/>
- <source>The transfer list is in move mode, but this instance is not in this mode</source>
- <translation>Die Transferliste ist in Verschiebe-Modus, aber diese Instanz ist in diesem Modus nicht</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation>Einige Fehler wurden während des Parsing gefunden</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <source>Unable to open the transfer list: %1</source>
- <translation>Unfähig, die Transferliste geöffnet: %1</translation>
- </message>
-</context>
-<context>
- <name>MkPath</name>
- <message>
- <location filename="../../MkPath.cpp" line="62"/>
- <source>Unable to create the folder</source>
- <translation>Der Ordner kann nicht erstellt</translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation>Unfähig, die Quelldatei zu lesen: </translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <source>File truncated during the read, possible data change</source>
- <translation>Datei während der Lese, möglich Datenänderung abgeschnitten</translation>
- </message>
-</context>
-<context>
- <name>RenamingRules</name>
- <message>
- <location filename="../../RenamingRules.ui" line="26"/>
- <source>First renaming</source>
- <translation>erste Umbenennung</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation>%name% - kopieren</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <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 ursprünglichen Dateinamen&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation>zweite Umbenennung</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation>%name% - kopieren (%number%)</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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;Variablen: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; für den ursprünglichen Dateinamen&lt;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; für die zusätzliche Zahl&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation>%1 - kopieren</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="43"/>
- <location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - kopieren (%2)</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation>Umbenennen von Regeln</translation>
- </message>
-</context>
-<context>
- <name>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation>Der Ordner kann nicht entfernen</translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation>%1 - kopieren</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - kopieren (%2)</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation>Die Prüfsummen nicht überein</translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation>Unfähig, die Quelldatei zu lesen: </translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation>Datei während der Lese, möglich Datenänderung abgeschnitten</translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <source>The engine is forced to move, you can&apos;t copy with it</source>
- <translation>Der Motor wird gezwungen sich zu bewegen, können Sie mit ihr nicht zu kopieren</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <source>The engine is forced to copy, you can&apos;t move with it</source>
- <translation>Der Motor ist gezwungen, zu kopieren, können Sie nicht mit ihm bewegen</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation>Der Modus wurden vorher gezwungen, es interner Fehler ist, melden Sie dies bitte</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation>Optionen Fehler</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation>Optionen Motor nicht geladen wird, kann nicht auf die Filter zu übersetzen</translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on file</source>
- <translation>Fehler bei der Datei</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation>Fehler</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="56"/>
- <source>Size</source>
- <translation>Größe</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation>Geändert</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation>Dateiname</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation>Immer diese Aktion</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation>Legen Sie nach unten</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation>Wiederholen</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation>überspringen</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation>Stornieren</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation>Fehler auf Ordner</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</source>
- <translation>Ordnername</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="153"/>
- <source>Size</source>
- <translation>Größe</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation>Geändert</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation>Dateiname</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation>Schlagen neuen Namen</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation>Immer diese Aktion</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation>Umbenennen</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation>überschreiben</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation>überspringen</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation>Stornieren</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation>Überschreiben, wenn neuere</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation>Überschreiben, wenn nicht gleiche Änderungsdatum</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation>%1 - kopieren</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - kopieren (%2)</translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation>Diese Dateien sind die gleiche Datei</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation>Die Quelle und das Ziel ist dasselbe</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation>Größe</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation>Geändert</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation>Dateiname</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation>Schlagen neuen Namen</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation>Immer diese Aktion</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation>Umbenennen</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation>überspringen</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation>Stornieren</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation>%1 - kopieren</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - kopieren (%2)</translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation>Diese Ordner sind die gleichen Ordner</translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation>Die Quelle und das Ziel ist dasselbe</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation>Geändert</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation>Ordnername</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation>Schlagen neuen Namen</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation>Immer diese Aktion</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation>Umbenennen</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation>Fusionieren</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation>überspringen</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation>Stornieren</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation>Ordner bereits vorhanden ist</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation>%1 - kopieren</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - kopieren (%2)</translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation>Übertragen Sie die Datei Rechte</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation>Halten Sie das Datei-Datum</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation>Blockgröße</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation>KB</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation>Auto starten Sie die Übertragung</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation>Wenn Ordner Fehler</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation>Fragen</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation>überspringen</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation>Fusionieren</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation>Umbenennen</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation>Prüfen Sie, ob Zielordner vorhanden ist</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation>Wenn Ordner Kollision</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation>Checksum</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation>Erst nach dem Fehler</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation>Ignorieren, wenn nicht</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation>Haben checksum</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation>Aktivieren Sie OS-Puffer</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation>Filter</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation>Umbenennen von Regeln</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation>OS-Puffer, wenn kleiner als</translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation>%1 - kopieren</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - kopieren (%2)</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation>Der Ordner existiert nicht</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation>Der Ordner ist nicht lesbar</translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/el/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/el/translation.ts
deleted file mode 100644
index 338cb72..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/el/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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="95"/>
- <source>All string need match</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="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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 filter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</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="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <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="26"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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.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>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on 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="56"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</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="153"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation type="unfinished"></translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/es/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/es/translation.ts
deleted file mode 100644
index 8e00156..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/es/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="es" sourcelanguage="en">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation>No es compatible con esta plataforma</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation>Fecha de última modificación es incorrecto</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation>Fecha de último acceso es incorrecto</translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation>Error de opciones</translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <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>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="95"/>
- <source>All string need match</source>
- <translation>Todas las líneas tiene por qué coincidir</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="108"/>
- <source>The regex is valid</source>
- <translation>La expresión regular es válido</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</source>
- <translation>La coincidencia con la cadena de prueba con la expresión regular</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="30"/>
- <source>Exclusion filter</source>
- <translation>Exclusión filtro</translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</source>
- <translation>La inclusión del filtro</translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="105"/>
- <source>None = Include all</source>
- <translation>Ninguno = Incluya todos los</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation>texto Fuente</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation>Simplificado regex</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation>Perl&apos;s regex</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation>Sólo en el archivo</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation>Sólo en la carpeta</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation>Partido completo</translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <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="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation>Problema en la lectura, o el tamaño del archivo es nulo</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation>Encabezado incorrecto: &quot;%1&quot;</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error 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="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation>No se puede crear la carpeta</translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <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="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <source>File truncated during the read, possible data change</source>
- <translation>Archivo truncada durante el cambio de lectura, los datos posibles</translation>
- </message>
-</context>
-<context>
- <name>RenamingRules</name>
- <message>
- <location filename="../../RenamingRules.ui" line="26"/>
- <source>First renaming</source>
- <translation>En primer lugar el cambio de nombre</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation>%name% - copia</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> 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;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation>En segundo lugar el cambio de nombre</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation>%name% - copia (%number%)</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; para el número adicional&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</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>
- </message>
-</context>
-<context>
- <name>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation>No se puede eliminar la carpeta</translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copia (%2)</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation>Las sumas de comprobación no coincide</translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation>No se puede leer el archivo de origen: </translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation>Archivo truncada durante el cambio de lectura, los datos posibles</translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation>El modo se han visto obligados con anterioridad, es un error interno, por favor repórtelo</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation>Opciones de error</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <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>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on file</source>
- <translation>Error en el archivo</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation>Error</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="56"/>
- <source>Size</source>
- <translation>Tamaño</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation>Modificado</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation>Nombre de archivo</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation>Siempre hacer esta acción</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation>Ponga a abajo</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation>Reintentar</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation>Omitir</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation>Cancelar</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation>Error en la carpeta</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</source>
- <translation>Nombre de la carpeta</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="153"/>
- <source>Size</source>
- <translation>Tamaño</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation>Modificado</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation>Nombre de archivo</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation>Sugerir nuevo nombre</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation>Siempre hacer esta acción</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation>Cambiar el nombre</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation>Sobrescribir</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation>Omitir</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation>Cancelar</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation>Sobrescribir si nuevo</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation>Sobrescribir si no es misma fecha de modificación</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copia (%2)</translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation>Estos archivos son el mismo archivo</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation>La fuente y el destino es el mismo</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation>Tamaño</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation>Modificado</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation>Nombre de archivo</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation>Sugerir nuevo nombre</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation>Siempre hacer esta acción</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation>Cambiar el nombre</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation>Omitir</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation>Cancelar</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copia (%2)</translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation>Esta carpeta es la misma carpeta</translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation>La fuente y el destino es el mismo</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation>Modificado</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation>Nombre de la carpeta</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation>Sugerir nuevo nombre</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation>Siempre hacer esta acción</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation>Cambiar el nombre</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation>Unir</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation>Omitir</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation>Cancelar</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation>Carpeta ya existe</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copia (%2)</translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation>Transferencia de los derechos de archivo</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation>Mantener la fecha de archivo</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation>Tamaño del bloque</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation>KB</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation>Auto iniciar la transferencia</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation>Cuando el error carpeta</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation>Pedir</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation>Omitir</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation>Unir</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation>Cambiar el nombre</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation>Compruebe si existe la carpeta de destino</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation>Cuando la colisión carpeta</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation>Suma de comprobación</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation>Sólo después de un error</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation>No haga caso si no es posible</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation>Hacer suma de comprobación</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation>Habilitar el OS de amortiguación</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation>Filtros</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation>Reglas de Cambio de nombre</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation>OS de amortiguación sólo si menor que</translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copia (%2)</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation>La carpeta no existe</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation>La carpeta no se puede leer</translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/fr/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/fr/translation.ts
deleted file mode 100644
index 92d565c..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/fr/translation.ts
+++ /dev/null
@@ -1,810 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="fr" sourcelanguage="en">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation>Non supporté sur cette plateforme</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation>Date de dernière modification du fichier fausse</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation>Date du dernier accès au fichier fausse</translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation>Erreur d&apos;options</translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <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édrer aux filtres</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 brute</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="56"/>
- <source>Simplified regex</source>
- <translation>Regex simplifié</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="95"/>
- <source>All string need match</source>
- <translation>Toute la chaine doit correspondre</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 teste:</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="108"/>
- <source>The regex is valid</source>
- <translation>La regex est valid</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</source>
- <translation>La chaine de teste corresponds avec la regex</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="30"/>
- <source>Exclusion filter</source>
- <translation>Filtre d&apos;exclusion</translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</source>
- <translation>Filtre d&apos;inclusion</translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="105"/>
- <source>None = Include all</source>
- <translation>Aucun = tout inclure</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation>Texte brute</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation>Regex simplifié</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation>Regex perl</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation>Appliquer sur fichier</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation>Appliquer sur dossier</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation>Correspondance totale</translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation>Impossible de sauvegarde la liste de transfer: %1</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation>Probléme à la lecture, ou fichier de taille nulle</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation>Mauvaise en-tête: &quot;%1&quot;</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
- <translation>La list de transfer est en mode mixte, mais l&apos;instance n&apos;est pas dans ce mode</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1240"/>
- <source>The transfer list is in copy mode, but this instance is not in this mode</source>
- <translation>La list de transfer est en mode copie, mais l&apos;instance n&apos;est pas dans ce mode</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1246"/>
- <source>The transfer list is in move mode, but this instance is not in this mode</source>
- <translation>La list de transfer est en mode déplacement, mais l&apos;instance n&apos;est pas dans ce mode</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation>Quelque erreur ont été trouvé durrant l&apos;analise des lignes</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <source>Unable to open the transfer list: %1</source>
- <translation>Impossible d&apos;ouvrir la list de transfer: %1</translation>
- </message>
-</context>
-<context>
- <name>MkPath</name>
- <message>
- <location filename="../../MkPath.cpp" line="62"/>
- <source>Unable to create the folder</source>
- <translation>Impossible de créer le répertoire</translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation>Impossible de lire le fichier source: </translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <source>File truncated during the read, possible data change</source>
- <translation>Fichier diminué durrant la lecture, possible changement de données</translation>
- </message>
-</context>
-<context>
- <name>RenamingRules</name>
- <message>
- <location filename="../../RenamingRules.ui" line="26"/>
- <source>First renaming</source>
- <translation>Premier renommage</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translatorcomment>variables need never be translated</translatorcomment>
- <translation>%name% - copie</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translatorcomment>variables need never be translated</translatorcomment>
- <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 originel&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation>Seconds renommage</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translatorcomment>variables need never be translated</translatorcomment>
- <translation>%name% - copie (%number%)</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translatorcomment>variables need never be translated</translatorcomment>
- <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 originel&lt;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; pour le nombre extra&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation>%1 - copie</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>
- </message>
-</context>
-<context>
- <name>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation>Impossible de supprimer le répertoire</translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation>%1 - copie</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copie (%2)</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation>Les checksums ne correspondent pas</translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation>Impossible de lire le fichier source: </translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation>Fichier diminué durrant la lecture, possible changement de données</translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation>Le mode as été forcé précédement, c&apos;est une erreur interne, merci de le repporter</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation>Erreur d&apos;options</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <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édrer aux filtres</translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on file</source>
- <translation>Erreur sur le fichier</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation>Erreur</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="56"/>
- <source>Size</source>
- <translation>Taille</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation>Modifié</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation>Nom de fichier</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation>&amp;Toujours effectuer cette action</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation>Mettre à la fin</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation>Réessayer</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation>&amp;Passer</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation>&amp;Annuler</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation>Erreur sur un dossier</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</source>
- <translation>Nom de répertoire</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="153"/>
- <source>Size</source>
- <translation>Taille</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation>Modifié</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation>Nom de fichier</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation>Suggérer un &amp;nouveau nom</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation>&amp;Toujours effectuer cette action</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation>&amp;Renommer</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation>&amp;Ecraser</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation>&amp;Passer</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation>&amp;Annuler</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation>Ecraser si plus récent</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation>Ecraser si la date de modification est différente</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation>%1 - copie</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copie (%2)</translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation>Ces fichiers sont identiques</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation>La source et la destination sont identiques</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation>Taille</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation>Modifié</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation>Nom de fichier</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation>Suggérer un &amp;nouveau nom</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation>&amp;Toujours effectuer cette action</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation>&amp;Renommer</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation>&amp;Passer</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation>&amp;Annuler</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation>%1 - copie</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copie (%2)</translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation>Les répertoires sont identiques</translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation>La source et la destination sont identiques</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation>Modifié</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation>Nom de répertoire</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation>Suggérer un &amp;nouveau nom</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation>&amp;Toujours effectuer cette action</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation>&amp;Renommer</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation>Fusionner</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation>Passer</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation>&amp;Annuler</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation>Dossier déjà existant</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation>%1 - copie</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copie (%2)</translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation>Transférer les droits des fichiers</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation>Garder la date du fichier</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation>En cas d&apos;erreur de répertoire</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation>Demander</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation>Passer</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation>Fusionner</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation>Renommer</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation>Vérifier si le répertoire de destination existe</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation>Taille de block</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation>Ko</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation>Démmarer automatiquement le transfert</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation>Lors d&apos;une collision de dossier</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation>Checksum</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation>Seulement après erreur</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation>Ignorer si impossible</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation>Faire un checksum</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation>Activer le buffer de l&apos;OS</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation>Filtres</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation>Régles de renommage</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation>Buffer de l&apos;OS seulement si plus petit que</translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation>%1 - copie</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copie (%2)</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation>Le répertoire n&apos;existe pas</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation>Le répertoire n&apos;est pas lisible</translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/hi/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/hi/translation.ts
deleted file mode 100644
index 338cb72..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/hi/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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="95"/>
- <source>All string need match</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="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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 filter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</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="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <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="26"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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.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>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on 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="56"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</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="153"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation type="unfinished"></translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/id/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/id/translation.ts
deleted file mode 100644
index 338cb72..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/id/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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="95"/>
- <source>All string need match</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="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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 filter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</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="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <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="26"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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.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>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on 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="56"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</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="153"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation type="unfinished"></translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/it/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/it/translation.ts
deleted file mode 100644
index 16adaed..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/it/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="it" sourcelanguage="en">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation>Non supportato su questa piattaforma</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation>Ultima modifica è sbagliato</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation>Ultima data di accesso è sbagliato</translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation>opzioni di errore</translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation>Opzioni del motore non viene caricato, non possono accedere ai filtri</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>Tipo di ricerca:</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="51"/>
- <source>Raw text</source>
- <translation>testo Raw</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="56"/>
- <source>Simplified regex</source>
- <translation>semplificato 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>Applicare su:</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="95"/>
- <source>All string need match</source>
- <translation>Tutti stringa bisogno di corrispondere</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>Test stringa:</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="17"/>
- <source>Filters dialog</source>
- <translation>Filtri di dialogo</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="108"/>
- <source>The regex is valid</source>
- <translation>La regex è valido</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</source>
- <translation>La stringa di test match con la regex</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="30"/>
- <source>Exclusion filter</source>
- <translation>Esclusione filtro</translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</source>
- <translation>inclusione filtro</translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="105"/>
- <source>None = Include all</source>
- <translation>Nessuno = Includi tutte le</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation>testo Raw</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation>semplificato regex</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation>Perl&apos;s regex</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation>Solo su file</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation>Solo sulla cartella</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation>partita completa</translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <source>Unable do to move or copy item into wrong forced mode: %1</source>
- <translation>Impossibile fare per spostare o copiare elemento in male modo forzato: %1</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1199"/>
- <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="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation>Problema alla lettura, o la dimensione del file è nullo</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation>Sbagliato intestazione: &quot;%1&quot;</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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 è in questa modalità</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1240"/>
- <source>The transfer list is in copy mode, but this instance is not in this mode</source>
- <translation>La lista di trasferimento è in modalità di copia, ma questa istanza non è in questa modalità</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1246"/>
- <source>The transfer list is in move mode, but this instance is not in this mode</source>
- <translation>La lista di trasferimento è in modalità di spostamento, ma questa istanza non è in questa modalità</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation>Alcuni errori sono stati trovati durante l&apos;analisi linea</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <source>Unable to open the transfer list: %1</source>
- <translation>Impossibile aprire la lista di trasferimento: %1</translation>
- </message>
-</context>
-<context>
- <name>MkPath</name>
- <message>
- <location filename="../../MkPath.cpp" line="62"/>
- <source>Unable to create the folder</source>
- <translation>Impossibile creare la cartella</translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation>Impossibile leggere il file sorgente: </translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <source>File truncated during the read, possible data change</source>
- <translation>File troncato durante la lettura, i possibili cambiamenti di dati</translation>
- </message>
-</context>
-<context>
- <name>RenamingRules</name>
- <message>
- <location filename="../../RenamingRules.ui" line="26"/>
- <source>First renaming</source>
- <translation>Prima ridenominazione</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation>%name% - copia</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <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 del file originale&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation>Secondo ridenominazione</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation>%name% - copia (%number%)</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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;variabili: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; per il nome del file originale&lt;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; per il numero aggiuntivo&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</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>Rinominare le regole</translation>
- </message>
-</context>
-<context>
- <name>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation>Impossibile rimuovere la cartella</translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copia (%2)</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation>Il checksum non corrisponde</translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation>Impossibile leggere il file sorgente: </translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation>File troncato durante la lettura, i possibili cambiamenti di dati</translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <source>The engine is forced to move, you can&apos;t copy with it</source>
- <translation>Il motore è costretto a muoversi, non è possibile copiare con esso</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <source>The engine is forced to copy, you can&apos;t move with it</source>
- <translation>Il motore è costretto a copiare, non è possibile spostare con esso</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation>La modalità sono stati costretti in precedenza, è un errore interno, si prega di segnalarlo</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation>opzioni di errore</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation>Opzioni del motore non viene caricato, non possono accedere ai filtri</translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on file</source>
- <translation>Errore su file</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation>Errore</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="56"/>
- <source>Size</source>
- <translation>Dimensione</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation>Modificato</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation>Nome file</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation>Eseguire sempre questa azione</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation>Mettere a fondo</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation>Riprova</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation>Saltare</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation>Annullare</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation>Errore cartella</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</source>
- <translation>Nome della cartella</translation>
- </message>
-</context>
-<context>
- <name>fileExistsDialog</name>
- <message>
- <location filename="../../fileExistsDialog.ui" line="14"/>
- <source>The file exists</source>
- <translation>Il file esiste</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation>Fonte</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="153"/>
- <source>Size</source>
- <translation>Dimensione</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation>Modificato</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation>Nome file</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation>Suggerisci nuovo nome</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation>Eseguire sempre questa azione</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation>Rinominare</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation>Sovrascrivi</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation>Saltare</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation>Annullare</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation>Sovrascrivi se più recente</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation>Sovrascrivi se non la data di modifica stessa</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copia (%2)</translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation>Questi file sono lo stesso file</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation>La sorgente e destinazione è uguale</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation>Dimensione</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation>Modificato</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation>Nome file</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation>Suggerisci nuovo nome</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation>Eseguire sempre questa azione</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation>Rinominare</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation>Saltare</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation>Annullare</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copia (%2)</translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation>Questo cartelle sono nella stessa cartella</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="34"/>
- <source>Source</source>
- <translation>Fonte</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="50"/>
- <source>Destination</source>
- <translation>Destinazione</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="62"/>
- <source>The source and destination is same</source>
- <translation>La sorgente e destinazione è uguale</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation>Modificato</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation>Nome della cartella</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation>Suggerisci nuovo nome</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation>Eseguire sempre questa azione</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation>Rinominare</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation>Unire</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation>Saltare</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation>Annullare</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation>Cartella esiste già</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copia (%2)</translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation>Trasferire i diritti di file</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation>Tenere la data del file</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation>Dimensione del blocco</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation>Auto iniziare il trasferimento</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation>Quando errore cartella</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation>Chiedere</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation>Saltare</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation>Unire</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation>Rinominare</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation>Controllare se la cartella di destinazione esiste</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation>Quando collisione cartella</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation>Solo dopo l&apos;errore</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation>Ignora se impossibile</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation>Fare checksum</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation>Abilita OS tampone</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation>Filtri</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation>Rinominare le regole</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation>OS tampone solo se inferiori</translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - copia (%2)</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation>La cartella non esiste</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation>La cartella non è leggibile</translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/ja/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/ja/translation.ts
deleted file mode 100644
index 9c2e5d6..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/ja/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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>All string need match</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>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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 filter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</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="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <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="26"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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.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>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on 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="56"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</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="153"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation type="unfinished"></translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/ko/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/ko/translation.ts
deleted file mode 100644
index 4cbf604..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/ko/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="ko_KR">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation>이 플랫폼에서 지원되지 않습니다</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation>마지막 수정 날짜가 잘못되었습니다</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation>마지막 엑세스 날짜가 잘못되었습니다</translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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>All string need match</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>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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 filter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</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="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation>폴더를 생성할 수 없습니다</translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation>원본 파일 읽기 불가:</translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <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="26"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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.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>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation>폴더를 제거할 수 없습니다</translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished">원본 파일 읽기 불가:</translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on file</source>
- <translation>파일 오류가 발생했습니다</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation>오류</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="56"/>
- <source>Size</source>
- <translation>크기</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation>수정 날짜</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation>파일 이름</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation>&amp;항상 이 작동 실행</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation>아래에 놓기</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation>재시도</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation>&amp;건너뛰기</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation>&amp;취소</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</source>
- <translation type="unfinished">폴더 이름</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="153"/>
- <source>Size</source>
- <translation>크기</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation>수정 날짜</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation>파일 이름</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation>새 &amp;이름 제안</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation>&amp;항상 이 작동 실행</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation>&amp;이름 바꾸기</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation>&amp;덮어씌우기</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation>&amp;건너뛰기</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation>&amp;취소</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation>더 최신이면 덮어씌우기</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation>수정 날짜가 다르면 덮어씌우기</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation>이 파일들은 동일한 파일입니다</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation>원본과 대상이 동일합니다</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation>크기</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation>수정 날짜</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation>파일 이름</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation>새 &amp;이름 제안</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation>&amp;항상 이 작동 실행</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation>&amp;이름 바꾸기</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation>&amp;건너뛰기</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation>&amp;취소</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation>이 폴더들은 동일한 폴더입니다</translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation>원본과 대상이 동일합니다</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation>수정 날짜</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation>폴더 이름</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation>새 &amp;이름 제안</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation>&amp;항상 이 작동 실행</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation>&amp;이름 바꾸기</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation>합치기</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation>건너뛰기</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation>&amp;취소</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation>파일 권한 전송</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation>파일 날짜 보존</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation>블럭 크기</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation>KB</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation>전송 자동 시작</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation>폴더 오류시</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation>확인</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation>건너뛰기</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation>합치기</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation>이름 바꾸기</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation>대상 폴드 존재시 확인</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation>폴더 충돌시</translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation>폴더가 존재하지 않습니다</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation>폴더를 읽을 수 없습니다</translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/nl/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/nl/translation.ts
deleted file mode 100644
index 338cb72..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/nl/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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="95"/>
- <source>All string need match</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="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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 filter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</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="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <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="26"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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.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>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on 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="56"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</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="153"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation type="unfinished"></translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/no/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/no/translation.ts
deleted file mode 100644
index 338cb72..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/no/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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="95"/>
- <source>All string need match</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="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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 filter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</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="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <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="26"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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.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>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on 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="56"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</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="153"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation type="unfinished"></translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/pl/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/pl/translation.ts
deleted file mode 100644
index 338cb72..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/pl/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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="95"/>
- <source>All string need match</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="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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 filter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</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="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <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="26"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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.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>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on 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="56"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</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="153"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation type="unfinished"></translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/pt/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/pt/translation.ts
deleted file mode 100644
index 338cb72..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/pt/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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="95"/>
- <source>All string need match</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="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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 filter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</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="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <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="26"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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.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>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on 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="56"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</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="153"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation type="unfinished"></translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/ru/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/ru/translation.ts
deleted file mode 100644
index cbafed3..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/ru/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0" language="ru" sourcelanguage="en">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation>Не поддерживается на этой платформе</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation>Дата обновления неправильно</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation>Дата последнего доступа не так</translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation>Опции ошибке</translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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>упрощенный 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="95"/>
- <source>All string need match</source>
- <translation>Все строки нужно соответствовать</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="108"/>
- <source>The regex is valid</source>
- <translation>Регулярное действует</translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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="30"/>
- <source>Exclusion filter</source>
- <translation>Исключение фильтра</translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</source>
- <translation>Включение фильтра</translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="105"/>
- <source>None = Include all</source>
- <translation>Ни = Включить все</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation>Сырой текст</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation>Упрощенная регулярных выражений</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation>Perl&apos;s regex</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation>Только на файл</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation>Только на папку</translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation>Полный матч</translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <source>Unable do to move or copy item into wrong forced mode: %1</source>
- <translation>Невозможно сделать, чтобы скопировать или переместить элемент в неправильном форсированном режиме: %1</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation>Невозможно сохранить трансфер: %1</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation>Проблема при чтении или размер файла нулевой</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation>Неправильный заголовок: &quot;%1&quot;</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation>Некоторые ошибки были обнаружены в ходе разбора линия</translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <source>Unable to open the transfer list: %1</source>
- <translation>Не удается открыть трансфер: %1</translation>
- </message>
-</context>
-<context>
- <name>MkPath</name>
- <message>
- <location filename="../../MkPath.cpp" line="62"/>
- <source>Unable to create the folder</source>
- <translation>Невозможно создать папку</translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation>Невозможно прочитать исходный файл: </translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <source>File truncated during the read, possible data change</source>
- <translation>Файл усечены во время чтения, возможность изменения данных</translation>
- </message>
-</context>
-<context>
- <name>RenamingRules</name>
- <message>
- <location filename="../../RenamingRules.ui" line="26"/>
- <source>First renaming</source>
- <translation>Первое переименование</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation>%name% - копия</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Переменные: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; по оригинальному названию файла&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation>Второе переименование</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation>%name% - копия (%number%)</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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;Переменные: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; по оригинальному названию файла&lt;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; за дополнительный номер&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
- </message>
- <message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation>%1 - копия</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>
- </message>
-</context>
-<context>
- <name>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation>Не удается удалить папку</translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation>%1 - копия</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - копия (%2)</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation>Контрольные суммы не совпадают</translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation>Невозможно прочитать исходный файл: </translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation>Файл усечены во время чтения, возможность изменения данных</translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <source>The engine is forced to move, you can&apos;t copy with it</source>
- <translation>Двигатель вынуждены покинуть свои дома, вы не можете скопировать с ним</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <source>The engine is forced to copy, you can&apos;t move with it</source>
- <translation>Двигатель вынужден копии, вы не можете двигаться вместе с ним</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation>Режим был вынужден ранее, это внутренняя ошибка, пожалуйста, сообщите об этом</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation>Опции ошибке</translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation>Параметры двигателя не загружается, не может получить доступ к фильтрам</translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on file</source>
- <translation>Ошибка в файле</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="20"/>
- <source>Error</source>
- <translation>ошибка</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="56"/>
- <source>Size</source>
- <translation>размер</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation>модифицированный</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation>имя файла</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation>Всегда делайте это действие</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation>Положить в нижней</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation>Повторить</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation>пропускать</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation>отменить</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation>Ошибка в папку</translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</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="153"/>
- <source>Size</source>
- <translation>размер</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation>модифицированный</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation>имя файла</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation>Предложить новое имя</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation>Всегда делайте это действие</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation>переименовать</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation>переписывать</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation>пропускать</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation>отменить</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation>Заменить, если новее</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation>Заменить, если не ту же дату модификации</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation>%1 - копия</translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - копия (%2)</translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation>Эти файлы имеют тот же файл</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation>Источник и назначение такое же,</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation>размер</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation>модифицированный</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation>имя файла</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation>Предложить новое имя</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation>Всегда делайте это действие</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation>переименовать</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation>пропускать</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation>отменить</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation>%1 - копия</translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - копия (%2)</translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation>Это папки той же папке,</translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation>Источник и назначение такое же,</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation>модифицированный</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation>имя папки</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation>Предложить новое имя</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation>Всегда делайте это действие</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation>переименовать</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation>слияние</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation>пропускать</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation>отменить</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation>Папка уже существует</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation>%1 - копия</translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - копия (%2)</translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation>Передача файлов прав</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation>Держите дату файла</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation>размер блока</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation>KB</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation>Авто начать передачу</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation>Когда папка ошибка</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation>просить</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation>пропускать</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation>слияние</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation>переименовать</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation>Убедитесь, что папка существует</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation>Когда папка столкновения</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation>Контрольная</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation>Только после того, как ошибка</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation>Игнорировать, если невозможно</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation>У контрольной суммы</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation>Включить OS буфер</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation>Фильтры</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation>Переименование правила</translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation>ОС буфер, только если меньше</translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation>%1 - копия</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - копия (%2)</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation>Папка не существует</translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation>Папки не читается</translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/th/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/th/translation.ts
deleted file mode 100644
index 338cb72..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/th/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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="95"/>
- <source>All string need match</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="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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 filter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</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="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <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="26"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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.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>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on 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="56"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</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="153"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation type="unfinished"></translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/tr/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/tr/translation.ts
deleted file mode 100644
index 338cb72..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/tr/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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="95"/>
- <source>All string need match</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="108"/>
- <source>The regex is valid</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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 filter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</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="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <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="26"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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.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>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on 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="56"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</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="153"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation type="unfinished"></translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/Languages/zh/translation.ts b/plugins-alternative/CopyEngine/Rsync/Languages/zh/translation.ts
deleted file mode 100644
index 9c2e5d6..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Languages/zh/translation.ts
+++ /dev/null
@@ -1,806 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS>
-<TS version="2.0">
-<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="28"/>
- <location filename="../../AvancedQFile.cpp" line="59"/>
- <location filename="../../AvancedQFile.cpp" line="90"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="42"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="73"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>Factory</name>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../factory.cpp" line="369"/>
- <location filename="../../factory.cpp" line="406"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</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>All string need match</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>
- <message>
- <location filename="../../FilterRules.ui" line="125"/>
- <source>The test string match with the regex</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 filter</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.ui" line="93"/>
- <source>Inclusion filter</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="92"/>
- <location filename="../../Filters.cpp" line="130"/>
- <source>Raw text</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="95"/>
- <location filename="../../Filters.cpp" line="133"/>
- <source>Simplified regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="98"/>
- <location filename="../../Filters.cpp" line="136"/>
- <source>Perl&apos;s regex</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="106"/>
- <location filename="../../Filters.cpp" line="144"/>
- <source>Only on file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="109"/>
- <location filename="../../Filters.cpp" line="147"/>
- <source>Only on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../Filters.cpp" line="115"/>
- <location filename="../../Filters.cpp" line="153"/>
- <location filename="../../Filters.cpp" line="215"/>
- <location filename="../../Filters.cpp" line="254"/>
- <source>Full match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ListThread</name>
- <message>
- <location filename="../../ListThread.cpp" line="1192"/>
- <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="1199"/>
- <source>Unable to save the transfer list: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1215"/>
- <source>Problem at the reading, or file size is null</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1222"/>
- <source>Wrong header: &quot;%1&quot;</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1231"/>
- <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="1240"/>
- <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="1246"/>
- <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="1293"/>
- <source>Some error have been found during the line parsing</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ListThread.cpp" line="1299"/>
- <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="62"/>
- <source>Unable to create the folder</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>ReadThread</name>
- <message>
- <location filename="../../ReadThread.cpp" line="154"/>
- <location filename="../../ReadThread.cpp" line="316"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="193"/>
- <location filename="../../ReadThread.cpp" line="373"/>
- <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="26"/>
- <source>First renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="32"/>
- <source>%name% - copy</source>
- <extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="39"/>
- <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;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <extracomment> should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="49"/>
- <source>Second renaming</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="55"/>
- <source>%name% - copy (%number%)</source>
- <extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RenamingRules.ui" line="62"/>
- <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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&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.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>RmPath</name>
- <message>
- <location filename="../../RmPath.cpp" line="61"/>
- <location filename="../../RmPath.cpp" line="75"/>
- <source>Unable to remove the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../RmPath.cpp" line="85"/>
- <source>Unable to remove the file</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>TransferThread</name>
- <message>
- <location filename="../../TransferThread.cpp" line="312"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="322"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="627"/>
- <source>The checksums not match</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>WriteThread</name>
- <message>
- <location filename="../../WriteThread.cpp" line="443"/>
- <source>Unable to read the source file: </source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../WriteThread.cpp" line="481"/>
- <source>File truncated during the read, possible data change</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>copyEngine</name>
- <message>
- <location filename="../../copyEngine.cpp" line="260"/>
- <location filename="../../copyEngine.cpp" line="278"/>
- <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="289"/>
- <location filename="../../copyEngine.cpp" line="307"/>
- <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="521"/>
- <source>The mode have been forced previously, it&apos;s internal error, please report it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngine.cpp" line="795"/>
- <source>Options engine is not loaded, can&apos;t access to the filters</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileErrorDialog</name>
- <message>
- <location filename="../../fileErrorDialog.ui" line="14"/>
- <source>Error on 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="56"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="73"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="90"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="136"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="156"/>
- <source>Put to bottom</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="163"/>
- <source>Retry</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="170"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.ui" line="177"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="29"/>
- <source>Error on folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileErrorDialog.cpp" line="32"/>
- <source>Folder name</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="153"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="99"/>
- <location filename="../../fileExistsDialog.ui" line="170"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="116"/>
- <location filename="../../fileExistsDialog.ui" line="187"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="243"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="254"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="274"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="281"/>
- <source>&amp;Overwrite</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="291"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="298"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="307"/>
- <source>Overwrite if newer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.ui" line="312"/>
- <source>Overwrite if not same modification date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="102"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileExistsDialog.cpp" line="112"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>fileIsSameDialog</name>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="14"/>
- <source>This files are the same file</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="20"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="47"/>
- <source>Size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="64"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="81"/>
- <source>File name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="137"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="148"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="168"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="175"/>
- <source>&amp;Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.ui" line="182"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="87"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../fileIsSameDialog.cpp" line="97"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>folderExistsDialog</name>
- <message>
- <location filename="../../folderExistsDialog.ui" line="14"/>
- <source>This folders are the same folder</source>
- <translation type="unfinished"></translation>
- </message>
- <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="62"/>
- <source>The source and destination is same</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="89"/>
- <location filename="../../folderExistsDialog.ui" line="140"/>
- <source>Modified</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="106"/>
- <location filename="../../folderExistsDialog.ui" line="150"/>
- <source>Folder name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="200"/>
- <source>Suggest new &amp;name</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="211"/>
- <source>&amp;Always do this action</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="218"/>
- <source>&amp;Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="225"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="232"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.ui" line="239"/>
- <source>&amp;Cancel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="29"/>
- <source>Folder already exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="85"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../folderExistsDialog.cpp" line="95"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>options</name>
- <message>
- <location filename="../../options.ui" line="23"/>
- <source>Transfer the file rights</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="33"/>
- <source>Keep the file date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="128"/>
- <source>Checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="144"/>
- <source>Only after error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="154"/>
- <source>Ignore if impossible</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="171"/>
- <source>Do checksum</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="181"/>
- <source>Enable OS buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="191"/>
- <source>OS buffer only if smaller than</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="214"/>
- <source>Block size</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="234"/>
- <source>Filters</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="241"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="255"/>
- <source>Rsync (only in copy mode)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="43"/>
- <location filename="../../options.ui" line="198"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="56"/>
- <source>Auto start the transfer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="66"/>
- <source>When folder error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="74"/>
- <location filename="../../options.ui" line="95"/>
- <source>Ask</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="79"/>
- <location filename="../../options.ui" line="105"/>
- <source>Skip</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="100"/>
- <source>Merge</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="110"/>
- <source>Rename</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="118"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../options.ui" line="87"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
- <name>scanFileOrFolder</name>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="219"/>
- <location filename="../../scanFileOrFolder.cpp" line="283"/>
- <source>%1 - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="229"/>
- <location filename="../../scanFileOrFolder.cpp" line="293"/>
- <source>%1 - copy (%2)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="327"/>
- <source>The folder not exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../scanFileOrFolder.cpp" line="329"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-</TS>
diff --git a/plugins-alternative/CopyEngine/Rsync/ListThread.cpp b/plugins-alternative/CopyEngine/Rsync/ListThread.cpp
deleted file mode 100755
index e49cea5..0000000
--- a/plugins-alternative/CopyEngine/Rsync/ListThread.cpp
+++ /dev/null
@@ -1,1720 +0,0 @@
-#include "ListThread.h"
-
-ListThread::ListThread(FacilityInterface * facilityInterface)
-{
- qRegisterMetaType<DebugLevel>("DebugLevel");
- qRegisterMetaType<ItemOfCopyList>("ItemOfCopyList");
- qRegisterMetaType<QFileInfo>("QFileInfo");
- qRegisterMetaType<CopyMode>("CopyMode");
- qRegisterMetaType<QList<Filters_rules> >("QList<Filters_rules>");
- qRegisterMetaType<TransferStat>("TransferStat");
-
- moveToThread(this);
- start(HighPriority);
- this->facilityInterface = facilityInterface;
- putInPause = false;
- sourceDrive = "";
- sourceDriveMultiple = false;
- destinationDrive = "";
- destinationDriveMultiple = false;
- stopIt = false;
- bytesToTransfer = 0;
- bytesTransfered = 0;
- idIncrementNumber = 1;
- actualRealByteTransfered = 0;
- preOperationNumber = 0;
- numberOfTranferRuning = 0;
- numberOfTransferIntoToDoList = 0;
- numberOfInodeOperation = 0;
- maxSpeed = 0;
- doRightTransfer = false;
- rsync = false;
- keepDate = false;
- blockSize = 1024;
- osBufferLimit = 512;
- alwaysDoThisActionForFileExists = FileExists_NotSet;
- doChecksum = false;
- checksumIgnoreIfImpossible = true;
- checksumOnlyOnError = true;
- osBuffer = false;
- osBufferLimited = false;
- forcedMode = false;
-
- #if ! defined (Q_CC_GNU)
- ui->keepDate->setEnabled(false);
- ui->keepDate->setToolTip("Not supported with this compiler");
- #endif
- #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
- connect(&timerUpdateDebugDialog,SIGNAL(timeout()),this,SLOT(timedUpdateDebugDialog()));
- timerUpdateDebugDialog.start(ULTRACOPIER_PLUGIN_DEBUG_WINDOW_TIMER);
- #endif
- connect(this, SIGNAL(tryCancel()), this,SLOT(cancel()), Qt::QueuedConnection);
- connect(this, SIGNAL(askNewTransferThread()), this,SLOT(createTransferThread()), Qt::QueuedConnection);
- connect(&mkPathQueue, SIGNAL(firstFolderFinish()), this,SLOT(mkPathFirstFolderFinish()), Qt::QueuedConnection);
- connect(&rmPathQueue, SIGNAL(firstFolderFinish()), this,SLOT(rmPathFirstFolderFinish()), Qt::QueuedConnection);
- connect(&mkPathQueue, SIGNAL(errorOnFolder(QFileInfo,QString)), this,SIGNAL(mkPathErrorOnFolder(QFileInfo,QString)), Qt::QueuedConnection);
- connect(&rmPathQueue, SIGNAL(errorOnFolder(QFileInfo,QString)), this,SIGNAL(rmPathErrorOnFolder(QFileInfo,QString)), Qt::QueuedConnection);
- connect(this, SIGNAL(send_syncTransferList()), this,SLOT(syncTransferList_internal()), Qt::QueuedConnection);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- connect(&mkPathQueue, SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)), this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)), Qt::QueuedConnection);
- connect(&rmPathQueue, SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)), this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)), Qt::QueuedConnection);
- #endif // ULTRACOPIER_PLUGIN_DEBUG
-
- emit askNewTransferThread();
- mkpathTransfer.release();
-}
-
-ListThread::~ListThread()
-{
- emit tryCancel();
- waitCancel.acquire();
- quit();
- wait();
-}
-
-//transfer is finished
-void ListThread::transferInodeIsClosed()
-{
- numberOfInodeOperation--;
- temp_transfer_thread=qobject_cast<TransferThread *>(QObject::sender());
- if(temp_transfer_thread==NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("transfer thread not located!"));
- return;
- }
- isFound=false;
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- int countLocalParse=0;
- #endif
- if(temp_transfer_thread->getStat()!=TransferStat_Idle)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("transfer thread not idle!"));
- return;
- }
- int_for_internal_loop=0;
- loop_size=actionToDoListTransfer.size();
- while(int_for_internal_loop<loop_size)
- {
- if(actionToDoListTransfer.at(int_for_internal_loop).id==temp_transfer_thread->transferId)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("[%1] have finish, put at idle; for id: %2").arg(int_for_internal_loop).arg(temp_transfer_thread->transferId));
- returnActionOnCopyList newAction;
- newAction.type=RemoveItem;
- newAction.addAction.id=temp_transfer_thread->transferId;
- newAction.userAction.position=int_for_internal_loop;
- actionDone << newAction;
- /// \todo check if item is at the right thread
- actionToDoListTransfer.removeAt(int_for_internal_loop);
- if(actionToDoListTransfer.size()==0 && actionToDoListInode.size()==0 && actionToDoListInode_afterTheTransfer.size()==0)
- updateTheStatus();
-
- temp_transfer_thread->transferId=0;
- temp_transfer_thread->transferSize=0;
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- countLocalParse++;
- #endif
- isFound=true;
- //emit newActionOnList();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"numberOfTranferRuning: "+QString::number(numberOfTranferRuning));
- if(actionToDoListTransfer.size()==0)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"numberOfTranferRuning==0");
- actionToDoListInode << actionToDoListInode_afterTheTransfer;
- actionToDoListInode_afterTheTransfer.clear();
- doNewActions_inode_manipulation();
- }
- break;
- }
- int_for_internal_loop++;
- }
- if(!isFound)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("unable to found item into the todo list, id: %1, index: %2").arg(temp_transfer_thread->transferId).arg(int_for_loop));
- temp_transfer_thread->transferId=0;
- temp_transfer_thread->transferSize=0;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("countLocalParse: %1, actionToDoList.size(): %2").arg(countLocalParse).arg(actionToDoListTransfer.size()));
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- if(countLocalParse!=1)
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("countLocalParse != 1"));
- #endif
- doNewActions_inode_manipulation();
-}
-
-//transfer is finished
-void ListThread::transferIsFinished()
-{
- temp_transfer_thread=qobject_cast<TransferThread *>(QObject::sender());
- if(temp_transfer_thread==NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("transfer thread not located!"));
- return;
- }
-
- //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;
- bytesToTransfer+=oversize;
- bytesTransfered+=oversize;
- }
- bytesTransfered+=temp_transfer_thread->transferSize;
-
-// emit newTransferStop(temp_transfer_thread->transferId);
- numberOfTranferRuning--;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start transferIsFinished(), numberOfTranferRuning: "+QString::number(numberOfTranferRuning));
- doNewActions_start_transfer();
-}
-
-/** \brief put the current file at bottom in case of error
-\note ONLY IN CASE OF ERROR */
-void ListThread::transferPutAtBottom()
-{
- TransferThread *transfer=qobject_cast<TransferThread *>(QObject::sender());
- if(transfer==NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("transfer thread not located!"));
- return;
- }
- transfer->skip();
- bool isFound=false;
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- int countLocalParse=0;
- #endif
- int indexAction=0;
- while(indexAction<actionToDoListTransfer.size())
- {
- if(actionToDoListTransfer.at(indexAction).id==transfer->transferId)
- {
- //push for interface at the end
- returnActionOnCopyList newAction;
- newAction.type=MoveItem;
- newAction.addAction.id=transfer->transferId;
- newAction.userAction.position=actionToDoListTransfer.size()-1;
- actionDone << newAction;
- //do the wait stat
- actionToDoListTransfer[indexAction].isRunning=false;
- //move at the end
- actionToDoListTransfer.move(indexAction,actionToDoListTransfer.size()-1);
- //reset the thread list stat
- transfer->transferId=0;
- transfer->transferSize=0;
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- countLocalParse++;
- #endif
- isFound=true;
- break;
- }
- indexAction++;
- }
- if(!isFound)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("unable to found item into the todo list, id: %1, index: %2").arg(transfer->transferId));
- transfer->transferId=0;
- transfer->transferSize=0;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("countLocalParse: %1").arg(countLocalParse));
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- if(countLocalParse!=1)
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("countLocalParse != 1"));
- #endif
-}
-
-//set the copy info and options before runing
-void ListThread::setRightTransfer(const bool doRightTransfer)
-{
- this->doRightTransfer=doRightTransfer;
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- transferThreadList.at(index)->setRightTransfer(doRightTransfer);
- index++;
- }
-}
-
-//set keep date
-void ListThread::setKeepDate(const bool keepDate)
-{
- this->keepDate=keepDate;
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- transferThreadList.at(index)->setKeepDate(keepDate);
- index++;
- }
-}
-
-//set block size in KB
-void ListThread::setBlockSize(const int blockSize)
-{
- this->blockSize=blockSize;
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- transferThreadList.at(index)->setBlockSize(blockSize);
- index++;
- }
-}
-
-//set auto start
-void ListThread::setAutoStart(const bool autoStart)
-{
- this->autoStart=autoStart;
-}
-
-/// \brief set rsync
-void ListThread::setRsync(const bool rsync)
-{
- this->rsync=rsync;
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- transferThreadList.at(index)->setRsync(rsync);
- index++;
- }
- for(int i=0;i<scanFileOrFolderThreadsPool.size();i++)
- scanFileOrFolderThreadsPool.at(i)->setRsync(rsync);
-}
-
-//set check destination folder
-void ListThread::setCheckDestinationFolderExists(const bool checkDestinationFolderExists)
-{
- this->checkDestinationFolderExists=checkDestinationFolderExists;
- for(int i=0;i<scanFileOrFolderThreadsPool.size();i++)
- scanFileOrFolderThreadsPool.at(i)->setCheckDestinationFolderExists(checkDestinationFolderExists && alwaysDoThisActionForFolderExists!=FolderExists_Merge);
-}
-
-void ListThread::fileTransfer(const QFileInfo &sourceFileInfo,const QFileInfo &destinationFileInfo,const CopyMode &mode)
-{
- addToTransfer(sourceFileInfo,destinationFileInfo,mode);
-}
-
-// -> add thread safe, by Qt::BlockingQueuedConnection
-bool ListThread::haveSameSource(QStringList sources)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- if(sourceDriveMultiple)
- return false;
- if(sourceDrive.isEmpty())
- return true;
- int index=0;
- while(index<sources.size())
- {
-// if(threadOfTheTransfer.getDrive(sources.at(index))!=sourceDrive)
-// return false;
- index++;
- }
- return true;
-}
-
-// -> add thread safe, by Qt::BlockingQueuedConnection
-bool ListThread::haveSameDestination(QString destination)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- if(destinationDriveMultiple)
- return false;
- if(destinationDrive.isEmpty())
- return true;
- int index=0;
- while(index<destination.size())
- {
-// if(threadOfTheTransfer.getDrive(destination.at(index))!=destinationDrive)
-// return false;
- index++;
- }
- return true;
-}
-
-scanFileOrFolder * ListThread::newScanThread(CopyMode mode)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start with: "+QString::number(mode));
-
- //create new thread because is auto-detroyed
- scanFileOrFolderThreadsPool << new scanFileOrFolder(mode);
- connect(scanFileOrFolderThreadsPool.last(),SIGNAL(finishedTheListing()), this,SLOT(scanThreadHaveFinish()), Qt::QueuedConnection);
- connect(scanFileOrFolderThreadsPool.last(),SIGNAL(fileTransfer(QFileInfo,QFileInfo,CopyMode)), this,SLOT(fileTransfer(QFileInfo,QFileInfo,CopyMode)), Qt::QueuedConnection);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- connect(scanFileOrFolderThreadsPool.last(),SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)), this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)));
- #endif
- connect(scanFileOrFolderThreadsPool.last(),SIGNAL(newFolderListing(QString)), this,SIGNAL(newFolderListing(QString)));
- connect(scanFileOrFolderThreadsPool.last(),SIGNAL(addToRmPath(QString,int)), this,SLOT(addToRmPath(QString,int)), Qt::QueuedConnection);
- connect(scanFileOrFolderThreadsPool.last(),SIGNAL(addToRmForRsync(QString)), this,SLOT(addToRmForRsync(QString)), Qt::QueuedConnection);
- connect(scanFileOrFolderThreadsPool.last(),SIGNAL(addToMkPath(QString)), this,SLOT(addToMkPath(QString)), Qt::QueuedConnection);
-
- connect(scanFileOrFolderThreadsPool.last(),SIGNAL(errorOnFolder(QFileInfo,QString)), this,SLOT(errorOnFolder(QFileInfo,QString)), Qt::QueuedConnection);
- connect(scanFileOrFolderThreadsPool.last(),SIGNAL(folderAlreadyExists(QFileInfo,QFileInfo,bool)), this,SLOT(folderAlreadyExists(QFileInfo,QFileInfo,bool)), Qt::QueuedConnection);
-
- scanFileOrFolderThreadsPool.last()->setRsync(rsync);
- scanFileOrFolderThreadsPool.last()->setFilters(include,exclude);
- scanFileOrFolderThreadsPool.last()->setCheckDestinationFolderExists(checkDestinationFolderExists && alwaysDoThisActionForFolderExists!=FolderExists_Merge);
- if(scanFileOrFolderThreadsPool.size()==1)
- updateTheStatus();
- scanFileOrFolderThreadsPool.last()->setRenamingRules(firstRenamingRule,otherRenamingRule);
- return scanFileOrFolderThreadsPool.last();
-}
-
-void ListThread::scanThreadHaveFinish(bool skipFirstRemove)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"listing thread have finish, skipFirstRemove: "+QString::number(skipFirstRemove));
- if(!skipFirstRemove)
- {
- scanFileOrFolder * senderThread = qobject_cast<scanFileOrFolder *>(QObject::sender());
- if(senderThread==NULL)
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"sender pointer null (plugin copy engine)");
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start the next thread, scanFileOrFolderThreadsPool.size(): "+QString::number(scanFileOrFolderThreadsPool.size()));
- delete senderThread;
- scanFileOrFolderThreadsPool.removeOne(senderThread);
- if(scanFileOrFolderThreadsPool.size()==0)
- updateTheStatus();
- }
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start the next thread, scanFileOrFolderThreadsPool.size(): "+QString::number(scanFileOrFolderThreadsPool.size()));
- if(scanFileOrFolderThreadsPool.size()>0)
- {
- //then start the next listing threads
- if(scanFileOrFolderThreadsPool.first()->isFinished())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"Start listing thread");
- scanFileOrFolderThreadsPool.first()->start();
- }
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"The listing thread is already running");
- }
- else
- {
- if(autoStart)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"Auto start the copy");
- startGeneralTransfer();
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"Put the copy engine in pause");
- putInPause=true;
- emit isInPause(true);
- }
- }
-}
-
-void ListThread::startGeneralTransfer()
-{
- doNewActions_inode_manipulation();
-}
-
-// -> add thread safe, by Qt::BlockingQueuedConnection
-bool ListThread::newCopy(QStringList sources,QString destination)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start: "+sources.join(";")+", destination: "+destination);
- scanFileOrFolder * scanFileOrFolderThread = newScanThread(Copy);
- if(scanFileOrFolderThread==NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"unable to get new thread");
- return false;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start the listing");
- scanFileOrFolderThread->addToList(sources,destination);
- scanThreadHaveFinish(true);
- return true;
-}
-
-// -> add thread safe, by Qt::BlockingQueuedConnection
-bool ListThread::newMove(QStringList sources,QString destination)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- scanFileOrFolder * scanFileOrFolderThread = newScanThread(Move);
- if(scanFileOrFolderThread==NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"unable to get new thread");
- return false;
- }
- scanFileOrFolderThread->addToList(sources,destination);
- scanThreadHaveFinish(true);
-/* int index=0;
- while(index<sources.size() && !sourceDriveMultiple)
- {
- QString tempDrive=threadOfTheTransfer.getDrive(sources.at(index));
- if(sourceDrive=="")
- sourceDrive=tempDrive;
- if(tempDrive!=sourceDrive)
- sourceDriveMultiple=true;
- index++;
- }*/
-/* QString tempDrive=threadOfTheTransfer.getDrive(destination);
- if(!destinationDriveMultiple)
- {
- if(tempDrive=="")
- destinationDrive=tempDrive;
- if(tempDrive!=destinationDrive)
- destinationDriveMultiple=true;
- }*/
- return true;
-}
-
-void ListThread::setDrive(QStringList drives)
-{
- this->drives=drives;
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- transferThreadList.at(index)->setDrive(drives);
- index++;
- }
-}
-
-void ListThread::setCollisionAction(FileExistsAction alwaysDoThisActionForFileExists)
-{
- this->alwaysDoThisActionForFileExists=alwaysDoThisActionForFileExists;
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- transferThreadList.at(index)->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists);
- index++;
- }
-}
-
-/** \brief to sync the transfer list
- * Used when the interface is changed, useful to minimize the memory size */
-void ListThread::syncTransferList()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- emit send_syncTransferList();
-}
-
-//set the folder local colision
-void ListThread::setFolderColision(FolderExistsAction alwaysDoThisActionForFolderExists)
-{
- this->alwaysDoThisActionForFolderExists=alwaysDoThisActionForFolderExists;
-}
-
-bool ListThread::getReturnBoolToCopyEngine()
-{
- return returnBoolToCopyEngine;
-}
-
-QPair<quint64,quint64> ListThread::getReturnPairQuint64ToCopyEngine()
-{
- return returnPairQuint64ToCopyEngine;
-}
-
-ItemOfCopyList ListThread::getReturnItemOfCopyListToCopyEngine()
-{
- return returnItemOfCopyListToCopyEngine;
-}
-
-void ListThread::set_doChecksum(bool doChecksum)
-{
- this->doChecksum=doChecksum;
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- transferThreadList.at(index)->set_doChecksum(doChecksum);
- index++;
- }
-}
-
-void ListThread::set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible)
-{
- this->checksumIgnoreIfImpossible=checksumIgnoreIfImpossible;
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- transferThreadList.at(index)->set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible);
- index++;
- }
-}
-
-void ListThread::set_checksumOnlyOnError(bool checksumOnlyOnError)
-{
- this->checksumOnlyOnError=checksumOnlyOnError;
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- transferThreadList.at(index)->set_checksumOnlyOnError(checksumOnlyOnError);
- index++;
- }
-}
-
-void ListThread::set_osBuffer(bool osBuffer)
-{
- this->osBuffer=osBuffer;
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- transferThreadList.at(index)->set_osBuffer(osBuffer);
- index++;
- }
-}
-
-void ListThread::set_osBufferLimited(bool osBufferLimited)
-{
- this->osBufferLimited=osBufferLimited;
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- transferThreadList.at(index)->set_osBufferLimited(osBufferLimited);
- index++;
- }
-}
-
-void ListThread::realByteTransfered()
-{
- quint64 totalRealByteTransfered=0;
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- totalRealByteTransfered+=transferThreadList.at(index)->realByteTransfered();
- index++;
- }
- emit send_realBytesTransfered(totalRealByteTransfered);
-}
-
-void ListThread::pause()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- if(putInPause)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"Seam already in pause!");
- return;
- }
- putInPause=true;
- int index=0;
- 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(DebugLevel_Notice,"start");
- if(!putInPause)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"Seam already resumed!");
- return;
- }
- putInPause=false;
- startGeneralTransfer();
- doNewActions_start_transfer();
- int index=0;
- 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 quint64 &id)
-{
- skipInternal(id);
-// emit newActionOnList();
-}
-
-bool ListThread::skipInternal(const quint64 &id)
-{
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- if(transferThreadList.at(index)->transferId==id)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("skip one transfer: %1").arg(id));
- transferThreadList.at(index)->skip();
- return true;
- }
- index++;
- }
- int_for_internal_loop=0;
- loop_size=actionToDoListTransfer.size();
- while(int_for_internal_loop<loop_size)
- {
- if(actionToDoListTransfer.at(int_for_internal_loop).id==id)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("[%1] remove at not running, for id: %2").arg(int_for_internal_loop).arg(id));
- returnActionOnCopyList newAction;
- newAction.type=RemoveItem;
- newAction.addAction.id=id;
- newAction.userAction.position=int_for_internal_loop;
- actionDone << newAction;
- actionToDoListTransfer.removeAt(int_for_internal_loop);
- if(actionToDoListTransfer.size()==0 && actionToDoListInode.size()==0 && actionToDoListInode_afterTheTransfer.size()==0)
- updateTheStatus();
- return true;
- }
- int_for_internal_loop++;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("skip transfer not found: %1").arg(id));
- return false;
-}
-
-void ListThread::cancel()
-{
- if(stopIt)
- {
- waitCancel.release();
- return;
- }
- stopIt=true;
- int index=0;
- loop_size=transferThreadList.size();
- while(index<loop_size)
- {
- transferThreadList.at(index)->stop();
- delete transferThreadList.at(index);//->deleteLayer();
- transferThreadList[index]=NULL;
- index++;
- }
- index=0;
- loop_size=scanFileOrFolderThreadsPool.size();
- while(index<loop_size)
- {
- scanFileOrFolderThreadsPool.at(index)->stop();
- delete scanFileOrFolderThreadsPool.at(index);//->deleteLayer();
- scanFileOrFolderThreadsPool[index]=NULL;
- index++;
- }
- quit();
- waitCancel.release();
- emit canBeDeleted();
-}
-
-//speed limitation
-qint64 ListThread::getSpeedLimitation()
-{
- return maxSpeed;
-}
-
-bool ListThread::setSpeedLimitation(const qint64 &speedLimitation)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"maxSpeed: "+QString::number(speedLimitation));
- maxSpeed=speedLimitation;
- int_for_loop=0;
- loop_size=transferThreadList.size();
- while(int_for_loop<loop_size)
- {
- transferThreadList.at(int_for_loop)->setMaxSpeed(speedLimitation/ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER);
- int_for_loop++;
- }
- return true;
-}
-
-void ListThread::updateTheStatus()
-{
- /*if(threadOfTheTransfer.haveContent())
- copy=true;*/
- updateTheStatus_listing=scanFileOrFolderThreadsPool.size()>0;
- updateTheStatus_copying=actionToDoListTransfer.size()>0 || actionToDoListInode.size()>0 || actionToDoListInode_afterTheTransfer.size()>0;
- if(updateTheStatus_copying && updateTheStatus_listing)
- updateTheStatus_action_in_progress=CopyingAndListing;
- else if(updateTheStatus_listing)
- updateTheStatus_action_in_progress=Listing;
- else if(updateTheStatus_copying)
- updateTheStatus_action_in_progress=Copying;
- else
- updateTheStatus_action_in_progress=Idle;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"emit actionInProgess("+QString::number(updateTheStatus_action_in_progress)+")");
- emit actionInProgess(updateTheStatus_action_in_progress);
- if(updateTheStatus_action_in_progress==Idle)
- sendActionDone();
-}
-
-//set data local to the thread
-void ListThread::setAlwaysFileExistsAction(FileExistsAction alwaysDoThisActionForFileExists)
-{
- this->alwaysDoThisActionForFileExists=alwaysDoThisActionForFileExists;
- int_for_loop=0;
- loop_size=transferThreadList.size();
- while(int_for_loop<loop_size)
- {
- transferThreadList.at(int_for_loop)->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists);
- int_for_loop++;
- }
-}
-
-//mk path to do
-quint64 ListThread::addToMkPath(const QString& folder)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"folder: "+folder);
- actionToDoInode temp;
- temp.type = ActionType_MkPath;
- temp.id = generateIdNumber();
- temp.folder.setFile(folder);
- temp.isRunning = false;
- actionToDoListInode << temp;
- return temp.id;
-}
-
-//add rm path to do
-void ListThread::addToRmPath(const QString& folder,const int& inodeToRemove)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"folder: "+folder+",inodeToRemove: "+QString::number(inodeToRemove));
- actionToDoInode temp;
- temp.type = ActionType_RmPath;
- temp.id = generateIdNumber();
- temp.size = inodeToRemove;
- temp.folder.setFile(folder);
- temp.isRunning = false;
- if(inodeToRemove==0)
- actionToDoListInode << temp;
- else
- actionToDoListInode_afterTheTransfer << temp;
-}
-
-//rsync rm
-void ListThread::addToRmForRsync(const QString& inode)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"inode: "+inode);
- actionToDoInode temp;
- temp.type = ActionType_RmSync;
- temp.id = generateIdNumber();
- temp.folder.setFile(inode);
- temp.isRunning = false;
- actionToDoListInode << temp;
-}
-
-//send action done
-void ListThread::sendActionDone()
-{
- if(actionDone.size()>0)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- emit newActionOnList(actionDone);
- actionDone.clear();
- }
-}
-
-//send progression
-void ListThread::sendProgression()
-{
- if(actionToDoListTransfer.size()==0)
- return;
- oversize=0;
- currentProgression=0;
- int_for_loop=0;
- loop_size=transferThreadList.size();
- while(int_for_loop<loop_size)
- {
- temp_transfer_thread=transferThreadList.at(int_for_loop);
- if(temp_transfer_thread->getStat()==TransferStat_Transfer || temp_transfer_thread->getStat()==TransferStat_Checksum)
- {
- 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;
- if(temp_transfer_thread->getStat()==TransferStat_Checksum)
- tempItem.current=temp_transfer_thread->realByteTransfered();
- else
- tempItem.current=copiedSize;
- tempItem.id=temp_transfer_thread->transferId;
- tempItem.total=totalSize;
- progressionList << tempItem;
-
- //add the oversize to the general progression
- oversize+=localOverSize;
- }
- int_for_loop++;
- }
- emit pushFileProgression(progressionList);
- progressionList.clear();
- emit pushGeneralProgression(bytesTransfered+currentProgression,bytesToTransfer+oversize);
- realByteTransfered();
-}
-
-//send the progression, after full reset of the interface (then all is empty)
-void ListThread::syncTransferList_internal()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- emit syncReady();
- actionDone.clear();
- //do list operation
- TransferThread *transferThread;
- loop_size=actionToDoListTransfer.size();
- loop_sub_size=transferThreadList.size();
- //this loop to have at max ULTRACOPIER_PLUGIN_MAXPARALLELINODEOPT*ULTRACOPIER_PLUGIN_MAXPARALLELINODEOPT, not ULTRACOPIER_PLUGIN_MAXPARALLELINODEOPT*transferThreadList.size()
- for(int_for_loop=0; int_for_loop<loop_size; ++int_for_loop) {
- const actionToDoTransfer &item=actionToDoListTransfer.at(int_for_loop);
- returnActionOnCopyList newAction;
- newAction.type = PreOperation;
- newAction.addAction.id = item.id;
- newAction.addAction.sourceFullPath = item.source.absoluteFilePath();
- newAction.addAction.sourceFileName = item.source.fileName();
- newAction.addAction.destinationFullPath = item.destination.absoluteFilePath();
- newAction.addAction.destinationFileName = item.destination.fileName();
- newAction.addAction.size = item.size;
- newAction.addAction.mode = item.mode;
- actionDone << newAction;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("id: %1, size: %2, name: %3, size2: %4").arg(item.id).arg(item.size).arg(item.source.absoluteFilePath()).arg(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);
- returnActionOnCopyList newAction;
- newAction.type = PreOperation;
- newAction.addAction.id = item.id;
- newAction.addAction.sourceFullPath = item.source.absoluteFilePath();
- newAction.addAction.sourceFileName = item.source.fileName();
- newAction.addAction.destinationFullPath = item.destination.absoluteFilePath();
- newAction.addAction.destinationFileName = item.destination.fileName();
- newAction.addAction.size = item.size;
- newAction.addAction.mode = item.mode;
- actionDone << newAction;
- if(transferThread->getStat()!=TransferStat_PreOperation)
- {
- returnActionOnCopyList newAction;
- switch(transferThread->getStat())
- {
- case TransferStat_Transfer:
- newAction.type=Transfer;
- break;
- case TransferStat_PostTransfer:
- newAction.type=PostOperation;
- break;
- default:
- break;
- }
- newAction.addAction.id = item.id;
- actionDone << newAction;
- }
- }
- }
- }
-}
-
-//add file transfer to do
-quint64 ListThread::addToTransfer(const QFileInfo& source,const QFileInfo& destination,const CopyMode& mode)
-{
- //add to transfer list
- numberOfTransferIntoToDoList++;
- bytesToTransfer+= source.size();
- actionToDoTransfer temp;
- temp.id = generateIdNumber();
- temp.size = source.size();
- temp.source = source;
- temp.destination= destination;
- temp.mode = mode;
- temp.isRunning = false;
- actionToDoListTransfer << temp;
- //push the new transfer to interface
- returnActionOnCopyList newAction;
- newAction.type = AddingItem;
- newAction.addAction.id = temp.id;
- newAction.addAction.sourceFullPath = source.absoluteFilePath();
- newAction.addAction.sourceFileName = source.fileName();
- newAction.addAction.destinationFullPath = destination.absoluteFilePath();
- newAction.addAction.destinationFileName = destination.fileName();
- newAction.addAction.size = temp.size;
- newAction.addAction.mode = mode;
- actionDone << newAction;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("source: %1, destination: %2, add entry: %3, size: %4, size2: %5").arg(source.absoluteFilePath()).arg(destination.absoluteFilePath()).arg(temp.id).arg(temp.size).arg(newAction.addAction.size));
- return temp.id;
-}
-
-//generate id number
-quint64 ListThread::generateIdNumber()
-{
- idIncrementNumber++;
- if(idIncrementNumber>(((quint64)1024*1024)*1024*1024*2))
- idIncrementNumber=0;
- return idIncrementNumber;
-}
-
-//warning the first entry is accessible will copy
-void ListThread::removeItems(const QList<int> &ids)
-{
- for(int i=0;i<ids.size();i++)
- skipInternal(ids.at(i));
-// emit newActionOnList();
-}
-
-//put on top
-void ListThread::moveItemsOnTop(QList<int> ids)
-{
- if(actionToDoListTransfer.size()<=1)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"list size is empty");
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- //do list operation
- int indexToMove=0;
- loop_size=actionToDoListTransfer.size();
- for (int i=0; i<loop_size; ++i) {
- if(ids.contains(actionToDoListTransfer.at(i).id))
- {
- ids.removeOne(actionToDoListTransfer.at(i).id);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("move item ")+QString::number(i)+" to "+QString::number(indexToMove));
- returnActionOnCopyList newAction;
- newAction.type=MoveItem;
- newAction.addAction.id=actionToDoListTransfer.at(i).id;
- newAction.userAction.moveAt=indexToMove;
- newAction.userAction.position=i;
- actionDone << newAction;
- actionToDoListTransfer.move(i,indexToMove);
- indexToMove++;
- if(ids.size()==0)
- {
- //emit newActionOnList();
- return;
- }
- }
- }
-// emit newActionOnList();
-}
-
-//move up
-void ListThread::moveItemsUp(QList<int> ids)
-{
- if(actionToDoListTransfer.size()<=1)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"list size is empty");
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- //do list operation
- int lastGoodPositionExtern=0;
- int lastGoodPositionReal=0;
- bool haveGoodPosition=false;
- bool haveChanged=false;
- loop_size=actionToDoListTransfer.size();
- for (int i=0; i<loop_size; ++i) {
- if(ids.contains(actionToDoListTransfer.at(i).id))
- {
- if(haveGoodPosition)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("move item ")+QString::number(i)+" to "+QString::number(i-1));
- returnActionOnCopyList newAction;
- newAction.type=MoveItem;
- newAction.addAction.id=actionToDoListTransfer.at(i).id;
- newAction.userAction.moveAt=lastGoodPositionExtern;
- newAction.userAction.position=i;
- actionDone << newAction;
- actionToDoListTransfer.swap(i,lastGoodPositionReal);
- haveChanged=true;
- }
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("Try move up false, item ")+QString::number(i));
- ids.removeOne(actionToDoListTransfer.at(i).id);
- if(ids.size()==0)
- {
-/* if(haveChanged)
- emit newActionOnList();*/
- return;
- }
- }
- else
- {
- lastGoodPositionExtern++;
- lastGoodPositionReal=i;
- haveGoodPosition=true;
- }
- }
- //emit newActionOnList();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"stop");
-}
-
-//move down
-void ListThread::moveItemsDown(QList<int> ids)
-{
- if(actionToDoListTransfer.size()<=1)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"list size is empty");
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- //do list operation
- int lastGoodPositionExtern=numberOfTransferIntoToDoList;
- int lastGoodPositionReal=0;
- bool haveGoodPosition=false;
- bool haveChanged=false;
- for (int i=actionToDoListTransfer.size()-1; i>=0; --i) {
- if(ids.contains(actionToDoListTransfer.at(i).id))
- {
- if(haveGoodPosition)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("move item ")+QString::number(i)+" to "+QString::number(i+1));
- returnActionOnCopyList newAction;
- newAction.type=MoveItem;
- newAction.addAction.id=actionToDoListTransfer.at(i).id;
- newAction.userAction.moveAt=lastGoodPositionReal;
- newAction.userAction.position=i;
- actionDone << newAction;
- actionToDoListTransfer.swap(i,lastGoodPositionReal);
- haveChanged=true;
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("Try move up false, item ")+QString::number(i));
- }
- ids.removeOne(actionToDoListTransfer.at(i).id);
- if(ids.size()==0)
- {
-/* if(haveChanged)
- emit newActionOnList();*/
- return;
- }
- }
- else
- {
- lastGoodPositionExtern--;
- lastGoodPositionReal=i;
- haveGoodPosition=true;
- }
- }
- //emit newActionOnList();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"stop");
-}
-
-//put on bottom
-void ListThread::moveItemsOnBottom(QList<int> ids)
-{
- if(actionToDoListTransfer.size()<=1)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"list size is empty");
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- //do list operation
- int lastGoodPositionExtern=numberOfTransferIntoToDoList;
- int lastGoodPositionReal=actionToDoListTransfer.size()-1;
- for (int i=lastGoodPositionReal; i>=0; --i) {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("Check action on item ")+QString::number(i));
- if(ids.contains(actionToDoListTransfer.at(i).id))
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("move item ")+QString::number(i)+" to "+QString::number(lastGoodPositionReal));
- ids.removeOne(actionToDoListTransfer.at(i).id);
- returnActionOnCopyList newAction;
- newAction.type=MoveItem;
- newAction.addAction.id=actionToDoListTransfer.at(i).id;
- newAction.userAction.moveAt=lastGoodPositionExtern;
- newAction.userAction.position=i;
- actionDone << newAction;
- actionToDoListTransfer.move(i,lastGoodPositionReal);
- lastGoodPositionReal--;
- lastGoodPositionExtern--;
- if(ids.size()==0)
- {
-// emit newActionOnList();
- return;
- }
- }
- }
-// emit newActionOnList();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"stop");
-}
-
-/** \brief give the forced mode, to export/import transfer list */
-void ListThread::forceMode(const CopyMode &mode)
-{
- if(mode==Copy)
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("Force mode to copy"));
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("Force mode to move"));
- this->mode=mode;
- forcedMode=true;
-}
-
-void ListThread::exportTransferList(const QString &fileName)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- QFile transferFile(fileName);
- if(transferFile.open(QIODevice::WriteOnly|QIODevice::Truncate))
- {
- transferFile.write(QString("Ultracopier-0.3;Transfer-list;").toUtf8());
- if(!forcedMode)
- transferFile.write(QString("Transfer;").toUtf8());
- else
- {
- if(mode==Copy)
- transferFile.write(QString("Copy;").toUtf8());
- else
- transferFile.write(QString("Move;").toUtf8());
- }
- transferFile.write(QString("Ultracopier-0.3\n").toUtf8());
- bool haveError=false;
- int size=actionToDoListTransfer.size();
- for (int index=0;index<size;++index) {
- if(actionToDoListTransfer.at(index).mode==Copy)
- {
- if(!forcedMode || mode==Copy)
- {
- if(forcedMode)
- transferFile.write(QString("%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8());
- else
- transferFile.write(QString("Copy;%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8());
- }
- else
- haveError=true;
- }
- else if(actionToDoListTransfer.at(index).mode==Move)
- {
- if(!forcedMode || mode==Move)
- {
- if(forcedMode)
- transferFile.write(QString("Move;%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8());
- else
- transferFile.write(QString("%1;%2\n").arg(actionToDoListTransfer.at(index).source.absoluteFilePath()).arg(actionToDoListTransfer.at(index).destination.absoluteFilePath()).toUtf8());
- }
- else
- haveError=true;
- }
- }
- if(haveError)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Unable do to move or copy item into wrong forced mode: %1").arg(transferFile.errorString()));
- emit errorTransferList(tr("Unable do to move or copy item into wrong forced mode: %1").arg(transferFile.errorString()));
- }
- transferFile.close();
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Unable to save the transfer list: %1").arg(transferFile.errorString()));
- emit errorTransferList(tr("Unable to save the transfer list: %1").arg(transferFile.errorString()));
- return;
- }
-}
-
-void ListThread::importTransferList(const QString &fileName)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- QFile transferFile(fileName);
- if(transferFile.open(QIODevice::ReadOnly))
- {
- QString content;
- QByteArray data=transferFile.readLine(64);
- if(data.size()<=0)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Problem at the reading, or file size is null"));
- emit errorTransferList(tr("Problem at the reading, or file size is null"));
- return;
- }
- content=QString::fromUtf8(data);
- if(content!="Ultracopier-0.3;Transfer-list;Transfer;Ultracopier-0.3\n" && content!="Ultracopier-0.3;Transfer-list;Copy;Ultracopier-0.3\n" && content!="Ultracopier-0.3;Transfer-list;Move;Ultracopier-0.3\n")
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Wrong header: \"%1\"").arg(content));
- emit errorTransferList(tr("Wrong header: \"%1\"").arg(content));
- return;
- }
- bool transferListMixedMode=false;
- if(content=="Ultracopier-0.3;Transfer-list;Transfer;Ultracopier-0.3\n")
- {
- if(forcedMode)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("The transfer list is in mixed mode, but this instance is not in this mode"));
- emit errorTransferList(tr("The transfer list is in mixed mode, but this instance is not in this mode"));
- return;
- }
- else
- transferListMixedMode=true;
- }
- if(content=="Ultracopier-0.3;Transfer-list;Copy;Ultracopier-0.3\n" && (forcedMode && mode==Move))
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("The transfer list is in copy mode, but this instance is not in this mode: forcedMode: %1, mode: %2").arg(forcedMode).arg(mode));
- emit errorTransferList(tr("The transfer list is in copy mode, but this instance is not in this mode"));
- return;
- }
- if(content=="Ultracopier-0.3;Transfer-list;Move;Ultracopier-0.3\n" && (forcedMode && mode==Copy))
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("The transfer list is in move mode, but this instance is not in this mode: forcedMode: %1, mode: %2").arg(forcedMode).arg(mode));
- emit errorTransferList(tr("The transfer list is in move mode, but this instance is not in this mode"));
- return;
- }
- bool errorFound=false;
- QRegExp correctLine;
- if(transferListMixedMode)
- correctLine=QRegExp("^(Copy|Move);[^;]+;[^;]+\n$");
- else
- correctLine=QRegExp("^[^;]+;[^;]+\n$");
- QStringList args;
- CopyMode tempMode;
- do
- {
- data=transferFile.readLine(65535*2);
- if(data.size()>0)
- {
- content=QString::fromUtf8(data);
- //do the import here
- if(content.contains(correctLine))
- {
- content.remove("\n");
- args=content.split(";");
- if(forcedMode)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("New data to import in forced mode: %2,%3").arg(args.at(0)).arg(args.at(1)));
- addToTransfer(QFileInfo(args.at(0)),QFileInfo(args.at(1)),mode);
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("New data to import: %1,%2,%3").arg(args.at(0)).arg(args.at(1)).arg(args.at(2)));
- if(args.at(0)=="Copy")
- tempMode=Copy;
- else
- tempMode=Move;
- addToTransfer(QFileInfo(args.at(1)),QFileInfo(args.at(2)),tempMode);
- }
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Wrong line syntax: %1").arg(content));
- errorFound=true;
- }
- }
- }
- while(data.size()>0);
- transferFile.close();
- if(errorFound)
- emit warningTransferList(tr("Some error have been found during the line parsing"));
-// emit newActionOnList();
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Unable to open the transfer list: %1").arg(transferFile.errorString()));
- emit errorTransferList(tr("Unable to open the transfer list: %1").arg(transferFile.errorString()));
- return;
- }
-}
-
-//do new actions
-void ListThread::doNewActions_start_transfer()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("actionToDoListTransfer.size(): %1, numberOfTranferRuning: %2").arg(actionToDoListTransfer.size()).arg(numberOfTranferRuning));
- if(stopIt || putInPause)
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- //lunch the transfer in WaitForTheTransfer
- int_for_loop=0;
- loop_size=transferThreadList.size();
- while(int_for_loop<loop_size && numberOfTranferRuning<ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER)
- {
- if(transferThreadList.at(int_for_loop)->getStat()==TransferStat_WaitForTheTransfer)
- {
- transferThreadList.at(int_for_loop)->startTheTransfer();
- numberOfTranferRuning++;
- }
- int_for_loop++;
- }
- int_for_loop=0;
- while(int_for_loop<loop_size && numberOfTranferRuning<ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER)
- {
- if(transferThreadList.at(int_for_loop)->getStat()==TransferStat_PreOperation)
- {
- transferThreadList.at(int_for_loop)->startTheTransfer();
- numberOfTranferRuning++;
- }
- int_for_loop++;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"numberOfTranferRuning: "+QString::number(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()
-{
- //ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("actionToDoList.size(): %1").arg(actionToDoList.size()));
- if(stopIt || putInPause)
- return;
- //ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- //lunch the pre-op or inode op
- int_for_loop=0;
- int_for_internal_loop=0;
- number_rm_path_moved=0;
- int_for_transfer_thread_search=0;
- actionToDoListTransfer_count=actionToDoListTransfer.count();
- actionToDoListInode_count=actionToDoListInode.count();
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- //search the next transfer action to do
- while(int_for_loop<actionToDoListTransfer_count)
- {
- if(!actionToDoListTransfer[int_for_loop].isRunning)
- {
- //search the next inode action to do
- while(int_for_internal_loop<actionToDoListInode_count)
- {
- if(!actionToDoListInode[int_for_internal_loop].isRunning)
- {
- if(actionToDoListTransfer[int_for_loop].id<actionToDoListInode[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++;
- }
- actionToDoTransfer& currentActionToDoTransfer=actionToDoListTransfer[int_for_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[int_for_transfer_thread_search];
- if(currentTransferThread->getStat()==TransferStat_Idle && currentTransferThread->transferId==0) // /!\ important!
- {
- currentTransferThread->transferId=currentActionToDoTransfer.id;
- currentTransferThread->transferSize=currentActionToDoTransfer.size;
- currentTransferThread->setFiles(
- currentActionToDoTransfer.source.absoluteFilePath(),
- currentActionToDoTransfer.size,
- currentActionToDoTransfer.destination.absoluteFilePath(),
- currentActionToDoTransfer.mode
- );
- currentActionToDoTransfer.isRunning=true;
-
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("[%1] id: %2 is idle, use it for %3").arg(int_for_loop).arg(currentTransferThread->transferId).arg(currentActionToDoTransfer.destination.absoluteFilePath()));
-
- /// \note wrong position? Else write why it's here
- returnActionOnCopyList newAction;
- newAction.type = PreOperation;
- newAction.addAction.id = currentActionToDoTransfer.id;
- newAction.addAction.sourceFullPath = currentActionToDoTransfer.source.absoluteFilePath();
- newAction.addAction.sourceFileName = currentActionToDoTransfer.source.fileName();
- newAction.addAction.destinationFullPath = currentActionToDoTransfer.destination.absoluteFilePath();
- newAction.addAction.destinationFileName = currentActionToDoTransfer.destination.fileName();
- newAction.addAction.size = currentActionToDoTransfer.size;
- newAction.addAction.mode = currentActionToDoTransfer.mode;
- actionDone << newAction;
- int_for_transfer_thread_search++;
- 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
- //ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to found free thread to do the transfer");
- break;
- }
- numberOfInodeOperation++;
- if(numberOfInodeOperation>=ULTRACOPIER_PLUGIN_MAXPARALLELINODEOPT)
- return;
- }
- int_for_loop++;
- }
- //search the next inode action to do
- while(int_for_internal_loop<actionToDoListInode_count)
- {
- if(!actionToDoListInode[int_for_internal_loop].isRunning)
- {
- //do the inode action
- #include "ListThread_InodeAction.cpp"
- }
- int_for_internal_loop++;
- }
- //error checking
- if((actionToDoListTransfer_count+actionToDoListInode_count)>ULTRACOPIER_PLUGIN_MAXPARALLELINODEOPT)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("The index have been detected as out of max range: %1>%2").arg(actionToDoListTransfer_count+actionToDoListInode_count).arg(ULTRACOPIER_PLUGIN_MAXPARALLELINODEOPT));
- return;
- }
-}
-
-//restart transfer if it can
-void ListThread::restartTransferIfItCan()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- TransferThread *transfer=qobject_cast<TransferThread *>(QObject::sender());
- if(transfer==NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,QString("transfer thread not located!"));
- return;
- }
- if(numberOfTranferRuning<ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER && transfer->getStat()==TransferStat_WaitForTheTransfer)
- {
- transfer->startTheTransfer();
- numberOfTranferRuning++;
- }
- doNewActions_start_transfer();
-}
-
-/// \brief update the transfer stat
-void ListThread::newTransferStat(TransferStat stat,quint64 id)
-{
- returnActionOnCopyList newAction;
- switch(stat)
- {
- case TransferStat_Idle:
- return;
- break;
- case TransferStat_PreOperation:
- return;
- break;
- case TransferStat_WaitForTheTransfer:
- return;
- break;
- case TransferStat_Transfer:
- newAction.type=Transfer;
- break;
- case TransferStat_PostTransfer:
- case TransferStat_PostOperation:
- newAction.type=PostOperation;
- break;
- case TransferStat_Checksum:
- newAction.type=CustomOperation;
- break;
- default:
- return;
- break;
- }
- newAction.addAction.id = id;
- actionDone << newAction;
-}
-
-void ListThread::set_osBufferLimit(unsigned int osBufferLimit)
-{
- this->osBufferLimit=osBufferLimit;
- int index=0;
- loop_sub_size_transfer_thread_search=transferThreadList.size();
- while(index<loop_sub_size_transfer_thread_search)
- {
- transferThreadList.at(index)->set_osBufferLimit(osBufferLimit);
- index++;
- }
-}
-
-void ListThread::set_setFilters(QList<Filters_rules> include,QList<Filters_rules> exclude)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("include.size(): %1, exclude.size(): %2").arg(include.size()).arg(exclude.size()));
- this->include=include;
- this->exclude=exclude;
- int index=0;
- while(index<scanFileOrFolderThreadsPool.size())
- {
- scanFileOrFolderThreadsPool.at(index)->setFilters(include,exclude);
- index++;
- }
-}
-
-void ListThread::set_sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule)
-{
- this->firstRenamingRule=firstRenamingRule;
- this->otherRenamingRule=otherRenamingRule;
- emit send_sendNewRenamingRules(firstRenamingRule,otherRenamingRule);
-}
-
-void ListThread::mkPathFirstFolderFinish()
-{
- int_for_loop=0;
- loop_size=actionToDoListInode.size();
- while(int_for_loop<loop_size)
- {
- if(actionToDoListInode.at(int_for_loop).type==ActionType_MkPath)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("stop mkpath: %1").arg(actionToDoListInode.at(int_for_loop).folder.absoluteFilePath()));
- actionToDoListInode.removeAt(int_for_loop);
- if(actionToDoListTransfer.size()==0 && actionToDoListInode.size()==0 && actionToDoListInode_afterTheTransfer.size()==0)
- updateTheStatus();
- numberOfInodeOperation--;
- doNewActions_inode_manipulation();
- return;
- }
- int_for_loop++;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to found item into the todo list");
-}
-
-void ListThread::rmPathFirstFolderFinish()
-{
- int_for_loop=0;
- loop_size=actionToDoListInode.size();
- while(int_for_loop<loop_size)
- {
- if(actionToDoListInode.at(int_for_loop).type==ActionType_RmPath || actionToDoListInode.at(int_for_loop).type==ActionType_RmSync)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("stop rmpath: %1").arg(actionToDoListInode.at(int_for_loop).folder.absoluteFilePath()));
- actionToDoListInode.removeAt(int_for_loop);
- if(actionToDoListTransfer.size()==0 && actionToDoListInode.size()==0 && actionToDoListInode_afterTheTransfer.size()==0)
- updateTheStatus();
- numberOfInodeOperation--;
- doNewActions_inode_manipulation();
- return;
- }
- int_for_loop++;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to found item into the todo list");
-}
-
-#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
-
-void ListThread::timedUpdateDebugDialog()
-{
- QStringList newList;
- int index=0;
- 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;
- case TransferStat_Checksum:
- stat="Checksum";
- break;
- default:
- stat=QString("??? (%1)").arg(transferThreadList.at(index)->getStat());
- break;
- }
- newList << QString("%1) (%3,%4) %2")
- .arg(index)
- .arg(stat)
- .arg(transferThreadList.at(index)->readingLetter())
- .arg(transferThreadList.at(index)->writingLetter());
- index++;
- }
- QStringList newList2;
- index=0;
- loop_size=actionToDoListTransfer.size();
- while(index<loop_size)
- {
- newList2 << QString("%1 %2 %3")
- .arg(actionToDoListTransfer.at(index).source.absoluteFilePath())
- .arg(actionToDoListTransfer.at(index).size)
- .arg(actionToDoListTransfer.at(index).destination.absoluteFilePath());
- if(index>(actionToDoListTransfer.size()+2))
- {
- newList2 << QString("...");
- break;
- }
- index++;
- }
- emit updateTheDebugInfo(newList,newList2,numberOfInodeOperation);
-}
-
-#endif
-
-/// \note Can be call without queue because all call will be serialized
-void ListThread::fileAlreadyExists(const QFileInfo &source,const QFileInfo &destination,const bool &isSame)
-{
- emit send_fileAlreadyExists(source,destination,isSame,qobject_cast<TransferThread *>(sender()));
-}
-
-/// \note Can be call without queue because all call will be serialized
-void ListThread::errorOnFile(const QFileInfo &fileInfo,const QString &errorString)
-{
- emit send_errorOnFile(fileInfo,errorString,qobject_cast<TransferThread *>(sender()));
-}
-
-/// \note Can be call without queue because all call will be serialized
-void ListThread::folderAlreadyExists(const QFileInfo &source,const QFileInfo &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 QFileInfo &fileInfo,const QString &errorString)
-{
- emit send_errorOnFolder(fileInfo,errorString,qobject_cast<scanFileOrFolder *>(sender()));
-}
-
-//to run the thread
-void ListThread::run()
-{
- exec();
-}
-
-/// \to create transfer thread
-void ListThread::createTransferThread()
-{
- if(stopIt)
- return;
- transferThreadList << new TransferThread();
- TransferThread * last=transferThreadList.last();
- last->transferId=0;
- last->transferSize=0;
- last->setRightTransfer(doRightTransfer);
- last->setKeepDate(keepDate);
- last->setBlockSize(blockSize);
- last->setDrive(drives);
- last->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists);
- last->setMaxSpeed(maxSpeed/ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER);
- last->set_doChecksum(doChecksum);
- last->set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible);
- last->set_checksumOnlyOnError(checksumOnlyOnError);
- last->set_osBuffer(osBuffer);
- last->set_osBufferLimited(osBufferLimited);
- last->set_osBufferLimit(osBufferLimit);
- last->setRsync(rsync);
-
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- connect(last,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)),this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)), Qt::QueuedConnection);
- #endif // ULTRACOPIER_PLUGIN_DEBUG
- connect(last,SIGNAL(errorOnFile(QFileInfo,QString)), this,SLOT(errorOnFile(QFileInfo,QString)), Qt::QueuedConnection);
- connect(last,SIGNAL(fileAlreadyExists(QFileInfo,QFileInfo,bool)), this,SLOT(fileAlreadyExists(QFileInfo,QFileInfo,bool)), Qt::QueuedConnection);
- connect(last,SIGNAL(tryPutAtBottom()), this,SLOT(transferPutAtBottom()), Qt::QueuedConnection);
- connect(last,SIGNAL(readStopped()), this,SLOT(transferIsFinished()), Qt::QueuedConnection);
- connect(last,SIGNAL(preOperationStopped()), this,SLOT(doNewActions_start_transfer()), Qt::QueuedConnection);
- connect(last,SIGNAL(postOperationStopped()), this,SLOT(transferInodeIsClosed()), Qt::QueuedConnection);
- connect(last,SIGNAL(checkIfItCanBeResumed()), this,SLOT(restartTransferIfItCan()), Qt::QueuedConnection);
- connect(last,SIGNAL(pushStat(TransferStat,quint64)), this,SLOT(newTransferStat(TransferStat,quint64)), Qt::QueuedConnection);
-
- connect(this,SIGNAL(send_sendNewRenamingRules(QString,QString)), last,SLOT(setRenamingRules(QString,QString)), Qt::QueuedConnection);
-
- last->start();
- last->setObjectName(QString("transfer %1").arg(transferThreadList.size()-1));
- last->setMkpathTransfer(&mkpathTransfer);
- last->setRenamingRules(firstRenamingRule,otherRenamingRule);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- last->setId(transferThreadList.size()-1);
- #endif
- if(transferThreadList.size()>=ULTRACOPIER_PLUGIN_MAXPARALLELINODEOPT)
- return;
- if(stopIt)
- return;
- doNewActions_inode_manipulation();
- emit askNewTransferThread();
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/ListThread.h b/plugins-alternative/CopyEngine/Rsync/ListThread.h
deleted file mode 100755
index ab4ad64..0000000
--- a/plugins-alternative/CopyEngine/Rsync/ListThread.h
+++ /dev/null
@@ -1,376 +0,0 @@
-/** \file ListThread.h
-\brief Define the list thread, and management to the action to do
-\author alpha_one_x86
-\version 0.3
-\date 2011 */
-
-#ifndef LISTTHREAD_H
-#define LISTTHREAD_H
-
-#include <QThread>
-#include <QObject>
-#include <QList>
-#include <QStringList>
-#include <QFileInfo>
-#include <QSemaphore>
-#include <QTextStream>
-#include <QFile>
-
-#include "../../../interface/PluginInterface_CopyEngine.h"
-#include "scanFileOrFolder.h"
-#include "TransferThread.h"
-#include "MkPath.h"
-#include "RmPath.h"
-#include "Environment.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(QStringList 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(QString destination);
- //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(QStringList sources,QString 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(QStringList sources,QString destination);
- /** \brief get the speed limitation
- * < -1 if not able, 0 if disabled */
- qint64 getSpeedLimitation();
- /** \brief to set drives detected
- * specific to this copy engine */
- void setDrive(QStringList drives);
- /// \brief to set the collision action
- void setCollisionAction(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
- {
- quint64 id;
- qint64 size;///< Used to set: used in case of transfer or remainingInode for drop folder
- QFileInfo source;///< Used to set: source for transfer, folder to create, folder to drop
- QFileInfo destination;
- CopyMode mode;
- bool isRunning;///< store if the action si running
- //TransferThread * transfer; // -> see transferThreadList
- };
- QList<actionToDoTransfer> actionToDoListTransfer;
- /// \brief get action type
- enum ActionType
- {
- ActionType_MkPath=1,
- ActionType_RmPath=2,
- ActionType_RmSync=3
- };
- /// \brief to store one action to do
- struct actionToDoInode
- {
- ActionType type;///< \see ActionType
- quint64 id;
- qint64 size;///< Used to set: used in case of transfer or remainingInode for drop folder
- QFileInfo folder;///< Used to set: source for transfer, folder to create, folder to drop
- bool isRunning;///< store if the action si running
- };
- QList<actionToDoInode> actionToDoListInode;
- QList<actionToDoInode> actionToDoListInode_afterTheTransfer;
- int numberOfInodeOperation;
- //dir operation thread queue
- MkPath mkPathQueue;
- RmPath rmPathQueue;
- //to get the return value from copyEngine
- bool getReturnBoolToCopyEngine();
- QPair<quint64,quint64> getReturnPairQuint64ToCopyEngine();
- ItemOfCopyList getReturnItemOfCopyListToCopyEngine();
-
- void set_doChecksum(bool doChecksum);
- void set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible);
- void set_checksumOnlyOnError(bool checksumOnlyOnError);
- void set_osBuffer(bool osBuffer);
- void set_osBufferLimited(bool osBufferLimited);
-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 quint64 &id);
- /** \brief skip as interanl one transfer entry
- * \param id id of the file to remove */
- bool skipInternal(const quint64 &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 QList<int> &ids);
- /** \brief move on top of the list the selected item
- * \param ids ids is the id list of the selected items */
- void moveItemsOnTop(QList<int> ids);
- /** \brief move up the list the selected item
- * \param ids ids is the id list of the selected items */
- void moveItemsUp(QList<int> ids);
- /** \brief move down the list the selected item
- * \param ids ids is the id list of the selected items */
- void moveItemsDown(QList<int> ids);
- /** \brief move on bottom of the list the selected item
- * \param ids ids is the id list of the selected items */
- void moveItemsOnBottom(QList<int> ids);
-
- /** \brief give the forced mode, to export/import transfer list */
- void forceMode(const CopyMode &mode);
- /// \brief export the transfer list into a file
- void exportTransferList(const QString &fileName);
- /// \brief import the transfer list into a file
- void importTransferList(const QString &fileName);
-
- /// \brief set the folder local colision
- void setFolderColision(FolderExistsAction alwaysDoThisActionForFolderExists);
- /** \brief to set the speed limitation
- * -1 if not able, 0 if disabled */
- bool setSpeedLimitation(const qint64 &speedLimitation);
- /// \brief set the copy info and options before runing
- void setRightTransfer(const bool doRightTransfer);
- /// \brief set keep date
- void setKeepDate(const bool keepDate);
- /// \brief set block size in KB
- void setBlockSize(const int blockSize);
- /// \brief set auto start
- void setAutoStart(const bool autoStart);
- /// \brief set rsync
- void setRsync(const bool rsync);
- /// \brief set check destination folder
- void setCheckDestinationFolderExists(const bool checkDestinationFolderExists);
- /// \brief set data local to the thread
- void setAlwaysFileExistsAction(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();
-
- /// \brief update the transfer stat
- void newTransferStat(TransferStat stat,quint64 id);
-
- void set_osBufferLimit(unsigned int osBufferLimit);
- void set_setFilters(QList<Filters_rules> include,QList<Filters_rules> exclude);
- void set_sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule);
-
- //send action done
- void sendActionDone();
- //send progression
- void sendProgression();
-private:
- QSemaphore mkpathTransfer;
- QString sourceDrive;
- bool sourceDriveMultiple;
- bool stopIt;
- QString destinationDrive;
- bool destinationDriveMultiple;
- QList<scanFileOrFolder *> scanFileOrFolderThreadsPool;
- int numberOfTransferIntoToDoList;
- QList<TransferThread *> transferThreadList;
- scanFileOrFolder * newScanThread(CopyMode mode);
- quint64 bytesToTransfer;
- quint64 bytesTransfered;
- bool autoStart;
- bool rsync;
- bool putInPause;
- QList<returnActionOnCopyList> actionDone;///< to action to send to the interface
- quint64 idIncrementNumber;///< to store the last id returned
- qint64 actualRealByteTransfered;
- int preOperationNumber;
- int numberOfTranferRuning;
- int maxSpeed;///< in KB/s, assume as 0KB/s as default like every where
- FolderExistsAction alwaysDoThisActionForFolderExists;
- bool checkDestinationFolderExists;
- bool doChecksum;
- bool checksumIgnoreIfImpossible;
- bool checksumOnlyOnError;
- bool osBuffer;
- bool osBufferLimited;
- unsigned int osBufferLimit;
- QList<Filters_rules> include,exclude;
- CopyMode mode;
- bool forcedMode;
- QString firstRenamingRule;
- QString otherRenamingRule;
-
- //add file transfer to do
- quint64 addToTransfer(const QFileInfo& source,const QFileInfo& destination,const CopyMode& mode);
- //generate id number
- quint64 generateIdNumber();
- //warning the first entry is accessible will copy
- bool removeItems(quint64 id);
- //put on top
- bool moveOnTopItem(quint64 id);
- //move up
- bool moveUpItem(quint64 id);
- //move down
- bool moveDownItem(quint64 id);
- //put on bottom
- bool moveOnBottomItem(quint64 id);
- //general transfer
- void startGeneralTransfer();
- //debug windows if needed
- #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
- QTimer timerUpdateDebugDialog;
- #endif
- FacilityInterface * facilityInterface;
- //temp variable for not always alocate the memory
- int int_for_loop,int_for_internal_loop,int_for_transfer_thread_search,loop_size,loop_sub_size,loop_sub_size_transfer_thread_search,number_rm_path_moved;
- TransferThread *temp_transfer_thread;
- bool isFound;
- bool updateTheStatus_listing,updateTheStatus_copying;
- EngineActionInProgress updateTheStatus_action_in_progress;
- QSemaphore waitConstructor,waitCancel;
- int actionToDoListTransfer_count,actionToDoListInode_count;
- bool doTransfer,doInode;
- qint64 oversize;//used as temp variable
- qint64 currentProgression;
- qint64 copiedSize,totalSize,localOverSize;
- QList<ProgressionItem> progressionList;
- TransferThread* currentTransferThread;
- //memory variable for transfer thread creation
- bool doRightTransfer;
- bool keepDate;
- int blockSize;
- QStringList drives;
- FileExistsAction alwaysDoThisActionForFileExists;
- //to return value to the copyEngine
- bool returnBoolToCopyEngine;
- QPair<quint64,quint64> returnPairQuint64ToCopyEngine;
- QList<ItemOfCopyList> returnListItemOfCopyListToCopyEngine;
- ItemOfCopyList returnItemOfCopyListToCopyEngine;
- ProgressionItem tempItem;
-
- void realByteTransfered();
-private slots:
- void scanThreadHaveFinish(bool skipFirstRemove=false);
- void updateTheStatus();
- void fileTransfer(const QFileInfo &sourceFileInfo,const QFileInfo &destinationFileInfo,const CopyMode &mode);
- //mkpath event
- void mkPathFirstFolderFinish();
- //rmpath event
- void rmPathFirstFolderFinish();
- //transfer is finished
- void transferIsFinished();
- /** \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 QFileInfo &source,const QFileInfo &destination,const bool &isSame);
- /// \note Can be call without queue because all call will be serialized
- void errorOnFile(const QFileInfo &fileInfo,const QString &errorString);
- /// \note Can be call without queue because all call will be serialized
- void folderAlreadyExists(const QFileInfo &source,const QFileInfo &destination,const bool &isSame);
- /// \note Can be call without queue because all call will be serialized
- void errorOnFolder(const QFileInfo &fileInfo,const QString &errorString);
- //to run the thread
- void run();
- /// \to create transfer thread
- void createTransferThread();
- //mk path to do
- quint64 addToMkPath(const QString& folder);
- //add rm path to do
- void addToRmPath(const QString& folder,const int& inodeToRemove);
- //rsync rm
- void addToRmForRsync(const QString& inode);
- //send the progression, after full reset of the interface (then all is empty)
- void syncTransferList_internal();
-signals:
- //send information about the copy
- void actionInProgess(EngineActionInProgress); //should update interface information on this event
-
- void newActionOnList(const QList<returnActionOnCopyList> &);///very important, need be temporized to group the modification to do and not flood the interface
- void syncReady();
-
- /** \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 QList<ProgressionItem> &progressionList);
- //get information about the copy
- /** \brief to get the general progression
- * first = current transfered byte, second = byte to transfer */
- void pushGeneralProgression(const quint64 &,const quint64 &);
-
- void newFolderListing(const QString &path);
- void newCollisionAction(QString action);
- void newErrorAction(QString action);
- void isInPause(bool);
-
- //when can be deleted
- void canBeDeleted();
-
- //send error occurred
- void error(QString path,quint64 size,QDateTime mtime,QString error);
- //for the extra logging
- void rmPath(QString path);
- void mkPath(QString path);
- /// \brief To debug source
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- void debugInformation(DebugLevel level,QString fonction,QString text,QString file,int ligne);
- #endif
- #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
- void updateTheDebugInfo(QStringList,QStringList,int);
- #endif
-
- //other signal
- /// \note Can be call without queue because all call will be serialized
- void send_fileAlreadyExists(QFileInfo source,QFileInfo destination,bool isSame,TransferThread * thread);
- /// \note Can be call without queue because all call will be serialized
- void send_errorOnFile(QFileInfo fileInfo,QString errorString,TransferThread * thread);
- /// \note Can be call without queue because all call will be serialized
- void send_folderAlreadyExists(QFileInfo source,QFileInfo destination,bool isSame,scanFileOrFolder * thread);
- /// \note Can be call without queue because all call will be serialized
- void send_errorOnFolder(QFileInfo fileInfo,QString errorString,scanFileOrFolder * thread);
- //send the progression
- void send_syncTransferList();
- //mkpath error event
- void mkPathErrorOnFolder(QFileInfo fileInfo,QString errorString);
- //rmpath error event
- void rmPathErrorOnFolder(QFileInfo fileInfo,QString errorString);
- //to close
- void tryCancel();
- //to ask new transfer thread
- void askNewTransferThread();
-
- void warningTransferList(QString warning);
- void errorTransferList(QString error);
- void send_sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule);
- void send_realBytesTransfered(quint64);
-};
-
-#endif // LISTTHREAD_H
diff --git a/plugins-alternative/CopyEngine/Rsync/ListThread_InodeAction.cpp b/plugins-alternative/CopyEngine/Rsync/ListThread_InodeAction.cpp
deleted file mode 100644
index c495f60..0000000
--- a/plugins-alternative/CopyEngine/Rsync/ListThread_InodeAction.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/** \file ListThread_InodeAction.cpp
-\brief To be included into ListThread.cpp, to optimize and prevent code duplication
-\see ListThread.cpp
-\author alpha_one_x86
-\version 0.3
-\date 2011 */
-
-#ifdef LISTTHREAD_H
-
-//do the inode action
-actionToDoInode& currentActionToDoInode=actionToDoListInode[int_for_internal_loop];
-switch(currentActionToDoInode.type)
-{
-case ActionType_MkPath:
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("launch mkpath: %1").arg(currentActionToDoInode.folder.absoluteFilePath()));
- mkPathQueue.addPath(currentActionToDoInode.folder.absoluteFilePath());
- currentActionToDoInode.isRunning=true;
- numberOfInodeOperation++;
- if(numberOfInodeOperation>=ULTRACOPIER_PLUGIN_MAXPARALLELINODEOPT)
- return;
-break;
-case ActionType_RmSync:
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("launch rm to sync: %1").arg(currentActionToDoInode.folder.absoluteFilePath()));
- rmPathQueue.addPath(currentActionToDoInode.folder.absoluteFilePath(),true);
- currentActionToDoInode.isRunning=true;
- numberOfInodeOperation++;
- if(numberOfInodeOperation>=ULTRACOPIER_PLUGIN_MAXPARALLELINODEOPT)
- return;
-break;
-case ActionType_RmPath:
-/* What is this code?
- if((int_for_loop+number_rm_path_moved)>=(loop_size-1))
- {
- if(numberOfTranferRuning)
- break;
- else
- currentActionToDoInode.size=0;
- }*/
- //then empty (no file), can try remove it
- if(true)//currentActionToDoInode.size==0
- {
- if(numberOfTranferRuning>0)
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("skipped because already inode = 0 and transfer is running: %1").arg(currentActionToDoInode.folder.absoluteFilePath()));
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("launch rmpath: %1").arg(currentActionToDoInode.folder.absoluteFilePath()));
- rmPathQueue.addPath(currentActionToDoInode.folder.absoluteFilePath(),false);
- currentActionToDoInode.isRunning=true;
- numberOfInodeOperation++;
- if(numberOfInodeOperation>=ULTRACOPIER_PLUGIN_MAXPARALLELINODEOPT)
- return;
- }
- else //have not finish all the transfer into it, do it later
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"should never pass here");
- /*actionToDoListInode.move(int_for_internal_loop,actionToDoListInode_count-1);
- currentActionToDoInode.id=generateIdNumber();
- number_rm_path_moved++;
- currentActionToDoInode.size=0;
- continue;*/
- }
-break;
-default:
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Wrong type at inode action"));
- return;
-}
-
-#endif
diff --git a/plugins-alternative/CopyEngine/Rsync/MkPath.cpp b/plugins-alternative/CopyEngine/Rsync/MkPath.cpp
deleted file mode 100644
index dd71231..0000000
--- a/plugins-alternative/CopyEngine/Rsync/MkPath.cpp
+++ /dev/null
@@ -1,100 +0,0 @@
-#include "MkPath.h"
-
-MkPath::MkPath()
-{
- stopIt=false;
- waitAction=false;
- setObjectName("MkPath");
- moveToThread(this);
- start();
-}
-
-MkPath::~MkPath()
-{
- stopIt=true;
- quit();
- wait();
-}
-
-void MkPath::addPath(const QString &path)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start: "+path);
- if(stopIt)
- return;
- emit internalStartAddPath(path);
-}
-
-void MkPath::skip()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- emit internalStartSkip();
-}
-
-void MkPath::retry()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- emit internalStartRetry();
-}
-
-void MkPath::run()
-{
- connect(this,SIGNAL(internalStartAddPath(QString)),this,SLOT(internalAddPath(QString)),Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartDoThisPath()),this,SLOT(internalDoThisPath()),Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartSkip()),this,SLOT(internalSkip()),Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartRetry()),this,SLOT(internalRetry()),Qt::QueuedConnection);
- exec();
-}
-
-void MkPath::internalDoThisPath()
-{
- if(waitAction || pathList.isEmpty())
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start: "+pathList.first());
- if(!dir.exists(pathList.first()))
- if(!dir.mkpath(pathList.first()))
- {
- if(!dir.exists(pathList.first()))
- {
- if(stopIt)
- return;
- waitAction=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"Unable to remove the folder: "+pathList.first());
- emit errorOnFolder(pathList.first(),tr("Unable to create the folder"));
- return;
- }
- }
- pathList.removeFirst();
- emit firstFolderFinish();
- checkIfCanDoTheNext();
-}
-
-void MkPath::internalAddPath(const QString &path)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start: "+path);
- pathList << path;
- if(!waitAction)
- checkIfCanDoTheNext();
-}
-
-void MkPath::checkIfCanDoTheNext()
-{
- if(!waitAction && !stopIt && pathList.size()>0)
- emit internalStartDoThisPath();
-}
-
-void MkPath::internalSkip()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- waitAction=false;
- pathList.removeFirst();
- emit firstFolderFinish();
- checkIfCanDoTheNext();
-}
-
-void MkPath::internalRetry()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- waitAction=false;
- checkIfCanDoTheNext();
-}
-
diff --git a/plugins-alternative/CopyEngine/Rsync/MkPath.h b/plugins-alternative/CopyEngine/Rsync/MkPath.h
deleted file mode 100644
index 5d00d60..0000000
--- a/plugins-alternative/CopyEngine/Rsync/MkPath.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/** \file MkPath.h
-\brief Make the path given as queued mkpath
-\author alpha_one_x86
-\version 0.3
-\date 2011 */
-
-#ifndef MKPATH_H
-#define MKPATH_H
-
-#include <QThread>
-#include <QFileInfo>
-#include <QString>
-#include <QSemaphore>
-#include <QStringList>
-#include <QDir>
-
-#include "Environment.h"
-
-/// \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 QString &path);
-signals:
- void errorOnFolder(const QFileInfo &,const QString &);
- void firstFolderFinish();
- void internalStartAddPath(const QString &path);
- void internalStartDoThisPath();
- void internalStartSkip();
- void internalStartRetry();
- void debugInformation(const DebugLevel &level,const QString &fonction,const QString &text,const QString &file,const int &ligne);
-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;
- QStringList pathList;
- void checkIfCanDoTheNext();
- QDir dir;
-private slots:
- void internalDoThisPath();
- void internalAddPath(const QString &path);
- void internalSkip();
- void internalRetry();
-};
-
-#endif // MKPATH_H
diff --git a/plugins-alternative/CopyEngine/Rsync/ReadThread.cpp b/plugins-alternative/CopyEngine/Rsync/ReadThread.cpp
deleted file mode 100644
index 3c7bfc1..0000000
--- a/plugins-alternative/CopyEngine/Rsync/ReadThread.cpp
+++ /dev/null
@@ -1,597 +0,0 @@
-#include "ReadThread.h"
-
-ReadThread::ReadThread()
-{
- start();
- moveToThread(this);
- stopIt=false;
- putInPause=false;
- blockSize=1024*1024;
- setObjectName("read");
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
- isInReadLoop=false;
- tryStartRead=false;
- isOpen.release();
-}
-
-ReadThread::~ReadThread()
-{
- stopIt=true;
- disconnect(this);
- waitNewClockForSpeed.release();
- isOpen.acquire();
- exit();
- wait();
-}
-
-void ReadThread::run()
-{
- connect(this,SIGNAL(internalStartOpen()), this,SLOT(internalOpen()), Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartReopen()), this,SLOT(internalReopen()), Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartRead()), this,SLOT(internalRead()), Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartClose()), this,SLOT(internalClose()), Qt::QueuedConnection);
- connect(this,SIGNAL(checkIfIsWait()), this,SLOT(isInWait()), Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartChecksum()), this,SLOT(checkSum()), Qt::QueuedConnection);
- exec();
-}
-
-void ReadThread::open(const QString &name,const CopyMode &mode)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] open source: "+name);
- if(file.isOpen())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] previous file is already open: "+file.fileName()+", try open: "+this->name);
- return;
- }
- if(isInReadLoop)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] previous file is already readding: "+file.fileName()+", try open: "+this->name);
- return;
- }
- if(tryStartRead)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] previous file is already try read: "+file.fileName()+", try open: "+this->name);
- return;
- }
- fakeMode=false;
- this->name=name;
- this->mode=mode;
- emit internalStartOpen();
-}
-
-QString ReadThread::errorString()
-{
- return errorString_internal;
-}
-
-void ReadThread::stop()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] stop()");
- stopIt=true;
- if(isOpen.available()>0)
- return;
- emit internalStartClose();
-}
-
-bool ReadThread::pause()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] try put read thread in pause");
- putInPause=true;
- stopIt=true;
- return isInReadLoop;
-}
-
-void ReadThread::resume()
-{
- if(putInPause)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- putInPause=false;
- stopIt=false;
- }
- else
- return;
- if(tryStartRead)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] already in try start");
- return;
- }
- tryStartRead=true;
- if(isInReadLoop)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] is in read loop");
- return;
- }
- if(!file.isOpen())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] file is not open");
- return;
- }
- emit internalStartRead();
-}
-
-bool ReadThread::seek(qint64 position)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start with: "+QString::number(position));
- if(position>file.size())
- return false;
- return file.seek(position);
-}
-
-qint64 ReadThread::size()
-{
- return file.size();
-}
-
-void ReadThread::postOperation()
-{
- emit internalStartClose();
-}
-
-void ReadThread::checkSum()
-{
- QByteArray blockArray;
- QCryptographicHash hash(QCryptographicHash::Sha1);
- isInReadLoop=true;
- lastGoodPosition=0;
- seek(0);
- int sizeReaden=0;
- do
- {
- //read one block
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Read;
- #endif
- blockArray=file.read(blockSize);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
-
- if(file.error()!=QFile::NoError)
- {
- errorString_internal=tr("Unable to read the source file: ")+file.errorString()+" ("+QString::number(file.error())+")";
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("file.error()!=QFile::NoError: %1, error: %2").arg(QString::number(file.error())).arg(errorString_internal));
- emit error();
- isInReadLoop=false;
- return;
- }
- sizeReaden=blockArray.size();
- if(sizeReaden>0)
- {
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Checksum;
- #endif
- hash.addData(blockArray);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
-
- if(stopIt)
- break;
-
- lastGoodPosition+=blockArray.size();
-
- //wait for limitation speed if stop not query
- if(maxSpeed>0)
- {
- numberOfBlockCopied++;
- if(numberOfBlockCopied>=MultiForBigSpeed)
- {
- numberOfBlockCopied=0;
- waitNewClockForSpeed.acquire();
- if(stopIt)
- break;
- }
- }
- }
- }
- while(sizeReaden>0 && !stopIt);
- if(lastGoodPosition>file.size())
- {
- errorString_internal=tr("File truncated during the read, possible data change");
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("Source truncated during the read: %1 (%2)").arg(file.errorString()).arg(QString::number(file.error())));
- emit error();
- isInReadLoop=false;
- return;
- }
- isInReadLoop=false;
- if(stopIt)
- {
- if(putInPause)
- emit isInPause();
- stopIt=false;
- return;
- }
- emit checksumFinish(hash.result());
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] stop the read");
-}
-
-bool ReadThread::internalOpen(bool resetLastGoodPosition)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] internalOpen source: "+name);
- stopIt=false;
- putInPause=false;
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=InodeOperation;
- #endif
- if(file.isOpen())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] already open! source: "+name);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
- return false;
- }
- file.setFileName(name);
- QIODevice::OpenMode openMode=QIODevice::ReadOnly;
- if(mode==Move)
- openMode=QIODevice::ReadWrite;
- seekToZero=false;
- if(file.open(openMode))
- {
- size_at_open=file.size();
- mtime_at_open=QFileInfo(file).lastModified();
- putInPause=false;
- if(resetLastGoodPosition)
- {
- lastGoodPosition=0;
- seek(0);
- emit opened();
- }
- else if(!seek(lastGoodPosition))
- {
- errorString_internal=file.errorString();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("Unable to seek after open: %1, error: %2").arg(name).arg(errorString_internal));
- emit error();
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
- return false;
- }
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
- isOpen.acquire();
- return true;
- }
- else
- {
- errorString_internal=file.errorString();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("Unable to open: %1, error: %2").arg(name).arg(errorString_internal));
- emit error();
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
- return false;
- }
-}
-
-void ReadThread::internalRead()
-{
- isInReadLoop=true;
- tryStartRead=false;
- if(stopIt)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] stopIt == true, then quit");
- internalClose();
- return;
- }
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=InodeOperation;
- #endif
- int sizeReaden=0;
- if(!file.isOpen())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] is not open!");
- return;
- }
- QByteArray blockArray;
- //numberOfBlockCopied = 0;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start the copy");
- emit readIsStarted();
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
- if(stopIt)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] stopIt == true, then quit");
- internalClose();
- return;
- }
- do
- {
- //read one block
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Read;
- #endif
- blockArray=file.read(blockSize);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
-
- if(file.error()!=QFile::NoError)
- {
- errorString_internal=tr("Unable to read the source file: ")+file.errorString()+" ("+QString::number(file.error())+")";
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("file.error()!=QFile::NoError: %1, error: %2").arg(QString::number(file.error())).arg(errorString_internal));
- emit error();
- isInReadLoop=false;
- return;
- }
- sizeReaden=blockArray.size();
- if(sizeReaden>0)
- {
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=WaitWritePipe;
- #endif
- if(!writeThread->write(blockArray))
- {
- if(!stopIt)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] stopped because the write is stopped: "+QString::number(lastGoodPosition));
- stopIt=true;
- }
- }
-
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
-
- if(stopIt)
- break;
-
- lastGoodPosition+=blockArray.size();
-
- //wait for limitation speed if stop not query
- if(maxSpeed>0)
- {
- numberOfBlockCopied++;
- if(numberOfBlockCopied>=MultiForBigSpeed)
- {
- numberOfBlockCopied=0;
- waitNewClockForSpeed.acquire();
- if(stopIt)
- break;
- }
- }
- }
- /*
- if(lastGoodPosition>16*1024)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("Test error in reading: %1 (%2)").arg(file.errorString()).arg(file.error()));
- errorString_internal=QString("Test error in reading: %1 (%2)").arg(file.errorString()).arg(file.error());
- emit error();
- isInReadLoop=false;
- return;
- }
- */
- }
- while(sizeReaden>0 && !stopIt);
- if(lastGoodPosition>file.size())
- {
- errorString_internal=tr("File truncated during the read, possible data change");
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("Source truncated during the read: %1 (%2)").arg(file.errorString()).arg(QString::number(file.error())));
- emit error();
- isInReadLoop=false;
- return;
- }
- isInReadLoop=false;
- if(stopIt)
- {
- if(putInPause)
- emit isInPause();
- stopIt=false;
- return;
- }
- emit readIsStopped();//will product by signal connection writeThread->endIsDetected();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] stop the read");
-}
-
-void ReadThread::startRead()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- if(tryStartRead)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] already in try start");
- return;
- }
- if(isInReadLoop)
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] double event dropped");
- else
- {
- tryStartRead=true;
- emit internalStartRead();
- }
-}
-
-void ReadThread::internalClose(bool callByTheDestructor)
-{
- /// \note never send signal here, because it's called by the destructor
- //ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- if(!fakeMode)
- file.close();
- if(!callByTheDestructor)
- emit closed();
-
- /// \note always the last of this function
- if(!fakeMode)
- isOpen.release();
-}
-
-/** \brief set block size
-\param block the new block size in KB
-\return Return true if succes */
-bool ReadThread::setBlockSize(const int blockSize)
-{
- if(blockSize<1 || blockSize>16384)
- {
- this->blockSize=blockSize*1024;
- //set the new max speed because the timer have changed
- setMaxSpeed(maxSpeed);
- return true;
- }
- else
- return false;
-}
-
-/*! \brief Set the max speed
-\param tempMaxSpeed Set the max speed in KB/s, 0 for no limit */
-int ReadThread::setMaxSpeed(const int maxSpeed)
-{
- if(this->maxSpeed==0 && maxSpeed==0 && waitNewClockForSpeed.available()>0)
- waitNewClockForSpeed.tryAcquire(waitNewClockForSpeed.available());
- this->maxSpeed=maxSpeed;
- if(this->maxSpeed>0)
- {
- int NewInterval,newMultiForBigSpeed=0;
- do
- {
- newMultiForBigSpeed++;
- NewInterval=(blockSize*newMultiForBigSpeed)/(this->maxSpeed);
- }
- while (NewInterval<ULTRACOPIER_PLUGIN_MINTIMERINTERVAL);
- if(NewInterval>ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL)
- {
- NewInterval=ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL;
- newMultiForBigSpeed=1;
- blockSize=this->maxSpeed*NewInterval;
- }
- MultiForBigSpeed=newMultiForBigSpeed;
- return NewInterval;
- }
- else
- {
- waitNewClockForSpeed.release();
- return 0;
- }
-}
-
-/// \brief For give timer every X ms
-void ReadThread::timeOfTheBlockCopyFinished()
-{
- if(waitNewClockForSpeed.available()<ULTRACOPIER_PLUGIN_NUMSEMSPEEDMANAGEMENT)
- waitNewClockForSpeed.release();
- //why not just use waitNewClockForSpeed.release() ?
-}
-
-/// \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()
-{
- emit readIsStopped();
-}
-
-/// do the checksum
-void ReadThread::startCheckSum()
-{
- emit internalStartChecksum();
-}
-
-qint64 ReadThread::getLastGoodPosition()
-{
- /*if(lastGoodPosition>file.size())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] Bug, the lastGoodPosition is greater than the file size!");
- return file.size();
- }
- else*/
- return lastGoodPosition;
-}
-
-//reopen after an error
-void ReadThread::reopen()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- if(isInReadLoop)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] try reopen where read is not finish");
- return;
- }
- stopIt=true;
- emit internalStartReopen();
-}
-
-bool ReadThread::internalReopen()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- stopIt=false;
- file.close();
- if(size_at_open!=file.size() && mtime_at_open!=QFileInfo(file).lastModified())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(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;
- }
-}
-
-//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(DebugLevel_Notice,"["+QString::number(id)+"] start");
- stopIt=true;
- seekToZero=true;
- emit checkIfIsWait();
-}
-
-void ReadThread::isInWait()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- if(seekToZero)
- {
- seekToZero=false;
- if(file.isOpen())
- seek(0);
- else
- internalOpen(true);
- emit isSeekToZeroAndWait();
- }
-}
-
-bool ReadThread::isReading()
-{
- return isInReadLoop;
-}
-
diff --git a/plugins-alternative/CopyEngine/Rsync/ReadThread.h b/plugins-alternative/CopyEngine/Rsync/ReadThread.h
deleted file mode 100644
index 1d1eabc..0000000
--- a/plugins-alternative/CopyEngine/Rsync/ReadThread.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/** \file ReadThread.h
-\brief Thread changed to open/close and read the source file
-\author alpha_one_x86
-\version 0.3
-\date 2011 */
-
-#ifndef READTHREAD_H
-#define READTHREAD_H
-
-#include <QThread>
-#include <QByteArray>
-#include <QSemaphore>
-#include <QTimer>
-#include <QDateTime>
-#include <QFileInfo>
-#include <QCryptographicHash>
-
-#include "WriteThread.h"
-#include "Environment.h"
-#include "StructEnumDefinition_CopyEngine.h"
-#include "AvancedQFile.h"
-
-/// \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 open(const QString &name,const CopyMode &mode);
- /// \brief return the error string
- QString errorString();
- //QByteArray read(qint64 position,qint64 maxSize);
- /// \brief stop the copy
- void stop();
- /// \brief put the copy in pause
- bool pause();
- /// \brief resume the copy
- void resume();
- /// \brief get the size of the source file
- qint64 size();
- /// \brief get the last good position
- qint64 getLastGoodPosition();
- /// \brief start the reading of the source file
- void startRead();
- /// \brief set the current max speed in KB/s
- int setMaxSpeed(int maxSpeed);
- /// \brief set block size in KB
- 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,
- Checksum=4
- };
- ReadStat stat;
- #endif
- /// \brief return if it's reading
- bool isReading();
- /// \brief executed at regular interval to do a speed throling
- void timeOfTheBlockCopyFinished();
- /// \brief do the fake open
- void fakeOpen();
- /// \brief do the fake readIsStarted
- void fakeReadIsStarted();
- /// \brief do the fake readIsStopped
- void fakeReadIsStopped();
- /// do the checksum
- void startCheckSum();
-public slots:
- /// \brief to reset the copy, and put at the same state when it just open
- void seekToZeroAndWait();
- void postOperation();
- /// do the checksum
- void checkSum();
-signals:
- void error();
- void isInPause();
- void opened();
- void readIsStarted();
- void readIsStopped();
- void closed();
- void isSeekToZeroAndWait();
- void checkIfIsWait();
- void resumeAfterErrorByRestartAll();
- void resumeAfterErrorByRestartAtTheLastPosition();
- void checksumFinish(const QByteArray&);
- // internal signals
- void internalStartOpen();
- void internalStartChecksum();
- void internalStartReopen();
- void internalStartRead();
- void internalStartClose();
- /// \brief To debug source
- void debugInformation(DebugLevel level,QString fonction,QString text,QString file,int ligne);
-
-private:
- QString name;
- QString errorString_internal;
- AvancedQFile file;
- volatile bool stopIt;
- CopyMode mode;
- qint64 lastGoodPosition;
- volatile int blockSize;
- volatile int maxSpeed; ///< The max speed in KB/s, 0 for no limit
- QSemaphore waitNewClockForSpeed;
- volatile int numberOfBlockCopied; ///< Multiple for count the number of block copied
- volatile int multiplicatorForBigSpeed; ///< Multiple for count the number of block needed
- volatile int MultiForBigSpeed;
- WriteThread* writeThread;
- int id;
- QSemaphore isOpen;
- volatile bool putInPause;
- volatile bool isInReadLoop;
- volatile bool seekToZero;
- volatile bool tryStartRead;
- qint64 size_at_open;
- QDateTime mtime_at_open;
- bool fakeMode;
- //internal function
- bool seek(qint64 position);/// \todo search if is use full
-private slots:
- bool internalOpen(bool resetLastGoodPosition=true);
- bool internalReopen();
- void internalRead();
- void internalClose(bool callByTheDestructor=false);
- void isInWait();
-};
-
-#endif // READTHREAD_H
diff --git a/plugins-alternative/CopyEngine/Rsync/RenamingRules.cpp b/plugins-alternative/CopyEngine/Rsync/RenamingRules.cpp
deleted file mode 100644
index a09f66a..0000000
--- a/plugins-alternative/CopyEngine/Rsync/RenamingRules.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-#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(QString firstRenamingRule,QString otherRenamingRule)
-{
- disconnectUI();
- this->firstRenamingRule=firstRenamingRule;
- this->otherRenamingRule=otherRenamingRule;
- if(!firstRenamingRule.isEmpty())
- ui->firstRenamingRule->setText(firstRenamingRule);
- else
- ui->firstRenamingRule->setText(tr("%1 - copy").arg("%name%"));
- if(!otherRenamingRule.isEmpty())
- ui->otherRenamingRule->setText(otherRenamingRule);
- else
- ui->otherRenamingRule->setText(tr("%1 - copy (%2)").arg("%name%").arg("%number%"));
- connectUI();
-}
-
-void RenamingRules::connectUI()
-{
- connect(ui->firstRenamingRule,SIGNAL(editingFinished()),this,SLOT(firstRenamingRule_haveChanged()));
- connect(ui->otherRenamingRule,SIGNAL(editingFinished()),this,SLOT(otherRenamingRule_haveChanged()));
-}
-
-void RenamingRules::disconnectUI()
-{
- disconnect(ui->firstRenamingRule,SIGNAL(editingFinished()),this,SLOT(firstRenamingRule_haveChanged()));
- disconnect(ui->otherRenamingRule,SIGNAL(editingFinished()),this,SLOT(otherRenamingRule_haveChanged()));
-}
-
-void RenamingRules::firstRenamingRule_haveChanged()
-{
- QString newValue=ui->firstRenamingRule->text();
- if(newValue==tr("%1 - copy").arg("%name%"))
- newValue="";
- if(newValue==firstRenamingRule)
- return;
- firstRenamingRule=newValue;
- emit sendNewRenamingRules(firstRenamingRule,otherRenamingRule);
-}
-
-void RenamingRules::otherRenamingRule_haveChanged()
-{
- QString newValue=ui->otherRenamingRule->text();
- if(newValue==tr("%1 - copy (%2)").arg("%name%").arg("%number%"))
- newValue="";
- if(newValue==otherRenamingRule)
- return;
- otherRenamingRule=newValue;
- emit sendNewRenamingRules(firstRenamingRule,otherRenamingRule);
-}
-
-void RenamingRules::newLanguageLoaded()
-{
- ui->retranslateUi(this);
- setRenamingRules(firstRenamingRule,otherRenamingRule);
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/RenamingRules.h b/plugins-alternative/CopyEngine/Rsync/RenamingRules.h
deleted file mode 100644
index 2fd9580..0000000
--- a/plugins-alternative/CopyEngine/Rsync/RenamingRules.h
+++ /dev/null
@@ -1,34 +0,0 @@
-#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(QString firstRenamingRule,QString otherRenamingRule);
- void newLanguageLoaded();
-private:
- Ui::RenamingRules *ui;
- void connectUI();
- void disconnectUI();
- QString firstRenamingRule;
- QString otherRenamingRule;
-private slots:
- void on_buttonBox_clicked(QAbstractButton *button);
- void firstRenamingRule_haveChanged();
- void otherRenamingRule_haveChanged();
-signals:
- void sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule);
-};
-
-#endif // RENAMINGRULES_H
diff --git a/plugins-alternative/CopyEngine/Rsync/RenamingRules.ui b/plugins-alternative/CopyEngine/Rsync/RenamingRules.ui
deleted file mode 100644
index 9e84f4b..0000000
--- a/plugins-alternative/CopyEngine/Rsync/RenamingRules.ui
+++ /dev/null
@@ -1,129 +0,0 @@
-<?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>303</width>
- <height>213</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="margin">
- <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</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string extracomment=" 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;/p&gt;&lt;/body&gt;&lt;/html&gt;</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%)</string>
- </property>
- </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;/p&gt;&lt;p&gt;&lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
- </property>
- </widget>
- </item>
- </layout>
- </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-alternative/CopyEngine/Rsync/RmPath.cpp b/plugins-alternative/CopyEngine/Rsync/RmPath.cpp
deleted file mode 100644
index 636b5ba..0000000
--- a/plugins-alternative/CopyEngine/Rsync/RmPath.cpp
+++ /dev/null
@@ -1,179 +0,0 @@
-#include "RmPath.h"
-
-RmPath::RmPath()
-{
- stopIt=false;
- waitAction=false;
- setObjectName("RmPath");
- moveToThread(this);
- start();
-}
-
-RmPath::~RmPath()
-{
- stopIt=true;
- quit();
- wait();
-}
-
-void RmPath::addPath(const QString &path,const bool &toSync)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start: "+path);
- if(stopIt)
- return;
- emit internalStartAddPath(path,toSync);
-}
-
-void RmPath::skip()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- emit internalStartSkip();
-}
-
-void RmPath::retry()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- emit internalStartRetry();
-}
-
-void RmPath::run()
-{
- connect(this,SIGNAL(internalStartAddPath(QString,bool)),this,SLOT(internalAddPath(QString,bool)),Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartDoThisPath()),this,SLOT(internalDoThisPath()),Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartSkip()),this,SLOT(internalSkip()),Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartRetry()),this,SLOT(internalRetry()),Qt::QueuedConnection);
- exec();
-}
-
-void RmPath::internalDoThisPath()
-{
- if(waitAction || pathList.isEmpty())
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start: "+pathList.first());
- if(!toSyncList.first())
- {
- if(!rmpath(pathList.first(),false))
- {
- if(stopIt)
- return;
- waitAction=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"Unable to remove the folder: "+pathList.first());
- emit errorOnFolder(pathList.first(),tr("Unable to remove the folder"));
- return;
- }
- }
- else
- {
- if(QFileInfo(pathList.first()).isDir())
- {
- if(!rmpath(pathList.first(),true))
- {
- if(stopIt)
- return;
- waitAction=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"Unable to remove the folder: "+pathList.first());
- emit errorOnFolder(pathList.first(),tr("Unable to remove the folder"));
- return;
- }
- }
- else if(!rmfile(pathList.first()))
- {
- if(stopIt)
- return;
- waitAction=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"Unable to remove the file: "+pathList.first());
- emit errorOnFolder(pathList.first(),tr("Unable to remove the file"));
- return;
- }
- }
- pathList.removeFirst();
- toSyncList.removeFirst();
- emit firstFolderFinish();
- checkIfCanDoTheNext();
-}
-
-bool RmPath::rmfile(QString filePath)
-{
- QFile file(filePath);
- if(!file.remove())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"unable to remove the file: "+file.fileName()+", error: "+file.errorString());
- return false;
- }
- else
- return true;
-}
-
-/** remplace QDir::rmpath() because it return false if the folder not exists
- and seam bug with parent folder */
-bool RmPath::rmpath(const QDir &dir,const bool &toSync)
-{
- if(!dir.exists())
- return true;
- bool allHaveWork=true;
- QFileInfoList list = dir.entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System,QDir::DirsFirst);
- for (int i = 0; i < list.size(); ++i)
- {
- QFileInfo fileInfo(list.at(i));
- if(!fileInfo.isDir())
- {
- if(toSync)
- {
- if(!rmfile(fileInfo.absoluteFilePath()))
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"unable to remove a file: "+fileInfo.fileName());
- allHaveWork=false;
- }
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"found a file: "+fileInfo.fileName());
- allHaveWork=false;
- }
- }
- else
- {
- //return the fonction for scan the new folder
- if(!rmpath(dir.absolutePath()+'/'+fileInfo.fileName()+'/',toSync))
- allHaveWork=false;
- }
- }
- if(!allHaveWork)
- return false;
- allHaveWork=dir.rmdir(dir.absolutePath());
- if(!allHaveWork)
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"unable to remove the folder: "+dir.absolutePath());
- return allHaveWork;
-}
-
-void RmPath::internalAddPath(const QString &path,const bool &toSync)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start: "+path);
- pathList << path;
- toSyncList << toSync;
- if(!waitAction)
- checkIfCanDoTheNext();
-}
-
-void RmPath::checkIfCanDoTheNext()
-{
- if(!waitAction && !stopIt && pathList.size()>0)
- emit internalStartDoThisPath();
-}
-
-void RmPath::internalSkip()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- waitAction=false;
- pathList.removeFirst();
- emit firstFolderFinish();
- checkIfCanDoTheNext();
-}
-
-void RmPath::internalRetry()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- waitAction=false;
- checkIfCanDoTheNext();
-}
-
diff --git a/plugins-alternative/CopyEngine/Rsync/RmPath.h b/plugins-alternative/CopyEngine/Rsync/RmPath.h
deleted file mode 100644
index c3cd77b..0000000
--- a/plugins-alternative/CopyEngine/Rsync/RmPath.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/** \file RmPath.h
-\brief Remove the path given as queued rmpath
-\author alpha_one_x86
-\version 0.3
-\date 2011 */
-
-#ifndef RMPATH_H
-#define RMPATH_H
-
-#include <QThread>
-#include <QFileInfo>
-#include <QString>
-#include <QSemaphore>
-#include <QStringList>
-#include <QDir>
-
-#include "Environment.h"
-
-/// \brief Remove the path given as queued rmpath
-class RmPath : public QThread
-{
- Q_OBJECT
-public:
- explicit RmPath();
- ~RmPath();
- /// \brief add new path to remove
- void addPath(const QString &path,const bool &toSync);
-signals:
- void errorOnFolder(const QFileInfo &,const QString &);
- void firstFolderFinish();
- void internalStartAddPath(const QString &path,const bool &toSync);
- void internalStartDoThisPath();
- void internalStartSkip();
- void internalStartRetry();
- void debugInformation(const DebugLevel &level,const QString &fonction,const QString &text,const QString &file,const int &ligne);
-public slots:
- void skip();
- void retry();
-private:
- void run();
- bool waitAction;
- bool stopIt;
- bool skipIt;
- QStringList pathList;
- QList<bool> toSyncList;
- void checkIfCanDoTheNext();
- QDir dir;
- bool rmpath(const QDir &dir,const bool &toSync);
- bool rmfile(QString filePath);
-private slots:
- void internalDoThisPath();
- void internalAddPath(const QString &path,const bool &toSync);
- void internalSkip();
- void internalRetry();
-};
-
-
-#endif // RMPATH_H
diff --git a/plugins-alternative/CopyEngine/Rsync/StructEnumDefinition_CopyEngine.h b/plugins-alternative/CopyEngine/Rsync/StructEnumDefinition_CopyEngine.h
deleted file mode 100644
index 90af91b..0000000
--- a/plugins-alternative/CopyEngine/Rsync/StructEnumDefinition_CopyEngine.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/** \file StructEnumDefinition_CopyEngine.h
-\brief Define the structure and enumeration used in the copy engine
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include <QString>
-#include <QRegExp>
-
-#ifndef STRUCTDEF_COPYENGINE_H
-#define STRUCTDEF_COPYENGINE_H
-
-/// \brief Define action if file exists
-enum FileExistsAction
-{
- FileExists_NotSet,
- FileExists_Cancel,
- FileExists_Skip,
- FileExists_Overwrite,
- FileExists_OverwriteIfNewer,
- FileExists_OverwriteIfNotSameModificationDate,
- FileExists_Rename
-};
-
-/// \brief Define action if file error
-enum FileErrorAction
-{
- FileError_NotSet,
- FileError_Cancel,
- FileError_Skip,
- FileError_Retry,
- FileError_PutToEndOfTheList
-};
-
-/// \brief to have the transfer status
-enum TransferStat
-{
- TransferStat_Idle=0,
- TransferStat_PreOperation=1,
- TransferStat_WaitForTheTransfer=2,
- TransferStat_Transfer=3,
- TransferStat_Checksum=4,
- 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,
- FolderExists_Cancel,
- FolderExists_Merge,
- FolderExists_Skip,
- FolderExists_Rename
-};
-
-enum SearchType
-{
- SearchType_rawText,
- SearchType_simpleRegex,
- SearchType_perlRegex,
-};
-
-enum ApplyOn
-{
- ApplyOn_file,
- ApplyOn_fileAndFolder,
- ApplyOn_folder,
-};
-
-/** to store into different way the filter rules to be exported */
-struct Filters_rules
-{
- QString search_text;
- SearchType search_type;
- ApplyOn apply_on;
- bool need_match_all;
- QRegExp regex;
-};
-
-#endif // STRUCTDEF_COPYENGINE_H
diff --git a/plugins-alternative/CopyEngine/Rsync/TransferThread.cpp b/plugins-alternative/CopyEngine/Rsync/TransferThread.cpp
deleted file mode 100644
index 5557a1e..0000000
--- a/plugins-alternative/CopyEngine/Rsync/TransferThread.cpp
+++ /dev/null
@@ -1,1252 +0,0 @@
-//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"
-
-#ifdef Q_CC_GNU
-//this next header is needed to change file time/date under gcc
-#include <utime.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/stat.h>
-#endif
-
-#ifndef Q_OS_UNIX
-#include <windows.h>
-#endif
-
-TransferThread::TransferThread()
-{
- start();
- moveToThread(this);
- needSkip = false;
- transfer_stat = TransferStat_Idle;
- stopIt = false;
- fileExistsAction = FileExists_NotSet;
- alwaysDoFileExistsAction= FileExists_NotSet;
- readError = false;
- writeError = false;
- rsync = false;
- this->mkpathTransfer = mkpathTransfer;
- readThread.setWriteThread(&writeThread);
-
- connect(&clockForTheCopySpeed, SIGNAL(timeout()), this, SLOT(timeOfTheBlockCopyFinished()));
- maxTime=QDateTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1));
-}
-
-TransferThread::~TransferThread()
-{
- exit();
- disconnect(&readThread);
- disconnect(&writeThread);
- disconnect(this);
- wait();
-}
-
-void TransferThread::run()
-{
- //ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start: "+QString::number((qint64)QThread::currentThreadId()));
- transfer_stat = TransferStat_Idle;
- stopIt = false;
- fileExistsAction = FileExists_NotSet;
- alwaysDoFileExistsAction= FileExists_NotSet;
- //the error push
- connect(&readThread,SIGNAL(error()), this, SLOT(getReadError()), Qt::QueuedConnection);
- connect(&writeThread,SIGNAL(error()), this, SLOT(getWriteError()), Qt::QueuedConnection);
- //the thread change operation
- connect(this,SIGNAL(internalStartPreOperation()), this, SLOT(preOperation()), Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartPostOperation()), this, SLOT(postOperation()), Qt::QueuedConnection);
- //the state change operation
- //connect(&readThread,SIGNAL(readIsStopped()), &readThread, SLOT(postOperation()), Qt::QueuedConnection);//commented to do the checksum
- connect(&readThread,SIGNAL(opened()), this, SLOT(readIsReady()), Qt::QueuedConnection);
- connect(&writeThread,SIGNAL(opened()), this, SLOT(writeIsReady()), Qt::QueuedConnection);
- connect(&readThread,SIGNAL(readIsStopped()), this, SLOT(readIsStopped()), Qt::QueuedConnection);
- connect(&writeThread,SIGNAL(writeIsStopped()), this, SLOT(writeIsStopped()), Qt::QueuedConnection);
- connect(&readThread,SIGNAL(readIsStopped()), &writeThread, SLOT(endIsDetected()), Qt::QueuedConnection);
- //connect(&writeThread,SIGNAL(writeIsStopped()), &writeThread, SLOT(postOperation()), Qt::QueuedConnection);//commented to do the checksum
- connect(&readThread,SIGNAL(closed()), this, SLOT(readIsClosed()), Qt::QueuedConnection);
- connect(&writeThread,SIGNAL(closed()), this, SLOT(writeIsClosed()), Qt::QueuedConnection);
- connect(&writeThread,SIGNAL(reopened()), this, SLOT(writeThreadIsReopened()), Qt::QueuedConnection);
- connect(&readThread,SIGNAL(checksumFinish(QByteArray)), this, SLOT(readChecksumFinish(QByteArray)), Qt::QueuedConnection);
- connect(&writeThread,SIGNAL(checksumFinish(QByteArray)),this, SLOT(writeChecksumFinish(QByteArray)), Qt::QueuedConnection);
- //error management
- connect(&readThread,SIGNAL(isSeekToZeroAndWait()), this, SLOT(readThreadIsSeekToZeroAndWait()), Qt::QueuedConnection);
- connect(&readThread,SIGNAL(resumeAfterErrorByRestartAtTheLastPosition()), this, SLOT(readThreadResumeAfterError()), Qt::QueuedConnection);
- connect(&readThread,SIGNAL(resumeAfterErrorByRestartAll()), &writeThread, SLOT(flushAndSeekToZero()), Qt::QueuedConnection);
- connect(&writeThread,SIGNAL(flushedAndSeekedToZero()), this, SLOT(readThreadResumeAfterError()), Qt::QueuedConnection);
- connect(this,SIGNAL(internalTryStartTheTransfer()), this, SLOT(internalStartTheTransfer()), Qt::QueuedConnection);
-
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- connect(&readThread,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)),this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)),Qt::QueuedConnection);
- connect(&writeThread,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)),this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)),Qt::QueuedConnection);
- #endif
-
- exec();
-}
-
-TransferStat TransferThread::getStat()
-{
- return transfer_stat;
-}
-
-void TransferThread::startTheTransfer()
-{
- emit internalTryStartTheTransfer();
-}
-
-void TransferThread::internalStartTheTransfer()
-{
- if(transfer_stat==TransferStat_Idle)
- {
- if(mode!=Move)
- {
- /// \bug can pass here because in case of direct move on same media, it return to idle stat directly
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] can't start transfert at idle");
- }
- return;
- }
- if(transfer_stat==TransferStat_PostOperation)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] can't start transfert at PostOperation");
- return;
- }
- if(transfer_stat==TransferStat_Transfer)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] can't start transfert at Transfer");
- return;
- }
- if(canStartTransfer)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] canStartTransfer is already set to true");
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] check how start the transfer");
- canStartTransfer=true;
- if(readIsReadyVariable && writeIsReadyVariable)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start directly the transfer");
- ifCanStartTransfer();
- }
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start the transfer as delayed");
-}
-
-void TransferThread::setFiles(const QString &source,const qint64 &size,const QString &destination,const CopyMode &mode)
-{
- if(transfer_stat!=TransferStat_Idle)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] already used, source: "+source+", destination: "+destination);
- return;
- }
- //to prevent multiple file alocation into ListThread::doNewActions_inode_manipulation()
- transfer_stat = TransferStat_PreOperation;
- //emit pushStat(stat,transferId);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start, source: "+source+", destination: "+destination);
- this->source = source;
- this->destination = destination;
- this->mode = mode;
- this->size = size;
- fileExistsAction = FileExists_NotSet;
- canStartTransfer = false;
- sended_state_preOperationStopped= false;
- canBeMovedDirectlyVariable = false;
- fileContentError = false;
- resetExtraVariable();
- emit internalStartPreOperation();
-}
-
-void TransferThread::setFileExistsAction(const FileExistsAction &action)
-{
- if(transfer_stat!=TransferStat_PreOperation)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] already used, source: "+source+", destination: "+destination);
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] action: "+QString::number(action));
- if(action!=FileExists_Rename)
- fileExistsAction = action;
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] rename at the wrong part, source: "+source+", destination: "+destination);
- if(action==FileExists_Skip)
- {
- skip();
- return;
- }
- resetExtraVariable();
- emit internalStartPreOperation();
-}
-
-void TransferThread::setFileRename(const QString &nameForRename)
-{
- if(transfer_stat!=TransferStat_PreOperation)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] already used, source: "+source+", destination: "+destination);
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] nameForRename: "+nameForRename);
- destinationInfo.setFile(destination);
- destination=destinationInfo.absolutePath();
- destination+=QDir::separator()+nameForRename;
- destinationInfo.setFile(destination);
- fileExistsAction = FileExists_NotSet;
- resetExtraVariable();
- emit internalStartPreOperation();
-}
-
-void TransferThread::setAlwaysFileExistsAction(const FileExistsAction &action)
-{
- //ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] action to do always: "+QString::number(action));
- alwaysDoFileExistsAction=action;
-}
-
-void TransferThread::resetExtraVariable()
-{
- sended_state_readStopped = false;
- sended_state_writeStopped = false;
- writeError = false;
- readError = false;
- readIsReadyVariable = false;
- writeIsReadyVariable = false;
- readIsFinishVariable = false;
- writeIsFinishVariable = false;
- readIsClosedVariable = false;
- writeIsClosedVariable = false;
- needSkip = false;
- retry = false;
- readIsOpenVariable = false;
- writeIsOpenVariable = false;
-}
-
-void TransferThread::preOperation()
-{
- if(transfer_stat!=TransferStat_PreOperation)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] already used, source: "+source+", destination: "+destination);
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- needRemove=false;
- sourceInfo.setFile(source);
- destinationInfo.setFile(destination);
- if(isSame())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] is same"+source);
- return;
- }
- if(destinationExists())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] destination exists: "+source);
- return;
- }
- if(canBeMovedDirectly())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] need moved directly: "+source);
- canBeMovedDirectlyVariable=true;
- readThread.fakeOpen();
- writeThread.fakeOpen();
- return;
- }
- tryOpen();
-}
-
-void TransferThread::tryOpen()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start source and destination: "+source+" and "+destination);
- if(!readIsOpenVariable)
- {
- readError=false;
- readThread.open(source,mode);
- }
- if(!writeIsOpenVariable)
- {
- writeError=false;
- writeThread.open(destination,size,osBuffer && (!osBufferLimited || (osBufferLimited && size<osBufferLimit)));
- }
-}
-
-bool TransferThread::isSame()
-{
- //check if source and destination is not the same
- if(sourceInfo==destinationInfo)
- {
- emit fileAlreadyExists(sourceInfo,destinationInfo,true);
- return true;
- }
- return false;
-}
-
-bool TransferThread::destinationExists()
-{
- //check if destination exists
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] overwrite: "+QString::number(fileExistsAction)+", always action: "+QString::number(alwaysDoFileExistsAction));
- if(alwaysDoFileExistsAction==FileExists_Overwrite || rsync || readError || writeError)
- return false;
- if(destinationInfo.exists())
- {
- if(fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_Skip)
- {
- transfer_stat=TransferStat_Idle;
- emit postOperationStopped();
- return true;
- }
- if(alwaysDoFileExistsAction==FileExists_Rename)
- {
- QString absolutePath=destinationInfo.absolutePath();
- QString fileName=destinationInfo.fileName();
- QString suffix="";
- QString newFileName;
- //resolv the suffix
- if(fileName.contains(QRegExp("^(.*)(\\.[a-z0-9]+)$")))
- {
- suffix=fileName;
- suffix.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\2");
- fileName.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\1");
- }
- //resolv the new name
- int num=1;
- do
- {
- if(num==1)
- {
- if(firstRenamingRule=="")
- newFileName=tr("%1 - copy").arg(fileName);
- else
- {
- newFileName=firstRenamingRule;
- newFileName.replace("%name%",fileName);
- }
- }
- else
- {
- if(otherRenamingRule=="")
- newFileName=tr("%1 - copy (%2)").arg(fileName).arg(num);
- else
- {
- newFileName=otherRenamingRule;
- newFileName.replace("%name%",fileName);
- newFileName.replace("%number%",QString::number(num));
- }
- }
- destination=absolutePath+QDir::separator()+newFileName+suffix;
- destinationInfo.setFile(destination);
- num++;
- }
- while(destinationInfo.exists());
- return false;
- }
- if(fileExistsAction==FileExists_OverwriteIfNewer || (fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_OverwriteIfNewer))
- {
- if(destinationInfo.lastModified()<sourceInfo.lastModified())
- return false;
- else
- {
- transfer_stat=TransferStat_Idle;
- emit postOperationStopped();
- return true;
- }
- }
- if(fileExistsAction==FileExists_OverwriteIfNotSameModificationDate || (fileExistsAction==FileExists_NotSet && alwaysDoFileExistsAction==FileExists_OverwriteIfNotSameModificationDate))
- {
- if(destinationInfo.lastModified()!=sourceInfo.lastModified())
- return false;
- else
- {
- transfer_stat=TransferStat_Idle;
- emit postOperationStopped();
- return true;
- }
- }
- if(fileExistsAction==FileExists_NotSet)
- {
- emit fileAlreadyExists(sourceInfo,destinationInfo,false);
- return true;
- }
- }
- return false;
-}
-
-void TransferThread::tryMoveDirectly()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start the system move");
-
- //move if on same mount point
- QFile sourceFile(sourceInfo.absoluteFilePath());
- QFile destinationFile(destinationInfo.absoluteFilePath());
- if(destinationFile.exists() && !destinationFile.remove())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+destinationFile.fileName()+", error: "+destinationFile.errorString());
- emit errorOnFile(destinationInfo,destinationFile.errorString());
- return;
- }
- QDir dir(destinationInfo.absolutePath());
- {
- mkpathTransfer->acquire();
- if(!dir.exists())
- dir.mkpath(destinationInfo.absolutePath());
- mkpathTransfer->release();
- }
- if(!sourceFile.rename(destinationFile.fileName()))
- {
- if(sourceFile.exists())
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("file not not exists %1: %2, error: %3").arg(sourceFile.fileName()).arg(destinationFile.fileName()).arg(sourceFile.errorString()));
- else if(!dir.exists())
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("destination folder not exists %1: %2, error: %3").arg(sourceFile.fileName()).arg(destinationFile.fileName()).arg(sourceFile.errorString()));
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("unable to do real move %1: %2, error: %3").arg(sourceFile.fileName()).arg(destinationFile.fileName()).arg(sourceFile.errorString()));
- emit errorOnFile(sourceFile,sourceFile.errorString());
- return;
- }
- readThread.fakeReadIsStarted();
- writeThread.fakeWriteIsStarted();
- readThread.fakeReadIsStopped();
- writeThread.fakeWriteIsStopped();
-}
-
-bool TransferThread::canBeMovedDirectly()
-{
- //move if on same mount point
- #if defined (Q_OS_LINUX) || defined (Q_OS_WIN32)
- if(mode!=Move)
- return false;
- if(mountSysPoint.size()==0)
- return false;
- if(getDrive(destinationInfo.fileName())==getDrive(sourceInfo.fileName()))
- return true;
- #endif
- return false;
-}
-
-void TransferThread::readIsReady()
-{
- if(readIsReadyVariable)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] double event dropped");
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- readIsReadyVariable=true;
- readIsOpenVariable=true;
- readIsClosedVariable=false;
- ifCanStartTransfer();
-}
-
-void TransferThread::ifCanStartTransfer()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] readIsReadyVariable: "+QString::number(readIsReadyVariable)+", writeIsReadyVariable: "+QString::number(writeIsReadyVariable));
- if(readIsReadyVariable && writeIsReadyVariable)
- {
- transfer_stat=TransferStat_WaitForTheTransfer;
- sended_state_readStopped = false;
- sended_state_writeStopped = false;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] stat=WaitForTheTransfer");
- if(!sended_state_preOperationStopped)
- {
- sended_state_preOperationStopped=true;
- emit preOperationStopped();
- }
- if(canStartTransfer)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] stat=Transfer");
- transfer_stat=TransferStat_Transfer;
- if(!canBeMovedDirectlyVariable)
- {
- needRemove=true;
- readThread.startRead();
- }
- else
- tryMoveDirectly();
- emit pushStat(transfer_stat,transferId);
- }
- //else
- //emit pushStat(stat,transferId);
- }
-}
-
-void TransferThread::writeIsReady()
-{
- if(writeIsReadyVariable)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] double event dropped");
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- writeIsReadyVariable=true;
- writeIsOpenVariable=true;
- writeIsClosedVariable=false;
- ifCanStartTransfer();
-}
-
-
-//set the copy info and options before runing
-void TransferThread::setRightTransfer(const bool doRightTransfer)
-{
- this->doRightTransfer=doRightTransfer;
-}
-
-//set keep date
-void TransferThread::setKeepDate(const bool keepDate)
-{
- this->keepDate=keepDate;
-}
-
-//set the current max speed in KB/s
-void TransferThread::setMaxSpeed(int maxSpeed)
-{
- int interval=readThread.setMaxSpeed(maxSpeed);
- writeThread.setMaxSpeed(maxSpeed);
- if(maxSpeed>0)
- {
- clockForTheCopySpeed.setInterval(interval);
- if(!clockForTheCopySpeed.isActive())//seam useless !this->isFinished()
- clockForTheCopySpeed.start();
- }
- else
- {
- if(clockForTheCopySpeed.isActive())
- clockForTheCopySpeed.stop();
- }
-}
-
-//set block size in KB
-bool TransferThread::setBlockSize(const unsigned int blockSize)
-{
- this->blockSize=blockSize;
- return readThread.setBlockSize(blockSize) && writeThread.setBlockSize(blockSize);
-}
-
-//pause the copy
-void TransferThread::pause()
-{
- if(transfer_stat==TransferStat_Idle)
- return;
- readThread.pause();
-}
-
-//resume the copy
-void TransferThread::resume()
-{
- if(transfer_stat==TransferStat_Idle)
- return;
- readThread.resume();
-}
-
-//stop the current copy
-void TransferThread::stop()
-{
- stopIt=true;
- if(transfer_stat==TransferStat_Idle)
- return;
- readThread.stop();
- writeThread.stop();
-}
-
-void TransferThread::readIsFinish()
-{
- if(readIsFinishVariable)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] double event dropped");
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- readIsFinishVariable=true;
- canStartTransfer=false;
- //check here if need start checksuming or not
- real_doChecksum=doChecksum && (!checksumOnlyOnError || fileContentError);
- if(real_doChecksum)
- {
- readIsFinishVariable=false;
- transfer_stat=TransferStat_Checksum;
- sourceChecksum=QByteArray();
- destinationChecksum=QByteArray();
- readThread.startCheckSum();
- }
- else
- {
- transfer_stat=TransferStat_PostTransfer;
- readThread.postOperation();
- }
- emit pushStat(transfer_stat,transferId);
-}
-
-void TransferThread::writeIsFinish()
-{
- if(writeIsFinishVariable)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] double event dropped");
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- writeIsFinishVariable=true;
- //check here if need start checksuming or not
- if(real_doChecksum)
- {
- writeIsFinishVariable=false;
- transfer_stat=TransferStat_Checksum;
- writeThread.startCheckSum();
- }
- else
- writeThread.postOperation();
-}
-
-void TransferThread::readChecksumFinish(const QByteArray& checksum)
-{
- sourceChecksum=checksum;
- compareChecksum();
-}
-
-void TransferThread::writeChecksumFinish(const QByteArray& checksum)
-{
- destinationChecksum=checksum;
- compareChecksum();
-}
-
-void TransferThread::compareChecksum()
-{
- if(sourceChecksum.size()==0)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] the checksum of source is missing");
- return;
- }
- if(destinationChecksum.size()==0)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] the checksum of destination is missing");
- return;
- }
- if(sourceChecksum==destinationChecksum)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] the checksum match");
- readThread.postOperation();
- writeThread.postOperation();
- transfer_stat=TransferStat_PostTransfer;
- emit pushStat(transfer_stat,transferId);
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] the checksum not match");
- //emit error here, and wait to resume
- emit errorOnFile(destinationInfo,tr("The checksums not match"));
- }
-}
-
-void TransferThread::readIsClosed()
-{
- if(readIsClosedVariable)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] double event dropped");
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- readIsClosedVariable=true;
- checkIfAllIsClosed();
-}
-
-void TransferThread::writeIsClosed()
-{
- if(writeIsClosedVariable)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] double event dropped");
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- writeIsClosedVariable=true;
- checkIfAllIsClosed();
-}
-
-bool TransferThread::checkIfAllIsClosed()
-{
- if((readError || writeError) && !needSkip)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] resolve error before progress");
- return false;
- }
- if((!readIsReadyVariable || readIsClosedVariable) && (!writeIsReadyVariable || writeIsClosedVariable))
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] emit internalStartPostOperation() to do the real post operation");
- transfer_stat=TransferStat_PostOperation;
- //emit pushStat(stat,transferId);
- emit internalStartPostOperation();
- return true;
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] "+QString("wait self close: readIsReadyVariable: %1, readIsClosedVariable: %2, writeIsReadyVariable: %3, writeIsClosedVariable: %4")
- .arg(readIsReadyVariable)
- .arg(readIsClosedVariable)
- .arg(writeIsReadyVariable)
- .arg(writeIsClosedVariable)
- );
- return false;
- }
-}
-
-/// \todo found way to retry that's
-/// \todo the rights copy
-void TransferThread::postOperation()
-{
- if(transfer_stat!=TransferStat_PostOperation)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] need be in transfer, source: "+source+", destination: "+destination+", stat:"+QString::number(transfer_stat));
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- //all except closing
- if((readError || writeError) && !needSkip)//normally useless by checkIfAllIsFinish()
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] resume after error");
- return;
- }
-
- if(!needSkip)
- {
- if(!doFilePostOperation())
- return;
-
- //remove source in moving mode
- if(mode==Move && !canBeMovedDirectlyVariable)
- {
- if(QFile::exists(destination))
- {
- QFile sourceFile(source);
- if(!sourceFile.remove())
- {
- emit errorOnFile(sourceInfo,sourceFile.errorString());
- return;
- }
- }
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] try remove source but destination not exists!");
- }
- }
- else//do difference skip a file and skip this error case
- {
- if(needRemove && QFile::exists(destination))
- {
- QFile destinationFile(destination);
- if(!destinationFile.remove())
- {
- //emit errorOnFile(sourceInfo,destinationFile.errorString());
- //return;
- }
- }
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] try remove destination but not exists!");
- }
- transfer_stat=TransferStat_Idle;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] emit postOperationStopped()");
- emit postOperationStopped();
-}
-
-bool TransferThread::doFilePostOperation()
-{
- //do operation needed by copy
- if(!canBeMovedDirectlyVariable)
- {
- //set the time if no write thread used
- if(keepDate)
- changeFileDateTime(destination,source);//can't do that's after move because after move the source not exist
- /*
- ignore it, because need correct management, mainly with move
- if(!)
- {
- emit errorOnFile(destinationInfo,tr("Unable to change the date"));//destination.errorString()
- return false;
- }*/
- }
-
- if(stopIt)
- return false;
-
- return true;
-}
-
-//////////////////////////////////////////////////////////////////
-/////////////////////// Error management /////////////////////////
-//////////////////////////////////////////////////////////////////
-
-void TransferThread::getWriteError()
-{
- if(writeError)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] already in write error!");
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- fileContentError = true;
- writeError = true;
- writeIsReadyVariable = false;
- writeError_source_seeked = false;
- writeError_destination_reopened = false;
- emit errorOnFile(destinationInfo,writeThread.errorString());
-}
-
-void TransferThread::getReadError()
-{
- if(readError)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] already in read error!");
- return;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- fileContentError = true;
- readError = true;
- writeIsReadyVariable = false;
- readIsReadyVariable = false;
- emit errorOnFile(sourceInfo,readThread.errorString());
-}
-
-//retry after error
-void TransferThread::retryAfterError()
-{
- //opening error
- if(transfer_stat==TransferStat_PreOperation)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] is not idle, source: "+source+", destination: "+destination+", stat: "+QString::number(transfer_stat));
- tryOpen();
- return;
- }
- //data streaming error
- if(transfer_stat!=TransferStat_PostOperation && transfer_stat!=TransferStat_Transfer && transfer_stat!=TransferStat_Checksum)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"["+QString::number(id)+"] is not idle, source: "+source+", destination: "+destination+", stat: "+QString::number(transfer_stat));
- return;
- }
- if(canBeMovedDirectlyVariable)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] retry the system move");
- tryMoveDirectly();
- return;
- }
- if(transfer_stat==TransferStat_Checksum)
- {
- if(writeError)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start and resume the write error");
- writeThread.reopen();
- }
- else if(readError)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start and resume the read error");
- readThread.reopen();
- }
- else //only checksum difference
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] retry all the transfer");
- canStartTransfer=true;
- ifCanStartTransfer();
- }
- return;
- }
- if(writeError)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start and resume the write error");
- readThread.seekToZeroAndWait();
- writeThread.reopen();
- }
- else if(readError)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start and resume the read error");
- readThread.reopen();
- }
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] unknow error resume");
-}
-
-void TransferThread::writeThreadIsReopened()
-{
- if(writeError_destination_reopened)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] double event dropped");
- return;
- }
- writeError_destination_reopened=true;
- if(transfer_stat==TransferStat_Checksum)
- {
- writeThread.startCheckSum();
- return;
- }
- if(writeError_source_seeked && writeError_destination_reopened)
- resumeTransferAfterWriteError();
-}
-
-void TransferThread::readThreadIsSeekToZeroAndWait()
-{
- if(writeError_source_seeked)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] double event dropped");
- return;
- }
- writeError_source_seeked=true;
- if(writeError_source_seeked && writeError_destination_reopened)
- resumeTransferAfterWriteError();
-}
-
-void TransferThread::resumeTransferAfterWriteError()
-{
- writeError=false;
-/********************************
- if(canStartTransfer)
- readThread.startRead();
-useless, because the open destination event
-will restart the transfer as normal
-*********************************/
-/*********************************
-if(!canStartTransfer)
- stat=WaitForTheTransfer;
-useless because already do at open event
-**********************************/
- //if is in wait
- if(!canStartTransfer)
- emit checkIfItCanBeResumed();
-}
-
-void TransferThread::readThreadResumeAfterError()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- readError=false;
- writeIsReady();
- readIsReady();
-}
-
-//////////////////////////////////////////////////////////////////
-///////////////////////// Normal event ///////////////////////////
-//////////////////////////////////////////////////////////////////
-
-void TransferThread::readIsStopped()
-{
- if(!sended_state_readStopped)
- {
- sended_state_readStopped=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] emit readIsStopped()");
- emit readStopped();
- }
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] drop dual read stopped");
- readIsFinish();
-}
-
-void TransferThread::writeIsStopped()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- if(!sended_state_writeStopped)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] emit writeStopped()");
- sended_state_writeStopped=true;
- emit writeStopped();
- }
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] double event dropped");
- writeIsFinish();
-}
-
-void TransferThread::timeOfTheBlockCopyFinished()
-{
- readThread.timeOfTheBlockCopyFinished();
-}
-
-//get drive of an file or folder
-QString TransferThread::getDrive(QString fileOrFolder)
-{
- for (int i = 0; i < mountSysPoint.size(); ++i) {
- if(fileOrFolder.startsWith(mountSysPoint.at(i)))
- return mountSysPoint.at(i);
- }
- //if unable to locate the right mount point
- return "";
-}
-
-//set drive list, used in getDrive()
-void TransferThread::setDrive(QStringList drives)
-{
- mountSysPoint=drives;
-}
-
-//fonction to edit the file date time
-bool TransferThread::changeFileDateTime(const QString &source,const QString &destination)
-{
- /*
- if(maxTime>=sourceInfo.lastModified())
- return;
- */
- /** 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
- struct stat info;
- stat(source.toLatin1().data(),&info);
- 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
- utimbuf butime;
- butime.actime=actime;
- butime.modtime=modtime;
- //creation time not exists into unix world
- Q_UNUSED(ctime)
- return utime(destination.toLatin1().data(),&butime)==0;
- #else //mainly for mac
- QFileInfo fileInfo(destination);
- time_t ctime=fileInfo.created().toTime_t();
- time_t actime=fileInfo.lastRead().toTime_t();
- time_t modtime=fileInfo.lastModified().toTime_t();
- //this function avalaible on unix and mingw
- utimbuf butime;
- butime.actime=actime;
- butime.modtime=modtime;
- //creation time not exists into unix world
- Q_UNUSED(ctime)
- return utime(destination.toLatin1().data(),&butime)==0;
- #endif
- #else
- #ifdef Q_OS_WIN32
- #ifdef ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY
- struct __stat64 info;
- _stat64(source.toLatin1().data(),&info);
- time_t ctime=info.st_ctime;
- time_t actime=info.st_atime;
- time_t modtime=info.st_mtime;
- //this function avalaible on unix and mingw
- utimbuf butime;
- butime.actime=actime;
- butime.modtime=modtime;
- //creation time not exists into unix world
- Q_UNUSED(ctime)
- return utime(destination.toLatin1().data(),&butime)==0;
- #else
- wchar_t filePath[65535];
- source.toWCharArray(filePath);
- HANDLE hFileSouce = CreateFile(filePath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
- destination.toWCharArray(filePath);
- HANDLE hFileDestination = CreateFile(filePath, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
- if(hFileSouce == INVALID_HANDLE_VALUE)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] open failed to read");
- return false;
- }
- if(hFileDestination == INVALID_HANDLE_VALUE)
- {
- CloseHandle(hFileSouce);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] open failed to write");
- return false;
- }
- FILETIME ftCreate, ftAccess, ftWrite;
- if(!GetFileTime(hFileSouce, &ftCreate, &ftAccess, &ftWrite))
- {
- CloseHandle(hFileSouce);
- CloseHandle(hFileDestination);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] unable to get the file time");
- return false;
- }
- if(!SetFileTime(hFileDestination, &ftCreate, &ftAccess, &ftWrite))
- {
- CloseHandle(hFileSouce);
- CloseHandle(hFileDestination);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] unable to set the file time");
- return false;
- }
- CloseHandle(hFileSouce);
- CloseHandle(hFileDestination);
- return true;
- #endif
- #else
- return false;
- #endif
- #endif
- return false;
-}
-
-//skip the copy
-void TransferThread::skip()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start with stat: "+QString::number(transfer_stat));
- switch(transfer_stat)
- {
- case TransferStat_PreOperation:
- case TransferStat_WaitForTheTransfer:
- needSkip=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] case WaitForTheTransfer or PreOperation, readIsReadyVariable: "+QString::number(readIsReadyVariable)+", readIsClosedVariable: "+QString::number(readIsClosedVariable)+", writeIsReadyVariable: "+QString::number(writeIsReadyVariable)+", writeIsClosedVariable: "+QString::number(writeIsClosedVariable));
- //check if all is source and destination is closed
- if(!checkIfAllIsClosed())
- {
- if(readIsReadyVariable && !readIsClosedVariable)
- readThread.stop();
- if(writeIsReadyVariable && !writeIsClosedVariable)
- writeThread.stop();
- }
- break;
- case TransferStat_Transfer:
- needSkip=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] case Transfer, readIsReadyVariable: "+QString::number(readIsReadyVariable)+", readIsClosedVariable: "+QString::number(readIsClosedVariable)+", writeIsReadyVariable: "+QString::number(writeIsReadyVariable)+", writeIsClosedVariable: "+QString::number(writeIsClosedVariable));
- if(!checkIfAllIsClosed())
- {
- if(readIsReadyVariable && !readIsClosedVariable)
- readThread.stop();
- if(writeIsReadyVariable && !writeIsClosedVariable)
- writeThread.stop();
- }
- break;
- case TransferStat_Checksum:
- needSkip=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] case Transfer, readIsReadyVariable: "+QString::number(readIsReadyVariable)+", readIsClosedVariable: "+QString::number(readIsClosedVariable)+", writeIsReadyVariable: "+QString::number(writeIsReadyVariable)+", writeIsClosedVariable: "+QString::number(writeIsClosedVariable));
- if(!checkIfAllIsClosed())
- {
- if(readIsReadyVariable && !readIsClosedVariable)
- readThread.stop();
- if(writeIsReadyVariable && !writeIsClosedVariable)
- writeThread.stop();
- }
- break;
- case TransferStat_PostOperation:
- //do nothing because here is closing...
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] is already in post op");
- break;
- default:
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] can skip in this state!");
- return;
- }
-}
-
-//return info about the copied size
-qint64 TransferThread::copiedSize()
-{
- switch(transfer_stat)
- {
- case TransferStat_Transfer:
- case TransferStat_PostOperation:
- return readThread.getLastGoodPosition();
- case TransferStat_Checksum:
- return transferSize;
- default:
- return 0;
- }
-}
-
-//retry after error
-void TransferThread::putAtBottom()
-{
- emit tryPutAtBottom();
-}
-
-/// \brief set rsync
-void TransferThread::setRsync(const bool rsync)
-{
- this->rsync=rsync;
-}
-
-void TransferThread::set_osBufferLimit(unsigned int osBufferLimit)
-{
- this->osBufferLimit=osBufferLimit;
-}
-
-#ifdef ULTRACOPIER_PLUGIN_DEBUG
-//to set the id
-void TransferThread::setId(int id)
-{
- this->id=id;
- readThread.setId(id);
- writeThread.setId(id);
-}
-
-QChar TransferThread::readingLetter()
-{
- switch(readThread.stat)
- {
- case ReadThread::Idle:
- return '_';
- break;
- case ReadThread::InodeOperation:
- return 'I';
- break;
- case ReadThread::Read:
- return 'R';
- break;
- case ReadThread::WaitWritePipe:
- return 'W';
- break;
- case ReadThread::Checksum:
- return 'S';
- break;
- default:
- return '?';
- }
-}
-
-QChar TransferThread::writingLetter()
-{
- switch(writeThread.stat)
- {
- case WriteThread::Idle:
- return '_';
- break;
- case WriteThread::InodeOperation:
- return 'I';
- break;
- case WriteThread::Write:
- return 'W';
- break;
- case WriteThread::Close:
- return 'C';
- break;
- case WriteThread::Read:
- return 'R';
- break;
- case WriteThread::Checksum:
- return 'S';
- break;
- default:
- return '?';
- }
-}
-
-#endif
-
-void TransferThread::setMkpathTransfer(QSemaphore *mkpathTransfer)
-{
- this->mkpathTransfer=mkpathTransfer;
- writeThread.setMkpathTransfer(mkpathTransfer);
-}
-
-void TransferThread::set_doChecksum(bool doChecksum)
-{
- this->doChecksum=doChecksum;
-}
-
-void TransferThread::set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible)
-{
- this->checksumIgnoreIfImpossible=checksumIgnoreIfImpossible;
-}
-
-void TransferThread::set_checksumOnlyOnError(bool checksumOnlyOnError)
-{
- this->checksumOnlyOnError=checksumOnlyOnError;
-}
-
-void TransferThread::set_osBuffer(bool osBuffer)
-{
- this->osBuffer=osBuffer;
-}
-
-void TransferThread::set_osBufferLimited(bool osBufferLimited)
-{
- this->osBufferLimited=osBufferLimited;
-}
-
-//not copied size, because that's count to the checksum, ...
-quint64 TransferThread::realByteTransfered()
-{
- switch(transfer_stat)
- {
- case TransferStat_Transfer:
- case TransferStat_PostOperation:
- case TransferStat_Checksum:
- return readThread.getLastGoodPosition();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] transferSize: "+QString::number(transferSize));
- return transferSize;
- default:
- return 0;
- }
-}
-
-void TransferThread::setRenamingRules(QString firstRenamingRule,QString otherRenamingRule)
-{
- this->firstRenamingRule=firstRenamingRule;
- this->otherRenamingRule=otherRenamingRule;
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/TransferThread.h b/plugins-alternative/CopyEngine/Rsync/TransferThread.h
deleted file mode 100644
index 3ee6d35..0000000
--- a/plugins-alternative/CopyEngine/Rsync/TransferThread.h
+++ /dev/null
@@ -1,221 +0,0 @@
-/** \file TransferThread.h
-\brief Thread changed to manage the inode operation, the signals, canceling, pre and post operations
-\author alpha_one_x86
-\version 0.3
-\date 2011 */
-
-#ifndef TRANSFERTHREAD_H
-#define TRANSFERTHREAD_H
-
-#include <QThread>
-#include <QFileInfo>
-#include <QString>
-#include <QList>
-#include <QStringList>
-#include <QDateTime>
-#include <QDir>
-
-#include "ReadThread.h"
-#include "WriteThread.h"
-#include "Environment.h"
-#include "StructEnumDefinition_CopyEngine.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();
- /// \brief get drive of an file or folder
- QString getDrive(QString fileOrFolder);
- /// \brief set drive list, used in getDrive()
- void setDrive(QStringList drives);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- /// \brief to set the id
- void setId(int id);
- /// \brief get the reading letter
- QChar readingLetter();
- /// \brief get the writing letter
- QChar writingLetter();
- #endif
- /// \brief to have semaphore, and try create just one by one
- void setMkpathTransfer(QSemaphore *mkpathTransfer);
- /// \brief to store the transfer id
- quint64 transferId;
- /// \brief to store the transfer size
- quint64 transferSize;
-
- void set_doChecksum(bool doChecksum);
- void set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible);
- void set_checksumOnlyOnError(bool checksumOnlyOnError);
- void set_osBuffer(bool osBuffer);
- void set_osBufferLimited(bool osBufferLimited);
-
- //not copied size, because that's count to the checksum, ...
- quint64 realByteTransfered();
-protected:
- void run();
-signals:
- //to send state
- void preOperationStopped();
- void checkIfItCanBeResumed();
- //void transferStarted();//not sended (and not used then)
- void readStopped();
- void writeStopped();
- void postOperationStopped();
- //get dialog
- void fileAlreadyExists(QFileInfo,QFileInfo,bool isSame);
- void errorOnFile(QFileInfo,QString);
- //internal signal
- void internalStartPostOperation();
- void internalStartPreOperation();
- void internalStartResumeAfterErrorAndSeek();
- /// \brief To debug source
- void debugInformation(DebugLevel level,QString fonction,QString text,QString file,int ligne);
- void tryPutAtBottom();
- //force into the right thread
- void internalTryStartTheTransfer();
- /// \brief update the transfer stat
- void pushStat(TransferStat,quint64);
-public slots:
- /// \brief to start the transfer of data
- void startTheTransfer();
- /// \brief to set files to transfer
- void setFiles(const QString &source,const qint64 &size,const QString &destination,const CopyMode &mode);
- /// \brief to set file exists action to do
- void setFileExistsAction(const FileExistsAction &action);
- /// \brief to set the new name of the destination
- void setFileRename(const QString &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 keep date
- void setKeepDate(const bool keepDate);
- /// \brief set the current max speed in KB/s
- void setMaxSpeed(int maxSpeed);
- /// \brief set block size in KB
- bool setBlockSize(const unsigned int blockSize);
- /// \brief pause the copy
- void pause();
- /// \brief resume the copy
- void resume();
- /// \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
- qint64 copiedSize();
- /// \brief put the current file at bottom
- void putAtBottom();
- /// \brief set rsync
- void setRsync(const bool rsync);
-
- void set_osBufferLimit(unsigned int osBufferLimit);
- void setRenamingRules(QString firstRenamingRule,QString otherRenamingRule);
-private slots:
- void preOperation();
- void readIsReady();
- void writeIsReady();
- void readIsFinish();
- void writeIsFinish();
- void readIsClosed();
- void writeIsClosed();
- void postOperation();
- void getWriteError();
- void getReadError();
- void readChecksumFinish(const QByteArray&);
- void writeChecksumFinish(const QByteArray&);
- void compareChecksum();
- //void syncAfterErrorAndReadFinish();
- void readThreadIsSeekToZeroAndWait();
- void writeThreadIsReopened();
- void readThreadResumeAfterError();
- //to filter the emition of signal
- void readIsStopped();
- void writeIsStopped();
- //speed limitation
- void timeOfTheBlockCopyFinished();
- //force into the right thread
- void internalStartTheTransfer();
-private:
- enum MoveReturn
- {
- MoveReturn_skip=0,
- MoveReturn_moved=1,
- MoveReturn_error=2
- };
- TransferStat transfer_stat;
- ReadThread readThread;
- WriteThread writeThread;
- QString source;
- QString destination;
- CopyMode mode;
- QTimer clockForTheCopySpeed; ///< For the speed throttling
- bool doRightTransfer;
- bool keepDate;
- bool readIsReadyVariable;
- bool writeIsReadyVariable;
- bool readIsOpenVariable;
- bool writeIsOpenVariable;
- bool readIsFinishVariable;
- bool writeIsFinishVariable;
- bool readIsClosedVariable;
- bool writeIsClosedVariable;
- bool canBeMovedDirectlyVariable;
- bool rsync;
- QByteArray sourceChecksum,destinationChecksum;
- volatile bool stopIt;
- volatile bool canStartTransfer;
- int blockSize;
- bool retry;
- QFileInfo sourceInfo;
- QFileInfo destinationInfo;
- QStringList mountSysPoint;
- qint64 size;
- FileExistsAction fileExistsAction;
- FileExistsAction alwaysDoFileExistsAction;
- bool needSkip,needRemove;
- QDateTime maxTime;
- int id;
- QSemaphore *mkpathTransfer;
- bool doChecksum,real_doChecksum;
- bool checksumIgnoreIfImpossible;
- bool checksumOnlyOnError;
- bool osBuffer;
- bool osBufferLimited;
- unsigned int osBufferLimit;
- QString firstRenamingRule;
- QString otherRenamingRule;
- //error management
- bool writeError,writeError_source_seeked,writeError_destination_reopened;
- bool readError;
- bool fileContentError;
- //different pre-operation
- bool isSame();
- bool destinationExists();
- bool canBeMovedDirectly();
- void tryMoveDirectly();
- void ifCanStartTransfer();
- //fonction to edit the file date time
- bool changeFileDateTime(const QString &source,const QString &destination);
- void resetExtraVariable();
- //error management function
- void resumeTransferAfterWriteError();
- //to send state
- bool sended_state_preOperationStopped;
- bool sended_state_readStopped;
- bool sended_state_writeStopped;
- //different post-operation
- bool checkIfAllIsClosed();
- bool doFilePostOperation();
- //different pre-operation
- void tryOpen();
-};
-
-#endif // TRANSFERTHREAD_H
diff --git a/plugins-alternative/CopyEngine/Rsync/Variable.h b/plugins-alternative/CopyEngine/Rsync/Variable.h
deleted file mode 100644
index f39b8a6..0000000
--- a/plugins-alternative/CopyEngine/Rsync/Variable.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/** \file Variable.h
-\brief Define the environment variable
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#ifndef VARIABLE_H
-#define VARIABLE_H
-
-//Un-comment this next line to put ultracopier plugin in debug mode
-#define ULTRACOPIER_PLUGIN_DEBUG
-#define ULTRACOPIER_PLUGIN_DEBUG_WINDOW
-#define ULTRACOPIER_PLUGIN_DEBUG_WINDOW_TIMER 150
-
-#define ULTRACOPIER_PLUGIN_MAXBUFFERBLOCK 64
-#define ULTRACOPIER_PLUGIN_MINTIMERINTERVAL 50
-#define ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL 100
-#define ULTRACOPIER_PLUGIN_NUMSEMSPEEDMANAGEMENT 2
-#define ULTRACOPIER_PLUGIN_MAXPARALLELINODEOPT 64
-#define ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER 1
-#define ULTRACOPIER_PLUGIN_MINIMALYEAR 1990
-
-//if set, check the inode type at scanFileOrFolder, deprecated into the new algorithm and not used
-#define ULTRACOPIER_PLUGIN_CHECKLISTTYPE
-
-/** \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_SET_TIME_UNIX_WAY
-
-#endif // VARIABLE_H
-
-
-
diff --git a/plugins-alternative/CopyEngine/Rsync/WriteThread.cpp b/plugins-alternative/CopyEngine/Rsync/WriteThread.cpp
deleted file mode 100644
index 448e8dc..0000000
--- a/plugins-alternative/CopyEngine/Rsync/WriteThread.cpp
+++ /dev/null
@@ -1,508 +0,0 @@
-#include "WriteThread.h"
-
-#include <QDir>
-
-WriteThread::WriteThread()
-{
- stopIt=false;
- isOpen.release();
- start();
- moveToThread(this);
- setObjectName("write");
- this->mkpathTransfer = mkpathTransfer;
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
- CurentCopiedSize=0;
- buffer=false;
- putInPause=false;
- needRemoveTheFile=false;
- blockSize=1024*1024;
-}
-
-WriteThread::~WriteThread()
-{
- stopIt=true;
- needRemoveTheFile=true;
- freeBlock.release();
- // useless because stopIt will close all thread, but if thread not runing run it
- //endIsDetected();
- emit internalStartClose();
- isOpen.acquire();
- disconnect(this);
- quit();
- wait();
-}
-
-void WriteThread::run()
-{
- connect(this,SIGNAL(internalStartOpen()), this,SLOT(internalOpen()), Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartReopen()), this,SLOT(internalReopen()), Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartWrite()), this,SLOT(internalWrite()), Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartClose()), this,SLOT(internalClose()), Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartEndOfFile()), this,SLOT(internalEndOfFile()), Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartFlushAndSeekToZero()), this,SLOT(internalFlushAndSeekToZero()),Qt::QueuedConnection);
- connect(this,SIGNAL(internalStartChecksum()), this,SLOT(checkSum()), Qt::QueuedConnection);
- exec();
-}
-
-bool WriteThread::internalOpen()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] internalOpen destination: "+name);
- if(stopIt)
- return false;
- if(file.isOpen())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] already open! destination: "+file.fileName());
- return false;
- }
- //set to LISTBLOCKSIZE
- while(freeBlock.available()<ULTRACOPIER_PLUGIN_MAXBUFFERBLOCK)
- freeBlock.release();
- if(freeBlock.available()>ULTRACOPIER_PLUGIN_MAXBUFFERBLOCK)
- freeBlock.acquire(freeBlock.available()-ULTRACOPIER_PLUGIN_MAXBUFFERBLOCK);
- stopIt=false;
- CurentCopiedSize=0;
- endDetected=false;
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=InodeOperation;
- #endif
- file.setFileName(name);
- //mkpath check if exists and return true if already exists
- QFileInfo destinationInfo(file);
- QDir destinationFolder;
- {
- mkpathTransfer->acquire();
- if(!destinationFolder.exists(destinationInfo.absolutePath()))
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] "+QString("Try create the path: %1")
- .arg(destinationInfo.absolutePath()));
- if(!destinationFolder.mkpath(destinationInfo.absolutePath()))
- {
- if(!destinationFolder.exists(destinationInfo.absolutePath()))
- {
- /// \todo do real folder error here
- errorString_internal="mkpath error on destination";
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("Unable create the folder: %1, error: %2")
- .arg(destinationInfo.absolutePath())
- .arg(errorString_internal));
- emit error();
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
- return false;
- }
- }
- }
- mkpathTransfer->release();
- }
- if(stopIt)
- return false;
- //try open it
- QIODevice::OpenMode flags=QIODevice::ReadWrite;
- if(!buffer)
- flags|=QIODevice::Unbuffered;
- if(file.open(flags))
- {
- if(stopIt)
- return false;
- file.seek(0);
- if(stopIt)
- return false;
- file.resize(startSize);
- if(stopIt)
- return false;
- emit opened();
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
- isOpen.acquire();
- needRemoveTheFile=false;
- return true;
- }
- else
- {
- if(stopIt)
- return false;
- errorString_internal=file.errorString();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("Unable to open: %1, error: %2").arg(name).arg(errorString_internal));
- emit error();
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
- return false;
- }
-}
-
-void WriteThread::open(const QString &name,const quint64 &startSize,const bool &buffer)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] open destination: "+name);
- if(stopIt)
- return;
- fakeMode=false;
- this->name=name;
- this->startSize=startSize;
- this->buffer=buffer;
- endDetected=false;
- emit internalStartOpen();
-}
-
-void WriteThread::endIsDetected()
-{
- if(endDetected)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] double event dropped");
- return;
- }
- endDetected=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- emit internalStartEndOfFile();
-}
-
-QString WriteThread::errorString()
-{
- return errorString_internal;
-}
-
-bool WriteThread::write(const QByteArray &data)
-{
- if(stopIt)
- return false;
- freeBlock.acquire();
- if(stopIt)
- return false;
- {
- QMutexLocker lock_mutex(&accessList);
- theBlockList.append(data);
- }
- emit internalStartWrite();
- return true;
-}
-
-void WriteThread::stop()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] stop()");
- needRemoveTheFile=true;
- stopIt=true;
- if(isOpen.available()>0)
- return;
- freeBlock.release();
- // 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(DebugLevel_Notice,"["+QString::number(id)+"] start");
- freeBlock.release();
- freeBlock.acquire();
- {
- QMutexLocker lock_mutex(&accessList);
- theBlockList.clear();
- }
-}
-
-void WriteThread::internalEndOfFile()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] writeIsStopped");
- emit writeIsStopped();
-}
-
-void WriteThread::internalWrite()
-{
- if(stopIt)
- return;
- //read one block
- if(theBlockList.size()<=0)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] End detected of the file");
- return;
- }
- else
- {
- QMutexLocker lock_mutex(&accessList);
- blockArray=theBlockList.first();
- theBlockList.removeFirst();
- }
- //write one block
- freeBlock.release();
-
- if(stopIt)
- return;
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Write;
- #endif
- bytesWriten=file.write(blockArray);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
- //mutex for stream this data
- if(CurentCopiedSize==0)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] emit writeIsStarted()");
- emit writeIsStarted();
- }
- CurentCopiedSize+=bytesWriten;
- if(stopIt)
- return;
- if(file.error()!=QFile::NoError)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("Error in writing: %1 (%2)").arg(file.errorString()).arg(file.error()));
- errorString_internal=QString("Error in writing: %1 (%2)").arg(file.errorString()).arg(file.error());
- stopIt=true;
- emit error();
- return;
- }
- if(bytesWriten!=blockArray.size())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("Error in writing, bytesWriten: %1, blockArray.size(): %2").arg(bytesWriten).arg(blockArray.size()));
- errorString_internal=QString("Error in writing, bytesWriten: %1, blockArray.size(): %2").arg(bytesWriten).arg(blockArray.size());
- stopIt=true;
- emit error();
- return;
- }
- lastGoodPosition+=bytesWriten;
-}
-
-void WriteThread::postOperation()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- emit internalStartClose();
-}
-
-void WriteThread::internalClose(bool emitSignal)
-{
- /// \note never send signal here, because it's called by the destructor
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Close;
- #endif
- if(!fakeMode && file.isOpen())
- {
- if(!needRemoveTheFile)
- {
- if(startSize!=CurentCopiedSize)
- file.resize(CurentCopiedSize);
- }
- file.close();
- if(needRemoveTheFile)
- {
- if(file.remove())
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] unable to remove the destination file");
- }
- needRemoveTheFile=false;
- }
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
- if(emitSignal)
- emit closed();
-
- /// \note always the last of this function
- if(!fakeMode)
- isOpen.release();
-}
-
-void WriteThread::internalReopen()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] start");
- internalClose(false);
- flushBuffer();
- stopIt=false;
- CurentCopiedSize=0;
- if(internalOpen())
- emit reopened();
-}
-
-void WriteThread::reopen()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(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;
- emit opened();
-}
-
-/// \brief do the fake writeIsStarted
-void WriteThread::fakeWriteIsStarted()
-{
- emit writeIsStarted();
-}
-
-/// \brief do the fake writeIsStopped
-void WriteThread::fakeWriteIsStopped()
-{
- emit writeIsStopped();
-}
-
-/// do the checksum
-void WriteThread::startCheckSum()
-{
- emit internalStartChecksum();
-}
-
-/** \brief set block size
-\param block the new block size in KB
-\return Return true if succes */
-bool WriteThread::setBlockSize(const int blockSize)
-{
- if(blockSize<1 || blockSize>16384)
- {
- this->blockSize=blockSize*1024;
- //set the new max speed because the timer have changed
- setMaxSpeed(maxSpeed);
- return true;
- }
- else
- return false;
-}
-
-/*! \brief Set the max speed
-\param tempMaxSpeed Set the max speed in KB/s, 0 for no limit */
-int WriteThread::setMaxSpeed(const int maxSpeed)
-{
- if(this->maxSpeed==0 && maxSpeed==0 && waitNewClockForSpeed.available()>0)
- waitNewClockForSpeed.tryAcquire(waitNewClockForSpeed.available());
- this->maxSpeed=maxSpeed;
- if(this->maxSpeed>0)
- {
- int NewInterval,newMultiForBigSpeed=0;
- do
- {
- newMultiForBigSpeed++;
- NewInterval=(blockSize*newMultiForBigSpeed)/(this->maxSpeed);
- }
- while (NewInterval<ULTRACOPIER_PLUGIN_MINTIMERINTERVAL);
- if(NewInterval>ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL)
- {
- NewInterval=ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL;
- newMultiForBigSpeed=1;
- blockSize=this->maxSpeed*NewInterval;
- }
- MultiForBigSpeed=newMultiForBigSpeed;
- return NewInterval;
- }
- else
- {
- waitNewClockForSpeed.release();
- return 0;
- }
-}
-
-/// \brief For give timer every X ms
-void WriteThread::timeOfTheBlockCopyFinished()
-{
- if(waitNewClockForSpeed.available()<ULTRACOPIER_PLUGIN_NUMSEMSPEEDMANAGEMENT)
- waitNewClockForSpeed.release();
- //why not just use waitNewClockForSpeed.release() ?
-}
-
-void WriteThread::flushAndSeekToZero()
-{
- stopIt=true;
- emit internalStartFlushAndSeekToZero();
-}
-
-
-void WriteThread::checkSum()
-{
- //QByteArray blockArray;
- QCryptographicHash hash(QCryptographicHash::Sha1);
- endDetected=false;
- lastGoodPosition=0;
- file.seek(0);
- int sizeReaden=0;
- do
- {
- //read one block
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Read;
- #endif
- blockArray=file.read(blockSize);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
-
- if(file.error()!=QFile::NoError)
- {
- errorString_internal=tr("Unable to read the source file: ")+file.errorString()+" ("+QString::number(file.error())+")";
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("file.error()!=QFile::NoError: %1, error: %2").arg(QString::number(file.error())).arg(errorString_internal));
- emit error();
- return;
- }
- sizeReaden=blockArray.size();
- if(sizeReaden>0)
- {
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Checksum;
- #endif
- hash.addData(blockArray);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- stat=Idle;
- #endif
-
- if(stopIt)
- break;
-
- lastGoodPosition+=blockArray.size();
-
- //wait for limitation speed if stop not query
- if(maxSpeed>0)
- {
- numberOfBlockCopied++;
- if(numberOfBlockCopied>=MultiForBigSpeed)
- {
- numberOfBlockCopied=0;
- waitNewClockForSpeed.acquire();
- if(stopIt)
- break;
- }
- }
- }
- }
- while(sizeReaden>0 && !stopIt);
- if(lastGoodPosition>file.size())
- {
- errorString_internal=tr("File truncated during the read, possible data change");
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"["+QString::number(id)+"] "+QString("Source truncated during the read: %1 (%2)").arg(file.errorString()).arg(QString::number(file.error())));
- emit error();
- return;
- }
- if(stopIt)
- {
-/* if(putInPause)
- emit isInPause();*/
- stopIt=false;
- return;
- }
- emit checksumFinish(hash.result());
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"["+QString::number(id)+"] stop the read");
-}
-
-void WriteThread::internalFlushAndSeekToZero()
-{
- flushBuffer();
- file.seek(0);
- stopIt=false;
- emit flushedAndSeekedToZero();
-}
-
-void WriteThread::setMkpathTransfer(QSemaphore *mkpathTransfer)
-{
- this->mkpathTransfer=mkpathTransfer;
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/WriteThread.h b/plugins-alternative/CopyEngine/Rsync/WriteThread.h
deleted file mode 100644
index 3683c27..0000000
--- a/plugins-alternative/CopyEngine/Rsync/WriteThread.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/** \file WriteThread.h
-\brief Thread changed to open/close and write the destination file
-\author alpha_one_x86
-\version 0.3
-\date 2011 */
-
-#ifndef WRITETHREAD_H
-#define WRITETHREAD_H
-
-#include <QThread>
-#include <QByteArray>
-#include <QString>
-#include <QMutex>
-#include <QSemaphore>
-#include <QCryptographicHash>
-
-#include "Environment.h"
-#include "StructEnumDefinition_CopyEngine.h"
-#include "AvancedQFile.h"
-
-/// \brief Thread changed to open/close and write the destination file
-class WriteThread : public QThread
-{
- Q_OBJECT
-public:
- explicit WriteThread();
- ~WriteThread();
- /// \brief to have semaphore to do mkpath one by one
- void setMkpathTransfer(QSemaphore *mkpathTransfer);
-protected:
- void run();
-public:
- /// \brief open the destination to open it
- void open(const QString &name,const quint64 &startSize,const bool &buffer);
- /// \brief to return the error string
- QString errorString();
- /// \brief to stop all
- void stop();
- /// \brief to write data
- bool write(const QByteArray &data);
- #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,
- Checksum=6
- };
- WriteStat stat;
- #endif
- /// \brief do the fake open
- void fakeOpen();
- /// \brief do the fake writeIsStarted
- void fakeWriteIsStarted();
- /// \brief do the fake writeIsStopped
- void fakeWriteIsStopped();
- /// do the checksum
- void startCheckSum();
- /// \brief set the current max speed in KB/s
- int setMaxSpeed(int maxSpeed);
- /// \brief For give timer every X ms
- void timeOfTheBlockCopyFinished();
- /// \brief set block size in KB
- bool setBlockSize(const int blockSize);
-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();
- /// do the checksum
- void checkSum();
-signals:
- void error();
- void opened();
- void reopened();
- void writeIsStarted();
- void writeIsStopped();
- void flushedAndSeekedToZero();
- void closed();
- void checksumFinish(const QByteArray&);
- //internal signals
- void internalStartOpen();
- void internalStartChecksum();
- void internalStartReopen();
- void internalStartWrite();
- void internalStartClose();
- void internalStartEndOfFile();
- void internalStartFlushAndSeekToZero();
- /// \brief To debug source
- void debugInformation(const DebugLevel &level,const QString &fonction,const QString &text,const QString &file,const int &ligne);
-private:
- QString name;
- QString errorString_internal;
- AvancedQFile file;
- volatile bool stopIt;
- volatile int blockSize;
- volatile int maxSpeed; ///< The max speed in KB/s, 0 for no limit
- QMutex accessList; ///< For use the list
- QSemaphore waitNewClockForSpeed;
- volatile int numberOfBlockCopied; ///< Multiple for count the number of block copied
- volatile int multiplicatorForBigSpeed; ///< Multiple for count the number of block needed
- volatile int MultiForBigSpeed;
- QSemaphore freeBlock;
- QSemaphore isOpen;
- volatile bool putInPause;
- QList<QByteArray> theBlockList; ///< Store the block list
- quint64 CurentCopiedSize;
- QByteArray blockArray; ///< temp data for block writing, the data
- qint64 bytesWriten; ///< temp data for block writing, the bytes writen
- qint64 lastGoodPosition;
- int id;
- bool endDetected;
- quint64 startSize;
- QSemaphore *mkpathTransfer;
- bool fakeMode;
- bool buffer;
- bool needRemoveTheFile;
-private slots:
- bool internalOpen();
- void internalWrite();
- void internalClose(bool emitSignal=true);
- void internalReopen();
- void internalEndOfFile();
- void internalFlushAndSeekToZero();
-};
-
-#endif // WRITETHREAD_H
diff --git a/plugins-alternative/CopyEngine/Rsync/copyEngine-collision-and-error.cpp b/plugins-alternative/CopyEngine/Rsync/copyEngine-collision-and-error.cpp
deleted file mode 100644
index 7ec07c2..0000000
--- a/plugins-alternative/CopyEngine/Rsync/copyEngine-collision-and-error.cpp
+++ /dev/null
@@ -1,565 +0,0 @@
-/** \file copyEngine.cpp
-\brief Define the copy engine
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include <QtCore>
-#include <QFileDialog>
-#include <QMessageBox>
-
-#include "copyEngine.h"
-#include "folderExistsDialog.h"
-
-/// \note Can be call without queue because all call will be serialized
-void copyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool isSame,TransferThread * thread,bool isCalledByShowOneNewDialog)
-{
- if(stopIt)
- return;
- if(thread==NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to locate the thread");
- return;
- }
- //load the action
- if(isSame)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"file is same: "+source.absoluteFilePath());
- tempFileExistsAction=alwaysDoThisActionForFileExists;
- if(tempFileExistsAction==FileExists_Overwrite || tempFileExistsAction==FileExists_OverwriteIfNewer || tempFileExistsAction==FileExists_OverwriteIfNotSameModificationDate)
- 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 << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog");
- fileIsSameDialog dialog(interface,source,firstRenamingRule,otherRenamingRule);
- emit isInPause(true);
- dialog.exec();/// \bug crash when external close
- FileExistsAction newAction=dialog.getAction();
- emit isInPause(false);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"close dialog: "+QString::number(newAction));
- if(newAction==FileExists_Cancel)
- {
- emit cancelAll();
- return;
- }
- if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileExists)
- {
- alwaysDoThisActionForFileExists=newAction;
- listThread->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists);
- switch(newAction)
- {
- default:
- case FileExists_Skip:
- emit newCollisionAction("skip");
- break;
- case FileExists_Rename:
- emit newCollisionAction("rename");
- break;
- }
- }
- if(dialog.getAlways() || newAction!=FileExists_Rename)
- thread->setFileExistsAction(newAction);
- else
- thread->setFileRename(dialog.getNewName());
- dialogIsOpen=false;
- if(!isCalledByShowOneNewDialog)
- emit queryOneNewDialog();
- return;
- break;
- }
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"file already exists: "+source.absoluteFilePath()+", destination: "+destination.absoluteFilePath());
- tempFileExistsAction=alwaysDoThisActionForFileExists;
- switch(tempFileExistsAction)
- {
- case FileExists_Skip:
- case FileExists_Rename:
- case FileExists_Overwrite:
- case FileExists_OverwriteIfNewer:
- case FileExists_OverwriteIfNotSameModificationDate:
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"always do this action: "+QString::number(tempFileExistsAction));
- thread->setFileExistsAction(tempFileExistsAction);
- break;
- default:
- if(dialogIsOpen)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("dialog open, put in queue: %1 %2")
- .arg(source.absoluteFilePath())
- .arg(destination.absoluteFilePath())
- );
- alreadyExistsQueueItem newItem;
- newItem.source=source;
- newItem.destination=destination;
- newItem.isSame=isSame;
- newItem.transfer=thread;
- newItem.scan=NULL;
- alreadyExistsQueue << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog");
- fileExistsDialog dialog(interface,source,destination,firstRenamingRule,otherRenamingRule);
- emit isInPause(true);
- dialog.exec();/// \bug crash when external close
- FileExistsAction newAction=dialog.getAction();
- emit isInPause(false);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"close dialog: "+QString::number(newAction));
- if(newAction==FileExists_Cancel)
- {
- emit cancelAll();
- return;
- }
- if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileExists)
- {
- alwaysDoThisActionForFileExists=newAction;
- listThread->setAlwaysFileExistsAction(alwaysDoThisActionForFileExists);
- switch(newAction)
- {
- default:
- case FileExists_Skip:
- emit newCollisionAction("skip");
- break;
- case FileExists_Rename:
- emit newCollisionAction("rename");
- break;
- case FileExists_Overwrite:
- emit newCollisionAction("overwrite");
- break;
- case FileExists_OverwriteIfNewer:
- emit newCollisionAction("overwriteIfNewer");
- break;
- case FileExists_OverwriteIfNotSameModificationDate:
- emit newCollisionAction("overwriteIfNotSameModificationDate");
- break;
- }
- }
- if(dialog.getAlways() || newAction!=FileExists_Rename)
- thread->setFileExistsAction(newAction);
- else
- thread->setFileRename(dialog.getNewName());
- dialogIsOpen=false;
- if(!isCalledByShowOneNewDialog)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"emit queryOneNewDialog()");
- emit queryOneNewDialog();
- }
- return;
- break;
- }
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"stop");
-}
-
-/// \note Can be call without queue because all call will be serialized
-void copyEngine::errorOnFile(QFileInfo fileInfo,QString errorString,TransferThread * thread,bool isCalledByShowOneNewDialog)
-{
- if(stopIt)
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"file have error: "+fileInfo.absoluteFilePath()+", error: "+errorString);
- if(thread==NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to locate the thread");
- return;
- }
- //load the action
- tempFileErrorAction=alwaysDoThisActionForFileError;
- switch(tempFileErrorAction)
- {
- case FileError_Skip:
- thread->skip();
- return;
- case FileError_Retry:
- thread->retryAfterError();
- return;
- case FileError_PutToEndOfTheList:
- /// \todo do the read transfer locator and put at the end
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"todo list item not found");
- return;
- default:
- if(dialogIsOpen)
- {
- errorQueueItem newItem;
- newItem.errorString=errorString;
- newItem.inode=fileInfo;
- newItem.mkPath=false;
- newItem.rmPath=false;
- newItem.scan=NULL;
- newItem.transfer=thread;
- errorQueue << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog");
- emit error(fileInfo.absoluteFilePath(),fileInfo.size(),fileInfo.lastModified(),errorString);
- fileErrorDialog dialog(interface,fileInfo,errorString);
- emit isInPause(true);
- dialog.exec();/// \bug crash when external close
- FileErrorAction newAction=dialog.getAction();
- emit isInPause(false);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"close dialog: "+QString::number(newAction));
- if(newAction==FileError_Cancel)
- {
- emit cancelAll();
- return;
- }
- if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileError)
- {
- alwaysDoThisActionForFileError=newAction;
- switch(newAction)
- {
- default:
- case FileError_Skip:
- emit newErrorAction("skip");
- break;
- case FileError_PutToEndOfTheList:
- emit newErrorAction("putToEndOfTheList");
- break;
- }
- }
- switch(newAction)
- {
- case FileError_Skip:
- thread->skip();
- break;
- case FileError_Retry:
- thread->retryAfterError();
- break;
- case FileError_PutToEndOfTheList:
- thread->putAtBottom();
- /// \todo do the read transfer locator and put at the end
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"todo");
- break;
- default:
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"file error action wrong");
- break;
- }
- dialogIsOpen=false;
- if(!isCalledByShowOneNewDialog)
- emit queryOneNewDialog();
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"isCalledByShowOneNewDialog==true then not show other dial");
- return;
- break;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"stop");
-}
-
-/// \note Can be call without queue because all call will be serialized
-void copyEngine::folderAlreadyExists(QFileInfo source,QFileInfo destination,bool isSame,scanFileOrFolder * thread,bool isCalledByShowOneNewDialog)
-{
- if(stopIt)
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"folder already exists: "+source.absoluteFilePath()+", destination: "+destination.absoluteFilePath());
- if(thread==NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to locate the thread");
- return;
- }
- //load the always action
- 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 << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog");
- folderExistsDialog dialog(interface,source,isSame,destination,firstRenamingRule,otherRenamingRule);
- dialog.exec();/// \bug crash when external close
- FolderExistsAction newAction=dialog.getAction();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"close dialog: "+QString::number(newAction));
- if(newAction==FolderExists_Cancel)
- {
- emit cancelAll();
- return;
- }
- if(dialog.getAlways() && newAction!=alwaysDoThisActionForFolderExists)
- setComboBoxFolderColision(newAction);
- if(!dialog.getAlways() && newAction==FolderExists_Rename)
- thread->setFolderExistsAction(newAction,dialog.getNewName());
- else
- thread->setFolderExistsAction(newAction);
- dialogIsOpen=false;
- if(!isCalledByShowOneNewDialog)
- emit queryOneNewDialog();
- return;
- break;
- }
-}
-
-/// \note Can be call without queue because all call will be serialized
-/// \todo all this part
-void copyEngine::errorOnFolder(QFileInfo fileInfo,QString errorString,scanFileOrFolder * thread,bool isCalledByShowOneNewDialog)
-{
- if(stopIt)
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"file have error: "+fileInfo.absoluteFilePath()+", error: "+errorString);
- if(thread==NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to locate the thread");
- return;
- }
- //load the always action
- 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;
- errorQueue << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog");
- emit error(fileInfo.absoluteFilePath(),fileInfo.size(),fileInfo.lastModified(),errorString);
- fileErrorDialog dialog(interface,fileInfo,errorString);
- dialog.exec();/// \bug crash when external close
- FileErrorAction newAction=dialog.getAction();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"close dialog: "+QString::number(newAction));
- if(newAction==FileError_Cancel)
- {
- emit cancelAll();
- return;
- }
- if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileError)
- setComboBoxFolderError(newAction);
- dialogIsOpen=false;
- thread->setFolderErrorAction(newAction);
- if(!isCalledByShowOneNewDialog)
- emit queryOneNewDialog();
- return;
- break;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"stop");
-}
-
-// -----------------------------------------------------
-
-//mkpath event
-void copyEngine::mkPathErrorOnFolder(QFileInfo folder,QString errorString,bool isCalledByShowOneNewDialog)
-{
- if(stopIt)
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"file have error: "+folder.absoluteFilePath()+", error: "+errorString);
- //load the always action
- tempFileErrorAction=alwaysDoThisActionForFolderError;
- error_index=0;
- 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;
- errorQueue << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog");
- emit error(folder.absoluteFilePath(),folder.size(),folder.lastModified(),errorString);
- fileErrorDialog dialog(interface,folder,errorString,false);
- dialog.exec();/// \bug crash when external close
- FileErrorAction newAction=dialog.getAction();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"close dialog: "+QString::number(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(DebugLevel_Warning,"Unknow switch case: "+QString::number(newAction));
- break;
- }
- if(!isCalledByShowOneNewDialog)
- emit queryOneNewDialog();
- return;
- break;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"stop");
-}
-
-//rmpath event
-void copyEngine::rmPathErrorOnFolder(QFileInfo folder,QString errorString,bool isCalledByShowOneNewDialog)
-{
- if(stopIt)
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"file have error: "+folder.absoluteFilePath()+", error: "+errorString);
- //load the always action
- tempFileErrorAction=alwaysDoThisActionForFolderError;
- error_index=0;
- switch(tempFileErrorAction)
- {
- case FileError_Skip:
- listThread->rmPathQueue.skip();
- return;
- case FileError_Retry:
- listThread->rmPathQueue.retry();
- return;
- default:
- if(dialogIsOpen)
- {
- errorQueueItem newItem;
- newItem.errorString=errorString;
- newItem.inode=folder;
- newItem.mkPath=false;
- newItem.rmPath=true;
- newItem.scan=NULL;
- newItem.transfer=NULL;
- errorQueue << newItem;
- return;
- }
- dialogIsOpen=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"show dialog");
- emit error(folder.absoluteFilePath(),folder.size(),folder.lastModified(),errorString);
- fileErrorDialog dialog(interface,folder,errorString,false);
- dialog.exec();/// \bug crash when external close
- FileErrorAction newAction=dialog.getAction();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"close dialog: "+QString::number(newAction));
- if(newAction==FileError_Cancel)
- {
- emit cancelAll();
- return;
- }
- if(dialog.getAlways() && newAction!=alwaysDoThisActionForFileError)
- {
- setComboBoxFolderError(newAction);
- alwaysDoThisActionForFolderError=newAction;
- }
- dialogIsOpen=false;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"do the action");
- switch(newAction)
- {
- case FileError_Skip:
- listThread->rmPathQueue.skip();
- break;
- case FileError_Retry:
- listThread->rmPathQueue.retry();
- break;
- default:
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"Unknow switch case: "+QString::number(newAction));
- break;
- }
- if(!isCalledByShowOneNewDialog)
- emit queryOneNewDialog();
- return;
- break;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"stop");
-}
-
-//show one new dialog if needed
-void copyEngine::showOneNewDialog()
-{
- if(stopIt)
- return;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"alreadyExistsQueue.size(): "+QString::number(alreadyExistsQueue.size()));
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"errorQueue.size(): "+QString::number(errorQueue.size()));
- loop_size=alreadyExistsQueue.size();
- while(loop_size>0)
- {
- if(alreadyExistsQueue.first().transfer!=NULL)
- {
- fileAlreadyExists(alreadyExistsQueue.first().source,
- alreadyExistsQueue.first().destination,
- alreadyExistsQueue.first().isSame,
- alreadyExistsQueue.first().transfer,
- true);
- }
- else if(alreadyExistsQueue.first().scan!=NULL)
- folderAlreadyExists(alreadyExistsQueue.first().source,
- alreadyExistsQueue.first().destination,
- alreadyExistsQueue.first().isSame,
- alreadyExistsQueue.first().scan,
- true);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"bug, no thread actived");
- alreadyExistsQueue.removeFirst();
- loop_size--;
- }
- loop_size=errorQueue.size();
- while(errorQueue.size()>0)
- {
- if(errorQueue.first().transfer!=NULL)
- errorOnFile(errorQueue.first().inode,errorQueue.first().errorString,errorQueue.first().transfer,true);
- else if(errorQueue.first().scan!=NULL)
- errorOnFolder(errorQueue.first().inode,errorQueue.first().errorString,errorQueue.first().scan,true);
- else if(errorQueue.first().mkPath)
- mkPathErrorOnFolder(errorQueue.first().inode,errorQueue.first().errorString,true);
- else if(errorQueue.first().rmPath)
- rmPathErrorOnFolder(errorQueue.first().inode,errorQueue.first().errorString,true);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"bug, no thread actived");
- errorQueue.removeFirst();
- loop_size--;
- }
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/copyEngine.cpp b/plugins-alternative/CopyEngine/Rsync/copyEngine.cpp
deleted file mode 100755
index 1c17f8a..0000000
--- a/plugins-alternative/CopyEngine/Rsync/copyEngine.cpp
+++ /dev/null
@@ -1,819 +0,0 @@
-/** \file copyEngine.cpp
-\brief Define the copy engine
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include <QtCore>
-#include <QFileDialog>
-#include <QMessageBox>
-
-#include "copyEngine.h"
-#include "folderExistsDialog.h"
-#include "../../../interface/PluginInterface_CopyEngine.h"
-
-copyEngine::copyEngine(FacilityInterface * facilityEngine) :
- ui(new Ui::options())
-{
- listThread=new ListThread(facilityEngine);
- this->facilityEngine=facilityEngine;
- filters=NULL;
- renamingRules=NULL;
- qRegisterMetaType<TransferThread *>("TransferThread *");
- qRegisterMetaType<scanFileOrFolder *>("scanFileOrFolder *");
- qRegisterMetaType<EngineActionInProgress>("EngineActionInProgress");
- qRegisterMetaType<DebugLevel>("DebugLevel");
- qRegisterMetaType<FileExistsAction>("FileExistsAction");
- qRegisterMetaType<FolderExistsAction>("FolderExistsAction");
- qRegisterMetaType<QList<Filters_rules> >("QList<Filters_rules>");
- qRegisterMetaType<QList<int> >("QList<int>");
- qRegisterMetaType<CopyMode>("CopyMode");
- qRegisterMetaType<QList<returnActionOnCopyList> >("QList<returnActionOnCopyList>");
- qRegisterMetaType<QList<ProgressionItem> >("QList<ProgressionItem>");
-
- interface = NULL;
- tempWidget = NULL;
- uiIsInstalled = false;
- dialogIsOpen = false;
- maxSpeed = 0;
- alwaysDoThisActionForFileExists = FileExists_NotSet;
- alwaysDoThisActionForFileError = FileError_NotSet;
- checkDestinationFolderExists = false;
- stopIt = false;
- size_for_speed = 0;
- forcedMode = false;
-
- //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);
-
-}
-
-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();
- #endif
- if(!connect(listThread,SIGNAL(actionInProgess(EngineActionInProgress)), this,SIGNAL(actionInProgess(EngineActionInProgress)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect actionInProgess()");
- if(!connect(listThread,SIGNAL(actionInProgess(EngineActionInProgress)), this,SLOT(newActionInProgess(EngineActionInProgress)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect actionInProgess() to slot");
- if(!connect(listThread,SIGNAL(newFolderListing(QString)), this,SIGNAL(newFolderListing(QString)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect newFolderListing()");
- if(!connect(listThread,SIGNAL(newCollisionAction(QString)), this,SIGNAL(newCollisionAction(QString)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect newCollisionAction()");
- if(!connect(listThread,SIGNAL(newErrorAction(QString)), this,SIGNAL(newErrorAction(QString)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect newErrorAction()");
- if(!connect(listThread,SIGNAL(isInPause(bool)), this,SIGNAL(isInPause(bool)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect isInPause()");
- if(!connect(listThread,SIGNAL(error(QString,quint64,QDateTime,QString)), this,SIGNAL(error(QString,quint64,QDateTime,QString)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect error()");
- if(!connect(listThread,SIGNAL(rmPath(QString)), this,SIGNAL(rmPath(QString)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect rmPath()");
- if(!connect(listThread,SIGNAL(mkPath(QString)), this,SIGNAL(mkPath(QString)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect mkPath()");
- if(!connect(listThread,SIGNAL(newActionOnList(QList<returnActionOnCopyList>)), this,SIGNAL(newActionOnList(QList<returnActionOnCopyList>)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect newActionOnList()");
- if(!connect(listThread,SIGNAL(pushFileProgression(QList<ProgressionItem>)), this,SIGNAL(pushFileProgression(QList<ProgressionItem>)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect pushFileProgression()");
- if(!connect(listThread,SIGNAL(pushGeneralProgression(quint64,quint64)), this,SIGNAL(pushGeneralProgression(quint64,quint64)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect pushGeneralProgression()");
- if(!connect(listThread,SIGNAL(syncReady()), this,SIGNAL(syncReady()), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect syncReady()");
- if(!connect(listThread,SIGNAL(canBeDeleted()), this,SIGNAL(canBeDeleted()), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect canBeDeleted()");
- #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
- if(!connect(listThread,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)), this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect debugInformation()");
- #endif
-
- if(!connect(listThread,SIGNAL(send_fileAlreadyExists(QFileInfo,QFileInfo,bool,TransferThread *)), this,SLOT(fileAlreadyExists(QFileInfo,QFileInfo,bool,TransferThread *)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_fileAlreadyExists()");
- if(!connect(listThread,SIGNAL(send_errorOnFile(QFileInfo,QString,TransferThread *)), this,SLOT(errorOnFile(QFileInfo,QString,TransferThread *)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_errorOnFile()");
- if(!connect(listThread,SIGNAL(send_folderAlreadyExists(QFileInfo,QFileInfo,bool,scanFileOrFolder *)), this,SLOT(folderAlreadyExists(QFileInfo,QFileInfo,bool,scanFileOrFolder *)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_folderAlreadyExists()");
- if(!connect(listThread,SIGNAL(send_errorOnFolder(QFileInfo,QString,scanFileOrFolder *)), this,SLOT(errorOnFolder(QFileInfo,QString,scanFileOrFolder *)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_errorOnFolder()");
- if(!connect(listThread,SIGNAL(updateTheDebugInfo(QStringList,QStringList,int)), this,SLOT(updateTheDebugInfo(QStringList,QStringList,int)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect updateTheDebugInfo()");
- if(!connect(listThread,SIGNAL(errorTransferList(QString)), this,SLOT(errorTransferList(QString)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect errorTransferList()");
- if(!connect(listThread,SIGNAL(warningTransferList(QString)), this,SLOT(warningTransferList(QString)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect warningTransferList()");
- if(!connect(listThread,SIGNAL(mkPathErrorOnFolder(QFileInfo,QString)), this,SLOT(mkPathErrorOnFolder(QFileInfo,QString)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect mkPathErrorOnFolder()");
- if(!connect(listThread,SIGNAL(rmPathErrorOnFolder(QFileInfo,QString)), this,SLOT(rmPathErrorOnFolder(QFileInfo,QString)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect rmPathErrorOnFolder()");
- if(!connect(listThread,SIGNAL(send_realBytesTransfered(quint64)), this,SLOT(get_realBytesTransfered(quint64)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_realBytesTransfered()");
-
- if(!connect(this,SIGNAL(tryCancel()), listThread,SIGNAL(tryCancel()), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect tryCancel()");
- if(!connect(this,SIGNAL(signal_pause()), listThread,SLOT(pause()), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_pause()");
- if(!connect(this,SIGNAL(signal_resume()), listThread,SLOT(resume()), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_resume()");
- if(!connect(this,SIGNAL(signal_skip(quint64)), listThread,SLOT(skip(quint64)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_skip()");
- if(!connect(this,SIGNAL(signal_setCollisionAction(FileExistsAction)), listThread,SLOT(setAlwaysFileExistsAction(FileExistsAction)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_setCollisionAction()");
- if(!connect(this,SIGNAL(signal_setFolderColision(FolderExistsAction)), listThread,SLOT(setFolderColision(FolderExistsAction)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_setFolderColision()");
- if(!connect(this,SIGNAL(signal_removeItems(QList<int>)), listThread,SLOT(removeItems(QList<int>)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_removeItems()");
- if(!connect(this,SIGNAL(signal_moveItemsOnTop(QList<int>)), listThread,SLOT(moveItemsOnTop(QList<int>)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_moveItemsOnTop()");
- if(!connect(this,SIGNAL(signal_moveItemsUp(QList<int>)), listThread,SLOT(moveItemsUp(QList<int>)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_moveItemsUp()");
- if(!connect(this,SIGNAL(signal_moveItemsDown(QList<int>)), listThread,SLOT(moveItemsDown(QList<int>)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_moveItemsDown()");
- if(!connect(this,SIGNAL(signal_moveItemsOnBottom(QList<int>)), listThread,SLOT(moveItemsOnBottom(QList<int>)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_moveItemsOnBottom()");
- if(!connect(this,SIGNAL(signal_exportTransferList(QString)), listThread,SLOT(exportTransferList(QString)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_exportTransferList()");
- if(!connect(this,SIGNAL(signal_importTransferList(QString)), listThread,SLOT(importTransferList(QString)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_importTransferList()");
- if(!connect(this,SIGNAL(signal_forceMode(CopyMode)), listThread,SLOT(forceMode(CopyMode)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect signal_forceMode()");
- if(!connect(this,SIGNAL(send_osBufferLimit(uint)), listThread,SLOT(set_osBufferLimit(uint)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_osBufferLimit()");
- if(!connect(this,SIGNAL(send_setFilters(QList<Filters_rules>,QList<Filters_rules>)),listThread,SLOT(set_setFilters(QList<Filters_rules>,QList<Filters_rules>)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_setFilters()");
- if(!connect(this,SIGNAL(send_sendNewRenamingRules(QString,QString)),listThread,SLOT(set_sendNewRenamingRules(QString,QString)), Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect send_sendNewRenamingRules()");
- if(!connect(&timerActionDone,SIGNAL(timeout()), listThread,SLOT(sendActionDone())))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect timerActionDone");
- if(!connect(&timerProgression,SIGNAL(timeout()), listThread,SLOT(sendProgression())))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect timerProgression");
-
- if(!connect(this,SIGNAL(queryOneNewDialog()),SLOT(showOneNewDialog()),Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect queryOneNewDialog()");
-}
-
-#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
-void copyEngine::updateTheDebugInfo(QStringList newList,QStringList newList2,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;
- connect(tempWidget, SIGNAL(destroyed()), this, SLOT(resetTempWidget()));
- ui->setupUi(tempWidget);
- //conect the ui widget
-/* connect(ui->doRightTransfer, SIGNAL(toggled(bool)), &threadOfTheTransfer, SLOT(setRightTransfer(bool)));
- connect(ui->keepDate, SIGNAL(toggled(bool)), &threadOfTheTransfer, SLOT(setKeepDate(bool)));
- connect(ui->blockSize, SIGNAL(valueChanged(int)), &threadOfTheTransfer, SLOT(setBlockSize(int)));*/
- connect(ui->autoStart, SIGNAL(toggled(bool)), this, SLOT(setAutoStart(bool)));
- connect(ui->rsync, SIGNAL(toggled(bool)), this, SLOT(setRsync(bool)));
- connect(ui->checkBoxDestinationFolderExists, SIGNAL(toggled(bool)), this, SLOT(setCheckDestinationFolderExists(bool)));
- uiIsInstalled=true;
- setRightTransfer(doRightTransfer);
- setKeepDate(keepDate);
- setSpeedLimitation(maxSpeed);
- setBlockSize(blockSize);
- setAutoStart(autoStart);
- setRsync(rsync);
- setCheckDestinationFolderExists(checkDestinationFolderExists);
- set_doChecksum(doChecksum);
- set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible);
- set_checksumOnlyOnError(checksumOnlyOnError);
- set_osBuffer(osBuffer);
- set_osBufferLimited(osBufferLimited);
- set_osBufferLimit(osBufferLimit);
- return true;
-}
-
-//to have interface widget to do modal dialog
-void copyEngine::setInterfacePointer(QWidget * interface)
-{
- this->interface=interface;
- filters=new Filters(tempWidget);
- renamingRules=new RenamingRules(tempWidget);
-
- if(uiIsInstalled)
- {
- connect(ui->doRightTransfer, SIGNAL(toggled(bool)), this,SLOT(setRightTransfer(bool)));
- connect(ui->keepDate, SIGNAL(toggled(bool)), this,SLOT(setKeepDate(bool)));
- connect(ui->blockSize, SIGNAL(valueChanged(int)), this,SLOT(setBlockSize(int)));
- connect(ui->autoStart, SIGNAL(toggled(bool)), this,SLOT(setAutoStart(bool)));
- connect(ui->rsync, SIGNAL(toggled(bool)), this,SLOT(setRsync(bool)));
- connect(ui->doChecksum, SIGNAL(toggled(bool)), this,SLOT(doChecksum_toggled(bool)));
- connect(ui->checksumIgnoreIfImpossible, SIGNAL(toggled(bool)), this,SLOT(checksumIgnoreIfImpossible_toggled(bool)));
- connect(ui->checksumOnlyOnError, SIGNAL(toggled(bool)), this,SLOT(checksumOnlyOnError_toggled(bool)));
- connect(ui->osBuffer, SIGNAL(toggled(bool)), this,SLOT(osBuffer_toggled(bool)));
- connect(ui->osBufferLimited, SIGNAL(toggled(bool)), this,SLOT(osBufferLimited_toggled(bool)));
- connect(ui->osBufferLimit, SIGNAL(editingFinished()), this,SLOT(osBufferLimit_editingFinished()));
-
- connect(filters,SIGNAL(sendNewFilters(QStringList,QStringList,QStringList,QStringList)),this,SLOT(sendNewFilters()));
- connect(ui->filters,SIGNAL(clicked()),this,SLOT(showFilterDialog()));
-
- if(!connect(renamingRules,SIGNAL(sendNewRenamingRules(QString,QString)),this,SLOT(sendNewRenamingRules(QString,QString))))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect sendNewRenamingRules()");
- if(!connect(ui->renamingRules,SIGNAL(clicked()),this,SLOT(showRenamingRules())))
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to connect renamingRules.clicked()");
- }
-
- filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
- set_setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
-
- renamingRules->setRenamingRules(firstRenamingRule,otherRenamingRule);
- emit send_sendNewRenamingRules(firstRenamingRule,otherRenamingRule);
-}
-
-bool copyEngine::haveSameSource(const QStringList &sources)
-{
- return listThread->haveSameSource(sources);
-}
-
-bool copyEngine::haveSameDestination(const QString &destination)
-{
- return listThread->haveSameDestination(destination);
-}
-
-bool copyEngine::newCopy(const QStringList &sources)
-{
- if(forcedMode && mode!=Copy)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"The engine is forced to move, you can't copy with it");
- QMessageBox::critical(NULL,facilityEngine->translateText("Internal error"),tr("The engine is forced to move, you can't copy with it"));
- return false;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- QString destination = QFileDialog::getExistingDirectory(interface,facilityEngine->translateText("Select destination directory"),"",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
- if(destination.isEmpty() || destination.isNull() || destination=="")
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"Canceled by the user");
- return false;
- }
- return listThread->newCopy(sources,destination);
-}
-
-bool copyEngine::newCopy(const QStringList &sources,const QString &destination)
-{
- if(forcedMode && mode!=Copy)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"The engine is forced to move, you can't copy with it");
- QMessageBox::critical(NULL,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 QStringList &sources)
-{
- if(forcedMode && mode!=Move)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"The engine is forced to copy, you can't move with it");
- QMessageBox::critical(NULL,facilityEngine->translateText("Internal error"),tr("The engine is forced to copy, you can't move with it"));
- return false;
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- QString destination = QFileDialog::getExistingDirectory(interface,facilityEngine->translateText("Select destination directory"),"",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
- if(destination.isEmpty() || destination.isNull() || destination=="")
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"Canceled by the user");
- return false;
- }
- return listThread->newMove(sources,destination);
-}
-
-bool copyEngine::newMove(const QStringList &sources,const QString &destination)
-{
- if(forcedMode && mode!=Move)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"The engine is forced to copy, you can't move with it");
- QMessageBox::critical(NULL,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::newTransferList(const QString &file)
-{
- emit signal_importTransferList(file);
-}
-
-//because direct access to list thread into the main thread can't be do
-quint64 copyEngine::realByteTransfered()
-{
- return size_for_speed;
-}
-
-//speed limitation
-qint64 copyEngine::getSpeedLimitation()
-{
- return listThread->getSpeedLimitation();
-}
-
-//get collision action
-QList<QPair<QString,QString> > copyEngine::getCollisionAction()
-{
- QPair<QString,QString> tempItem;
- QList<QPair<QString,QString> > list;
- tempItem.first=facilityEngine->translateText("Ask");tempItem.second="ask";list << tempItem;
- tempItem.first=facilityEngine->translateText("Skip");tempItem.second="skip";list << tempItem;
- tempItem.first=facilityEngine->translateText("Overwrite");tempItem.second="overwrite";list << tempItem;
- tempItem.first=facilityEngine->translateText("Overwrite if newer");tempItem.second="overwriteIfNewer";list << tempItem;
- tempItem.first=facilityEngine->translateText("Overwrite if the last modification dates are different");tempItem.second="overwriteIfNotSameModificationDate";list << tempItem;
- tempItem.first=facilityEngine->translateText("Rename");tempItem.second="rename";list << tempItem;
- return list;
-}
-
-QList<QPair<QString,QString> > copyEngine::getErrorAction()
-{
- QPair<QString,QString> tempItem;
- QList<QPair<QString,QString> > list;
- tempItem.first=facilityEngine->translateText("Ask");tempItem.second="ask";list << tempItem;
- tempItem.first=facilityEngine->translateText("Skip");tempItem.second="skip";list << tempItem;
- tempItem.first=facilityEngine->translateText("Put to end of the list");tempItem.second="putToEndOfTheList";list << tempItem;
- return list;
-}
-
-void copyEngine::setDrive(const QStringList &drives)
-{
- listThread->setDrive(drives);
-}
-
-/** \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_doChecksum(bool doChecksum)
-{
- listThread->set_doChecksum(doChecksum);
- if(uiIsInstalled)
- ui->doChecksum->setChecked(doChecksum);
- this->doChecksum=doChecksum;
-}
-
-void copyEngine::set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible)
-{
- listThread->set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible);
- if(uiIsInstalled)
- ui->checksumIgnoreIfImpossible->setChecked(checksumIgnoreIfImpossible);
- this->checksumIgnoreIfImpossible=checksumIgnoreIfImpossible;
-}
-
-void copyEngine::set_checksumOnlyOnError(bool checksumOnlyOnError)
-{
- listThread->set_checksumOnlyOnError(checksumOnlyOnError);
- if(uiIsInstalled)
- ui->checksumOnlyOnError->setChecked(checksumOnlyOnError);
- this->checksumOnlyOnError=checksumOnlyOnError;
-}
-
-void copyEngine::set_osBuffer(bool osBuffer)
-{
- listThread->set_osBuffer(osBuffer);
- if(uiIsInstalled)
- ui->osBuffer->setChecked(osBuffer);
- this->osBuffer=osBuffer;
-}
-
-void copyEngine::set_osBufferLimited(bool osBufferLimited)
-{
- listThread->set_osBufferLimited(osBufferLimited);
- if(uiIsInstalled)
- ui->osBufferLimited->setChecked(osBufferLimited);
- this->osBufferLimited=osBufferLimited;
-}
-
-void copyEngine::set_osBufferLimit(unsigned int osBufferLimit)
-{
- emit send_osBufferLimit(osBufferLimit);
- if(uiIsInstalled)
- ui->osBufferLimit->setValue(osBufferLimit);
- this->osBufferLimit=osBufferLimit;
-}
-
-void copyEngine::set_setFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions)
-{
- if(filters!=NULL)
- {
- filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
- emit send_setFilters(filters->getInclude(),filters->getExclude());
- }
- this->includeStrings=includeStrings;
- this->includeOptions=includeOptions;
- this->excludeStrings=excludeStrings;
- this->excludeOptions=excludeOptions;
-}
-
-void copyEngine::setRenamingRules(QString firstRenamingRule,QString otherRenamingRule)
-{
- sendNewRenamingRules(firstRenamingRule,otherRenamingRule);
-}
-
-bool copyEngine::userAddFolder(const CopyMode &mode)
-{
- QString source = QFileDialog::getExistingDirectory(interface,facilityEngine->translateText("Select source directory"),"",QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
- if(source.isEmpty() || source.isNull() || source=="")
- return false;
- if(mode==Copy)
- return newCopy(QStringList() << source);
- else
- return newMove(QStringList() << source);
-}
-
-bool copyEngine::userAddFile(const CopyMode &mode)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- QStringList sources = QFileDialog::getOpenFileNames(
- interface,
- facilityEngine->translateText("Select one or more files to open"),
- "",
- facilityEngine->translateText("All files")+" (*)");
- if(sources.isEmpty())
- return false;
- if(mode==Copy)
- return newCopy(sources);
- else
- return newMove(sources);
-}
-
-void copyEngine::pause()
-{
- emit signal_pause();
-}
-
-void copyEngine::resume()
-{
- emit signal_resume();
-}
-
-void copyEngine::skip(const quint64 &id)
-{
- emit signal_skip(id);
-}
-
-void copyEngine::cancel()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- stopIt=true;
- timerProgression.stop();
- timerActionDone.stop();
- emit tryCancel();
-}
-
-void copyEngine::removeItems(const QList<int> &ids)
-{
- emit signal_removeItems(ids);
-}
-
-void copyEngine::moveItemsOnTop(const QList<int> &ids)
-{
- emit signal_moveItemsOnTop(ids);
-}
-
-void copyEngine::moveItemsUp(const QList<int> &ids)
-{
- emit signal_moveItemsUp(ids);
-}
-
-void copyEngine::moveItemsDown(const QList<int> &ids)
-{
- emit signal_moveItemsDown(ids);
-}
-
-void copyEngine::moveItemsOnBottom(const QList<int> &ids)
-{
- emit signal_moveItemsOnBottom(ids);
-}
-
-/** \brief give the forced mode, to export/import transfer list */
-void copyEngine::forceMode(const CopyMode &mode)
-{
- if(mode==Move)
- {
- listThread->setRsync(false);
- rsync=false;
- }
- if(uiIsInstalled)
- ui->rsync->setEnabled(mode==Copy);
- if(forcedMode)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("Mode forced previously"));
- QMessageBox::critical(NULL,facilityEngine->translateText("Internal error"),tr("The mode have been forced previously, it's internal error, please report it"));
- return;
- }
- if(mode==Copy)
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("Force mode to copy"));
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("Force mode to move"));
- this->mode=mode;
- forcedMode=true;
- emit signal_forceMode(mode);
-}
-
-void copyEngine::exportTransferList()
-{
- QString fileName = QFileDialog::getSaveFileName(NULL,facilityEngine->translateText("Save transfer list"),"transfer-list.lst",facilityEngine->translateText("Transfer list")+" (*.lst)");
- if(fileName.isEmpty())
- return;
- emit signal_exportTransferList(fileName);
-}
-
-void copyEngine::importTransferList()
-{
- QString fileName = QFileDialog::getOpenFileName(NULL,facilityEngine->translateText("Open transfer list"),"transfer-list.lst",facilityEngine->translateText("Transfer list")+" (*.lst)");
- if(fileName.isEmpty())
- return;
- emit signal_importTransferList(fileName);
-}
-
-void copyEngine::warningTransferList(const QString &warning)
-{
- QMessageBox::warning(interface,facilityEngine->translateText("Error"),warning);
-}
-
-void copyEngine::errorTransferList(const QString &error)
-{
- QMessageBox::critical(interface,facilityEngine->translateText("Error"),error);
-}
-
-bool copyEngine::setSpeedLimitation(const qint64 &speedLimitation)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"maxSpeed: "+QString::number(speedLimitation));
- maxSpeed=speedLimitation;
- return listThread->setSpeedLimitation(speedLimitation);
-}
-
-void copyEngine::setCollisionAction(const QString &action)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"action: "+action);
- if(action=="skip")
- alwaysDoThisActionForFileExists=FileExists_Skip;
- else if(action=="overwrite")
- alwaysDoThisActionForFileExists=FileExists_Overwrite;
- else if(action=="overwriteIfNewer")
- alwaysDoThisActionForFileExists=FileExists_OverwriteIfNewer;
- else if(action=="overwriteIfNotSameModificationDate")
- alwaysDoThisActionForFileExists=FileExists_OverwriteIfNotSameModificationDate;
- else if(action=="rename")
- alwaysDoThisActionForFileExists=FileExists_Rename;
- else
- alwaysDoThisActionForFileExists=FileExists_NotSet;
- emit signal_setCollisionAction(alwaysDoThisActionForFileExists);
-}
-
-void copyEngine::setErrorAction(const QString &action)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"action: "+action);
- if(action=="skip")
- alwaysDoThisActionForFileError=FileError_Skip;
- else if(action=="putToEndOfTheList")
- alwaysDoThisActionForFileError=FileError_PutToEndOfTheList;
- else
- alwaysDoThisActionForFileError=FileError_NotSet;
-}
-
-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);
-}
-
-//set block size in KB
-void copyEngine::setBlockSize(const int blockSize)
-{
- this->blockSize=blockSize;
- if(uiIsInstalled)
- ui->blockSize->setValue(blockSize);
- listThread->setBlockSize(blockSize);
-}
-
-//set auto start
-void copyEngine::setAutoStart(const bool autoStart)
-{
- this->autoStart=autoStart;
- if(uiIsInstalled)
- ui->autoStart->setChecked(autoStart);
- listThread->setAutoStart(autoStart);
-}
-
-/// \brief set rsync
-void copyEngine::setRsync(const bool rsync)
-{
- this->rsync=rsync;
- if(uiIsInstalled)
- {
- ui->rsync->setChecked(rsync);
- ui->rsync->setEnabled(forcedMode && mode==Copy);
- ui->label_rsync->setEnabled(forcedMode && mode==Copy);
- }
- listThread->setRsync(rsync);
-}
-
-//set check destination folder
-void copyEngine::setCheckDestinationFolderExists(const bool checkDestinationFolderExists)
-{
- this->checkDestinationFolderExists=checkDestinationFolderExists;
- if(uiIsInstalled)
- ui->checkBoxDestinationFolderExists->setChecked(checkDestinationFolderExists);
- listThread->setCheckDestinationFolderExists(checkDestinationFolderExists);
-}
-
-//reset widget
-void copyEngine::resetTempWidget()
-{
- tempWidget=NULL;
-}
-
-void copyEngine::on_comboBoxFolderColision_currentIndexChanged(int index)
-{
- switch(index)
- {
- case 0:
- setComboBoxFolderColision(FolderExists_NotSet,false);
- break;
- case 1:
- setComboBoxFolderColision(FolderExists_Merge,false);
- break;
- case 2:
- setComboBoxFolderColision(FolderExists_Skip,false);
- break;
- case 3:
- setComboBoxFolderColision(FolderExists_Rename,false);
- break;
- }
-}
-
-void copyEngine::on_comboBoxFolderError_currentIndexChanged(int index)
-{
- switch(index)
- {
- case 0:
- setComboBoxFolderError(FileError_NotSet,false);
- break;
- case 1:
- setComboBoxFolderError(FileError_Skip,false);
- break;
- }
-}
-
-//set the translate
-void copyEngine::newLanguageLoaded()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start, retranslate the widget options");
- if(tempWidget!=NULL)
- ui->retranslateUi(tempWidget);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"ui not loaded!");
-}
-
-void copyEngine::setComboBoxFolderColision(FolderExistsAction action,bool changeComboBox)
-{
- alwaysDoThisActionForFolderExists=action;
- emit signal_setFolderColision(alwaysDoThisActionForFolderExists);
- if(!changeComboBox || !uiIsInstalled)
- return;
- switch(action)
- {
- case FolderExists_Merge:
- ui->comboBoxFolderColision->setCurrentIndex(1);
- break;
- case FolderExists_Skip:
- ui->comboBoxFolderColision->setCurrentIndex(2);
- break;
- case FolderExists_Rename:
- ui->comboBoxFolderColision->setCurrentIndex(3);
- break;
- default:
- ui->comboBoxFolderColision->setCurrentIndex(0);
- break;
- }
-}
-
-void copyEngine::setComboBoxFolderError(FileErrorAction action,bool changeComboBox)
-{
- alwaysDoThisActionForFileError=action;
- if(!changeComboBox || !uiIsInstalled)
- return;
- switch(action)
- {
- case FileError_Skip:
- ui->comboBoxFolderError->setCurrentIndex(1);
- break;
- default:
- ui->comboBoxFolderError->setCurrentIndex(0);
- break;
- }
-}
-
-void copyEngine::doChecksum_toggled(bool doChecksum)
-{
- listThread->set_doChecksum(doChecksum);
-}
-
-void copyEngine::checksumOnlyOnError_toggled(bool checksumOnlyOnError)
-{
- listThread->set_checksumOnlyOnError(checksumOnlyOnError);
-}
-
-void copyEngine::checksumIgnoreIfImpossible_toggled(bool checksumIgnoreIfImpossible)
-{
- listThread->set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible);
-}
-
-void copyEngine::osBuffer_toggled(bool osBuffer)
-{
- listThread->set_osBuffer(osBuffer);
- ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked());
-}
-
-void copyEngine::osBufferLimited_toggled(bool osBufferLimited)
-{
- listThread->set_osBufferLimited(osBufferLimited);
- ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked());
-}
-
-void copyEngine::osBufferLimit_editingFinished()
-{
- emit send_osBufferLimit(ui->osBufferLimit->value());
-}
-
-void copyEngine::showFilterDialog()
-{
- if(filters!=NULL)
- filters->exec();
-}
-
-void copyEngine::sendNewFilters()
-{
- if(filters!=NULL)
- emit send_setFilters(filters->getInclude(),filters->getExclude());
-}
-
-void copyEngine::sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule)
-{
- ULTRACOPIER_DEBUGCONSOLE(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, can't access to the filters"));
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"options not loaded");
- return;
- }
- renamingRules->exec();
-}
-
-void copyEngine::get_realBytesTransfered(quint64 realBytesTransfered)
-{
- size_for_speed=realBytesTransfered;
-}
-
-void copyEngine::newActionInProgess(EngineActionInProgress action)
-{
- if(action==Idle)
- {
- timerProgression.stop();
- timerActionDone.stop();
- }
- else
- {
- timerProgression.start();
- timerActionDone.start();
- }
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/copyEngine.h b/plugins-alternative/CopyEngine/Rsync/copyEngine.h
deleted file mode 100755
index 5afa8b2..0000000
--- a/plugins-alternative/CopyEngine/Rsync/copyEngine.h
+++ /dev/null
@@ -1,362 +0,0 @@
-/** \file copyEngine.h
-\brief Define the copy engine
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include <QObject>
-#include <QList>
-#include <QStringList>
-#include <QFileInfo>
-#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_options.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 options;
-}
-
-/// \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::options * ui;
- bool uiIsInstalled;
- QWidget * interface;
- Filters * filters;
- RenamingRules * renamingRules;
- FacilityInterface * facilityEngine;
- int maxSpeed;
- bool doRightTransfer;
- bool keepDate;
- int blockSize;
- bool autoStart;
- bool rsync;
- bool checkDestinationFolderExists;
- FileExistsAction alwaysDoThisActionForFileExists;
- FileErrorAction alwaysDoThisActionForFileError;
- FileErrorAction alwaysDoThisActionForFolderError;
- FolderExistsAction alwaysDoThisActionForFolderExists;
- bool dialogIsOpen;
- volatile bool stopIt;
- /// \brief error queue
- struct errorQueueItem
- {
- TransferThread * transfer; ///< NULL if send by scan thread
- scanFileOrFolder * scan; ///< NULL if send by transfer thread
- bool mkPath;
- bool rmPath;
- QFileInfo inode;
- QString errorString;
- };
- QList<errorQueueItem> errorQueue;
- /// \brief already exists queue
- struct alreadyExistsQueueItem
- {
- TransferThread * transfer; ///< NULL if send by scan thread
- scanFileOrFolder * scan; ///< NULL if send by transfer thread
- QFileInfo source;
- QFileInfo destination;
- bool isSame;
- };
- QList<alreadyExistsQueueItem> alreadyExistsQueue;
- //temp variable
- int error_index,loop_size;
- FileErrorAction tempFileErrorAction;
- FolderExistsAction tempFolderExistsAction;
- FileExistsAction tempFileExistsAction;
- quint64 size_for_speed;//because direct access to list thread into the main thread can't be do
- CopyMode mode;
- bool forcedMode;
-
- bool doChecksum;
- bool checksumIgnoreIfImpossible;
- bool checksumOnlyOnError;
- bool osBuffer;
- bool osBufferLimited;
- unsigned int osBufferLimit;
- QStringList includeStrings,includeOptions,excludeStrings,excludeOptions;
- QString firstRenamingRule;
- QString otherRenamingRule;
-
- //send action done timer
- QTimer timerActionDone;
- //send progression timer
- QTimer timerProgression;
-private slots:
- #ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
- void updateTheDebugInfo(QStringList,QStringList,int);
- #endif
- //dialog message
- /// \note Can be call without queue because all call will be serialized
- void fileAlreadyExists(QFileInfo source,QFileInfo destination,bool isSame,TransferThread * thread,bool isCalledByShowOneNewDialog=false);
- /// \note Can be call without queue because all call will be serialized
- void errorOnFile(QFileInfo fileInfo,QString errorString,TransferThread * thread,bool isCalledByShowOneNewDialog=false);
- /// \note Can be call without queue because all call will be serialized
- void folderAlreadyExists(QFileInfo source,QFileInfo destination,bool isSame,scanFileOrFolder * thread,bool isCalledByShowOneNewDialog=false);
- /// \note Can be call without queue because all call will be serialized
- void errorOnFolder(QFileInfo fileInfo,QString errorString,scanFileOrFolder * thread,bool isCalledByShowOneNewDialog=false);
- //mkpath event
- void mkPathErrorOnFolder(QFileInfo,QString,bool isCalledByShowOneNewDialog=false);
- //rmpath event
- void rmPathErrorOnFolder(QFileInfo,QString,bool isCalledByShowOneNewDialog=false);
- //show one new dialog if needed
- void showOneNewDialog();
- void sendNewFilters();
-
- void doChecksum_toggled(bool);
- void checksumOnlyOnError_toggled(bool);
- void checksumIgnoreIfImpossible_toggled(bool);
- void osBuffer_toggled(bool);
- void osBufferLimited_toggled(bool);
- void osBufferLimit_editingFinished();
- void showFilterDialog();
- void sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule);
- void showRenamingRules();
- void get_realBytesTransfered(quint64 realBytesTransfered);
- void newActionInProgess(EngineActionInProgress);
-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);
- /** \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 * interface);
- //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 QStringList &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 QString &destination);
- //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 QStringList &sources);
- /** \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 QStringList &sources,const QString &destination);
- /** \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 QStringList &sources);
- /** \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 QStringList &sources,const QString &destination);
- /** \brief send the new transfer list
- * \param file the transfer list */
- void newTransferList(const QString &file);
-
- /** \brief to get byte read, use by Ultracopier for the speed calculation
- * real size transfered to right speed calculation */
- quint64 realByteTransfered();
- //speed limitation
- /** \brief get the speed limitation
- * < -1 if not able, 0 if disabled */
- qint64 getSpeedLimitation();
- //get collision action
- /** \brief get the collision action list */
- QList<QPair<QString,QString> > getCollisionAction();
- /** \brief get the collision error list */
- QList<QPair<QString,QString> > getErrorAction();
-
- /** \brief to set drives detected
- * specific to this copy engine */
- void setDrive(const QStringList &drives);
-
- /** \brief to sync the transfer list
- * Used when the interface is changed, useful to minimize the memory size */
- void syncTransferList();
-
- void set_doChecksum(bool doChecksum);
- void set_checksumIgnoreIfImpossible(bool checksumIgnoreIfImpossible);
- void set_checksumOnlyOnError(bool checksumOnlyOnError);
- void set_osBuffer(bool osBuffer);
- void set_osBufferLimited(bool osBufferLimited);
- void set_osBufferLimit(unsigned int osBufferLimit);
- void set_setFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions);
- void setRenamingRules(QString firstRenamingRule,QString otherRenamingRule);
-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 CopyMode &mode);
- /** \brief add file called on the interface
- * Used by manual adding */
- bool userAddFile(const CopyMode &mode);
- //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 quint64 &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 QList<int> &ids);
- /** \brief move on top of the list the selected item
- * \param ids ids is the id list of the selected items */
- void moveItemsOnTop(const QList<int> &ids);
- /** \brief move up the list the selected item
- * \param ids ids is the id list of the selected items */
- void moveItemsUp(const QList<int> &ids);
- /** \brief move down the list the selected item
- * \param ids ids is the id list of the selected items */
- void moveItemsDown(const QList<int> &ids);
- /** \brief move on bottom of the list the selected item
- * \param ids ids is the id list of the selected items */
- void moveItemsOnBottom(const QList<int> &ids);
-
- /** \brief give the forced mode, to export/import transfer list */
- void forceMode(const CopyMode &mode);
- /// \brief export the transfer list into a file
- void exportTransferList();
- /// \brief import the transfer list into a file
- void importTransferList();
-
- /** \brief to set the speed limitation
- * -1 if not able, 0 if disabled */
- bool setSpeedLimitation(const qint64 &speedLimitation);
- //action
- /// \brief to set the collision action
- void setCollisionAction(const QString &action);
- /// \brief to set the error action
- void setErrorAction(const QString &action);
-
- // 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);
- /// \brief set block size in KB
- void setBlockSize(const int blockSize);
- /// \brief set auto start
- void setAutoStart(const bool autoStart);
- /// \brief set rsync
- void setRsync(const bool rsync);
- /// \brief set if need check if the destination folder exists
- void setCheckDestinationFolderExists(const bool checkDestinationFolderExists);
- /// \brief reset widget
- void resetTempWidget();
- //autoconnect
- void on_comboBoxFolderColision_currentIndexChanged(int index);
- void on_comboBoxFolderError_currentIndexChanged(int index);
- /// \brief need retranslate the insterface
- void newLanguageLoaded();
-private slots:
- void setComboBoxFolderColision(FolderExistsAction action,bool changeComboBox=true);
- void setComboBoxFolderError(FileErrorAction action,bool changeComboBox=true);
- void warningTransferList(const QString &warning);
- void errorTransferList(const QString &error);
-signals:
- //send information about the copy
- void actionInProgess(EngineActionInProgress); //should update interface information on this event
-
- void newActionOnList(const QList<returnActionOnCopyList> &);///very important, need be temporized to group the modification to do and not flood the interface
- void syncReady();
-
- /** \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 QList<ProgressionItem> &progressionList);
- //get information about the copy
- /** \brief to get the general progression
- * first = current transfered byte, second = byte to transfer */
- void pushGeneralProgression(const quint64 &,const quint64 &);
-
- void newFolderListing(const QString &path);
- void newCollisionAction(const QString &action);
- void newErrorAction(const QString &action);
- void isInPause(bool);
-
- //action on the copy
- void signal_pause();
- void signal_resume();
- void signal_skip(const quint64 &id);
-
- //edit the transfer list
- void signal_removeItems(const QList<int> &ids);
- void signal_moveItemsOnTop(const QList<int> &ids);
- void signal_moveItemsUp(const QList<int> &ids);
- void signal_moveItemsDown(const QList<int> &ids);
- void signal_moveItemsOnBottom(const QList<int> &ids);
-
- void signal_forceMode(const CopyMode &mode);
- void signal_exportTransferList(const QString &fileName);
- void signal_importTransferList(const QString &fileName);
-
- //action
- void signal_setCollisionAction(FileExistsAction alwaysDoThisActionForFileExists);
- void signal_setComboBoxFolderColision(FolderExistsAction action);
- void signal_setFolderColision(FolderExistsAction action);
-
- //when the cancel is clicked on copy engine dialog
- void cancelAll();
-
- //internal cancel
- void tryCancel();
-
- //when can be deleted
- void canBeDeleted();
-
- //send error occurred
- void error(const QString &path,const quint64 &size,const QDateTime &mtime,const QString &error);
- //for the extra logging
- void rmPath(const QString &path);
- void mkPath(const QString &path);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- /// \brief To debug source
- void debugInformation(DebugLevel level,QString fonction,QString text,QString file,int ligne);
- #endif
-
- //other signals
- void queryOneNewDialog();
-
- void send_osBufferLimit(const unsigned int &osBufferLimit);
- void send_setFilters(const QList<Filters_rules> &include,const QList<Filters_rules> &exclude);
- void send_sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule);
-};
-
-#endif // COPY_ENGINE_H
diff --git a/plugins-alternative/CopyEngine/Rsync/copyEngine.pro b/plugins-alternative/CopyEngine/Rsync/copyEngine.pro
deleted file mode 100644
index 13ab523..0000000
--- a/plugins-alternative/CopyEngine/Rsync/copyEngine.pro
+++ /dev/null
@@ -1,82 +0,0 @@
-TEMPLATE = lib
-CONFIG += plugin
-HEADERS = copyEngine.h \
- StructEnumDefinition.h \
- scanFileOrFolder.h \
- fileErrorDialog.h \
- fileExistsDialog.h \
- fileIsSameDialog.h \
- factory.h \
- StructEnumDefinition_CopyEngine.h \
- DebugEngineMacro.h \
- Variable.h \
- debugDialog.h \
- TransferThread.h \
- ReadThread.h \
- WriteThread.h \
- RmPath.h \
- MkPath.h \
- folderExistsDialog.h \
- AvancedQFile.h \
- ListThread.h \
- ../../../interface/PluginInterface_CopyEngine.h \
- ../../../interface/OptionInterface.h \
- ../../../interface/FacilityInterface.h \
- Filters.h \
- FilterRules.h \
- RenamingRules.h
-SOURCES = copyEngine.cpp \
- scanFileOrFolder.cpp \
- fileErrorDialog.cpp \
- fileExistsDialog.cpp \
- fileIsSameDialog.cpp \
- factory.cpp \
- debugDialog.cpp \
- TransferThread.cpp \
- ReadThread.cpp \
- WriteThread.cpp \
- RmPath.cpp \
- MkPath.cpp \
- folderExistsDialog.cpp \
- AvancedQFile.cpp \
- copyEngine-collision-and-error.cpp \
- ListThread.cpp \
- Filters.cpp \
- FilterRules.cpp \
- RenamingRules.cpp \
- ListThread_InodeAction.cpp
-TARGET = $$qtLibraryTarget(copyEngine)
-TRANSLATIONS += Languages/fr/translation.ts \
- Languages/ar/translation.ts \
- Languages/zh/translation.ts \
- Languages/es/translation.ts \
- Languages/de/translation.ts \
- Languages/el/translation.ts \
- Languages/it/translation.ts \
- Languages/ja/translation.ts \
- Languages/id/translation.ts \
- Languages/pl/translation.ts \
- Languages/ru/translation.ts \
- Languages/tr/translation.ts \
- Languages/th/translation.ts \
- Languages/hi/translation.ts \
- Languages/nl/translation.ts \
- Languages/no/translation.ts \
- Languages/pt/translation.ts \
- Languages/ko/translation.ts
-
-FORMS += \
- options.ui \
- fileErrorDialog.ui \
- fileExistsDialog.ui \
- fileIsSameDialog.ui \
- debugDialog.ui \
- folderExistsDialog.ui \
- Filters.ui \
- FilterRules.ui \
- RenamingRules.ui
-
-OTHER_FILES += informations.xml
-
-RESOURCES += \
- resources.qrc
diff --git a/plugins-alternative/CopyEngine/Rsync/debugDialog.cpp b/plugins-alternative/CopyEngine/Rsync/debugDialog.cpp
deleted file mode 100644
index a03aec0..0000000
--- a/plugins-alternative/CopyEngine/Rsync/debugDialog.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/** \file debugDialog.cpp
-\brief Define the dialog to have debug information
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include "debugDialog.h"
-#include "ui_debugDialog.h"
-
-#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
-
-debugDialog::debugDialog(QWidget *parent) :
- QWidget(parent),
- ui(new Ui::debugDialog)
-{
- ui->setupUi(this);
-}
-
-debugDialog::~debugDialog()
-{
- delete ui;
-}
-
-void debugDialog::setTransferList(const QStringList &list)
-{
- if(list.size()==ui->tranferList->count())
- {
- int index=0;
- while(index<list.size())
- {
- ui->tranferList->item(index)->setText(list.at(index));
- index++;
- }
- }
- else
- {
- ui->tranferList->clear();
- ui->tranferList->addItems(list);
- }
-}
-
-void debugDialog::setActiveTransfer(int activeTransfer)
-{
- ui->spinBoxActiveTransfer->setValue(activeTransfer);
-}
-
-void debugDialog::setInodeUsage(int inodeUsage)
-{
- ui->spinBoxNumberOfInode->setValue(inodeUsage);
-}
-
-void debugDialog::setTransferThreadList(const QStringList &list)
-{
- if(list.size()==ui->transferThreadList->count())
- {
- int index=0;
- while(index<list.size())
- {
- ui->transferThreadList->item(index)->setText(list.at(index));
- index++;
- }
- }
- else
- {
- ui->transferThreadList->clear();
- ui->transferThreadList->addItems(list);
- }
-}
-
-#endif
diff --git a/plugins-alternative/CopyEngine/Rsync/debugDialog.h b/plugins-alternative/CopyEngine/Rsync/debugDialog.h
deleted file mode 100644
index 3d48857..0000000
--- a/plugins-alternative/CopyEngine/Rsync/debugDialog.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/** \file debugDialog.h
-\brief Define the dialog to have debug information
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#ifndef DEBUGDAILOG_H
-#define DEBUGDAILOG_H
-
-#include "Environment.h"
-
-#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
-#include <QWidget>
-
-namespace Ui {
- class debugDialog;
-}
-
-/// \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 QStringList &list);
- /// \brief show the transfer thread, it show be a thread pool in normal time
- void setTransferThreadList(const QStringList &list);
- /// \brief show how many transfer is active
- void setActiveTransfer(int activeTransfer);
- /// \brief show many many inode is manipulated
- void setInodeUsage(int inodeUsage);
-private:
- Ui::debugDialog *ui;
-};
-
-#endif // ULTRACOPIER_PLUGIN_DEBUG_WINDOW
-
-#endif // DEBUGDAILOG_H
diff --git a/plugins-alternative/CopyEngine/Rsync/debugDialog.ui b/plugins-alternative/CopyEngine/Rsync/debugDialog.ui
deleted file mode 100644
index 0df03be..0000000
--- a/plugins-alternative/CopyEngine/Rsync/debugDialog.ui
+++ /dev/null
@@ -1,100 +0,0 @@
-<?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="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="1" column="1">
- <widget class="QSpinBox" name="spinBoxNumberOfInode">
- <property name="readOnly">
- <bool>true</bool>
- </property>
- <property name="maximum">
- <number>9999</number>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/plugins-alternative/CopyEngine/Rsync/documentation.dox b/plugins-alternative/CopyEngine/Rsync/documentation.dox
deleted file mode 100755
index 2ff6edd..0000000
--- a/plugins-alternative/CopyEngine/Rsync/documentation.dox
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- mode: C++ ; c-file-style: "stroustrup" -*- **/
-
-/*
- This file contains NO source code, just some documentation for doxygen to
- parse.
-*/
-
-/*!
- \mainpage Copy engine 0.3
-
- \section mainpage_overview Overview
-
- The rsync copy engine for Ultracopier 0.3. Support file/folder, copy/move, ...\n
- Thanks to this engine, Ultracopier is transformed into GUI + rsync.
- More informations on <a href="http://ultracopier-wiki.first-world.info/">the wiki of ultracopier</a>. Is part of Ultracopier 0.3 project.
-
- \section mainpage_platforms Platforms
-
- This plugin might be usable in all environments where you find Qt 4, but Gcc is requiered for some part.\n
- This plugin requires Qt 4.5.x or newer. Tested on Qt 4.7. Due to optimization Qt 4.8 usage will be better.\n
- To be compatible with the official Ultracopier plugins, you need compil it with Gcc, Qt4.8, and same env as Ultracopier have been compiled, see the documentation.
-
- \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 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-alternative/CopyEngine/Rsync/factory.cpp b/plugins-alternative/CopyEngine/Rsync/factory.cpp
deleted file mode 100644
index 7ed27d4..0000000
--- a/plugins-alternative/CopyEngine/Rsync/factory.cpp
+++ /dev/null
@@ -1,420 +0,0 @@
-/** \file factory.cpp
-\brief Define the factory to create new instance
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include <QtCore>
-#include <QFileDialog>
-
-#include "factory.h"
-
-Factory::Factory() :
- ui(new Ui::options())
-{
- tempWidget=new QWidget();
- ui->setupUi(tempWidget);
- errorFound=false;
- optionsEngine=NULL;
- filters=new Filters(tempWidget);
- renamingRules=new RenamingRules(tempWidget);
- #if defined (Q_OS_WIN32)
- QFileInfoList temp=QDir::drives();
- for (int i = 0; i < temp.size(); ++i) {
- mountSysPoint<<temp.at(i).filePath();
- }
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"mountSysPoint: "+mountSysPoint.join(";"));
- #elif defined (Q_OS_LINUX)
- connect(&mount,SIGNAL(error(QProcess::ProcessError)), this,SLOT(error(QProcess::ProcessError)));
- connect(&mount,SIGNAL(finished(int,QProcess::ExitStatus)), this,SLOT(finished(int,QProcess::ExitStatus)));
- connect(&mount,SIGNAL(readyReadStandardOutput()), this,SLOT(readyReadStandardOutput()));
- connect(&mount,SIGNAL(readyReadStandardError()), this,SLOT(readyReadStandardError()));
- mount.start("mount");
- #endif
- connect(ui->doRightTransfer, SIGNAL(toggled(bool)), this,SLOT(setDoRightTransfer(bool)));
- connect(ui->keepDate, SIGNAL(toggled(bool)), this,SLOT(setKeepDate(bool)));
- connect(ui->blockSize, SIGNAL(valueChanged(int)), this,SLOT(setBlockSize(int)));
- connect(ui->autoStart, SIGNAL(toggled(bool)), this,SLOT(setAutoStart(bool)));
- connect(ui->rsync, SIGNAL(toggled(bool)), this,SLOT(setRsync(bool)));
- connect(ui->doChecksum, SIGNAL(toggled(bool)), this,SLOT(doChecksum_toggled(bool)));
- connect(ui->checksumIgnoreIfImpossible, SIGNAL(toggled(bool)), this,SLOT(checksumIgnoreIfImpossible_toggled(bool)));
- connect(ui->checksumOnlyOnError, SIGNAL(toggled(bool)), this,SLOT(checksumOnlyOnError_toggled(bool)));
- connect(ui->osBuffer, SIGNAL(toggled(bool)), this,SLOT(osBuffer_toggled(bool)));
- connect(ui->osBufferLimited, SIGNAL(toggled(bool)), this,SLOT(osBufferLimited_toggled(bool)));
- connect(ui->osBufferLimit, SIGNAL(editingFinished()), this,SLOT(osBufferLimit_editingFinished()));
-
- connect(filters,SIGNAL(sendNewFilters(QStringList,QStringList,QStringList,QStringList)),this,SLOT(sendNewFilters(QStringList,QStringList,QStringList,QStringList)));
- connect(ui->filters,SIGNAL(clicked()),this,SLOT(showFilterDialog()));
- connect(renamingRules,SIGNAL(sendNewRenamingRules(QString,QString)),this,SLOT(sendNewRenamingRules(QString,QString)));
- connect(ui->renamingRules,SIGNAL(clicked()),this,SLOT(showRenamingRules()));
-
- ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked());
-}
-
-Factory::~Factory()
-{
- delete renamingRules;
- delete filters;
- delete ui;
-}
-
-PluginInterface_CopyEngine * Factory::getInstance()
-{
- copyEngine *realObject=new copyEngine(facilityEngine);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- connect(realObject,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)),this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)));
- #endif
- realObject->connectTheSignalsSlots();
- realObject->setDrive(mountSysPoint);
- PluginInterface_CopyEngine * newTransferEngine=realObject;
- connect(this,SIGNAL(reloadLanguage()),newTransferEngine,SLOT(newLanguageLoaded()));
- realObject->setRightTransfer( optionsEngine->getOptionValue("doRightTransfer").toBool());
- realObject->setKeepDate( optionsEngine->getOptionValue("keepDate").toBool());
- realObject->setBlockSize( optionsEngine->getOptionValue("blockSize").toInt());
- realObject->setAutoStart( optionsEngine->getOptionValue("autoStart").toBool());
- realObject->setRsync( optionsEngine->getOptionValue("rsync").toBool());
- realObject->on_comboBoxFolderColision_currentIndexChanged(ui->comboBoxFolderColision->currentIndex());
- realObject->on_comboBoxFolderError_currentIndexChanged(ui->comboBoxFolderError->currentIndex());
- realObject->setCheckDestinationFolderExists( optionsEngine->getOptionValue("checkDestinationFolder").toBool());
-
- realObject->set_doChecksum(optionsEngine->getOptionValue("doChecksum").toBool());
- realObject->set_checksumIgnoreIfImpossible(optionsEngine->getOptionValue("checksumIgnoreIfImpossible").toBool());
- realObject->set_checksumOnlyOnError(optionsEngine->getOptionValue("checksumOnlyOnError").toBool());
- realObject->set_osBuffer(optionsEngine->getOptionValue("osBuffer").toBool());
- realObject->set_osBufferLimited(optionsEngine->getOptionValue("osBufferLimited").toBool());
- realObject->set_osBufferLimit(optionsEngine->getOptionValue("osBufferLimit").toUInt());
- realObject->set_setFilters(optionsEngine->getOptionValue("includeStrings").toStringList(),
- optionsEngine->getOptionValue("includeOptions").toStringList(),
- optionsEngine->getOptionValue("excludeStrings").toStringList(),
- optionsEngine->getOptionValue("excludeOptions").toStringList()
- );
- realObject->setRenamingRules(optionsEngine->getOptionValue("firstRenamingRule").toString(),optionsEngine->getOptionValue("otherRenamingRule").toString());
- return newTransferEngine;
-}
-
-void Factory::setResources(OptionInterface * options,const QString &writePath,const QString &pluginPath,FacilityInterface * facilityInterface,const bool &portableVersion)
-{
- ULTRACOPIER_DEBUGCONSOLE(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(DebugLevel_Information,"Unable to change date time of files, only gcc is supported");
- #endif
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,COMPILERINFO);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"MAX BUFFER BLOCK: "+QString::number(ULTRACOPIER_PLUGIN_MAXBUFFERBLOCK));
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"MIN TIMER INTERVAL: "+QString::number(ULTRACOPIER_PLUGIN_MINTIMERINTERVAL));
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"MAX TIMER INTERVAL: "+QString::number(ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL));
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"NUM SEM SPEED MANAGEMENT: "+QString::number(ULTRACOPIER_PLUGIN_NUMSEMSPEEDMANAGEMENT));
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"MAX PARALLEL INODE OPT: "+QString::number(ULTRACOPIER_PLUGIN_MAXPARALLELINODEOPT));
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"MAX PARALLEL TRANFER: "+QString::number(ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER));
- #if defined (ULTRACOPIER_PLUGIN_CHECKLISTTYPE)
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"CHECK LIST TYPE set");
- #else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"CHECK LIST TYPE not set");
- #endif
- if(options!=NULL)
- {
- optionsEngine=options;
- //load the options
- QList<QPair<QString, QVariant> > KeysList;
- KeysList.append(qMakePair(QString("doRightTransfer"),QVariant(true)));
- KeysList.append(qMakePair(QString("keepDate"),QVariant(true)));
- KeysList.append(qMakePair(QString("blockSize"),QVariant(1024)));//1024KB as default
- KeysList.append(qMakePair(QString("autoStart"),QVariant(true)));
- KeysList.append(qMakePair(QString("rsync"),QVariant(true)));
- KeysList.append(qMakePair(QString("folderError"),QVariant(0)));
- KeysList.append(qMakePair(QString("folderColision"),QVariant(0)));
- KeysList.append(qMakePair(QString("checkDestinationFolder"),QVariant(true)));
- KeysList.append(qMakePair(QString("includeStrings"),QVariant(QStringList())));
- KeysList.append(qMakePair(QString("includeOptions"),QVariant(QStringList())));
- KeysList.append(qMakePair(QString("excludeStrings"),QVariant(QStringList())));
- KeysList.append(qMakePair(QString("excludeOptions"),QVariant(QStringList())));
- KeysList.append(qMakePair(QString("doChecksum"),QVariant(true)));
- KeysList.append(qMakePair(QString("checksumIgnoreIfImpossible"),QVariant(true)));
- KeysList.append(qMakePair(QString("checksumOnlyOnError"),QVariant(true)));
- KeysList.append(qMakePair(QString("osBuffer"),QVariant(true)));
- KeysList.append(qMakePair(QString("firstRenamingRule"),QVariant("")));
- KeysList.append(qMakePair(QString("otherRenamingRule"),QVariant("")));
- #ifdef Q_OS_WIN32
- KeysList.append(qMakePair(QString("osBufferLimited"),QVariant(true)));
- #else
- KeysList.append(qMakePair(QString("osBufferLimited"),QVariant(false)));
- #endif
- KeysList.append(qMakePair(QString("osBufferLimit"),QVariant(512)));
- optionsEngine->addOptionGroup(KeysList);
- #if ! defined (Q_CC_GNU)
- ui->keepDate->setEnabled(false);
- ui->keepDate->setToolTip("Not supported with this compiler");
- #endif
- ui->doRightTransfer->setChecked(optionsEngine->getOptionValue("doRightTransfer").toBool());
- ui->keepDate->setChecked(optionsEngine->getOptionValue("keepDate").toBool());
- ui->blockSize->setValue(optionsEngine->getOptionValue("blockSize").toUInt());
- ui->autoStart->setChecked(optionsEngine->getOptionValue("autoStart").toBool());
- ui->rsync->setChecked(optionsEngine->getOptionValue("rsync").toBool());
- ui->comboBoxFolderError->setCurrentIndex(optionsEngine->getOptionValue("folderError").toUInt());
- ui->comboBoxFolderColision->setCurrentIndex(optionsEngine->getOptionValue("folderColision").toUInt());
- ui->checkBoxDestinationFolderExists->setChecked(optionsEngine->getOptionValue("checkDestinationFolder").toBool());
- ui->doChecksum->setChecked(optionsEngine->getOptionValue("doChecksum").toBool());
- ui->checksumIgnoreIfImpossible->setChecked(optionsEngine->getOptionValue("checksumIgnoreIfImpossible").toBool());
- ui->checksumOnlyOnError->setChecked(optionsEngine->getOptionValue("checksumOnlyOnError").toBool());
- ui->osBuffer->setChecked(optionsEngine->getOptionValue("osBuffer").toBool());
- ui->osBufferLimited->setChecked(optionsEngine->getOptionValue("osBufferLimited").toBool());
- ui->osBufferLimit->setValue(optionsEngine->getOptionValue("osBufferLimit").toUInt());
- filters->setFilters(optionsEngine->getOptionValue("includeStrings").toStringList(),
- optionsEngine->getOptionValue("includeOptions").toStringList(),
- optionsEngine->getOptionValue("excludeStrings").toStringList(),
- optionsEngine->getOptionValue("excludeOptions").toStringList()
- );
- renamingRules->setRenamingRules(optionsEngine->getOptionValue("firstRenamingRule").toString(),optionsEngine->getOptionValue("otherRenamingRule").toString());
- }
-}
-
-QStringList Factory::supportedProtocolsForTheSource()
-{
- return QStringList() << "file";
-}
-
-QStringList Factory::supportedProtocolsForTheDestination()
-{
- return QStringList() << "file";
-}
-
-CopyType Factory::getCopyType()
-{
- return FileAndFolder;
-}
-
-TransferListOperation Factory::getTransferListOperation()
-{
- return TransferListOperation_ImportExport;
-}
-
-bool Factory::canDoOnlyCopy()
-{
- return false;
-}
-
-void Factory::error(QProcess::ProcessError error)
-{
- #ifndef ULTRACOPIER_PLUGIN_DEBUG
- Q_UNUSED(error)
- #endif
- errorFound=true;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"have detected error: "+QString::number(error));
-}
-
-void Factory::finished(int exitCode, QProcess::ExitStatus exitStatus)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"exitCode: "+QString::number(exitCode)+", exitStatus: "+QString::number(exitStatus));
- #ifndef ULTRACOPIER_PLUGIN_DEBUG
- Q_UNUSED(exitCode)
- Q_UNUSED(exitStatus)
- #endif
- if(!StandardError.isEmpty())
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"have finished with text on error output: "+StandardError);
- else if(errorFound)
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,"have finished with error and no text");
- {
- QStringList tempList=StandardOutput.split(QRegExp("[\n\r]+"));
- int index=0;
- while(index<tempList.size())
- {
- QString newString=tempList.at(index);
- newString=newString.remove(QRegExp("^.* on "));
- newString=newString.remove(QRegExp(" type .*$"));
- if(!newString.endsWith(QDir::separator()))
- newString+=QDir::separator();
- mountSysPoint<<newString;
- index++;
- }
- mountSysPoint.removeDuplicates();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"mountSysPoint: "+mountSysPoint.join(";"));
- }
-}
-
-void Factory::readyReadStandardError()
-{
- StandardError+=mount.readAllStandardError();
-}
-
-void Factory::readyReadStandardOutput()
-{
- StandardOutput+=mount.readAllStandardOutput();
-}
-
-void Factory::resetOptions()
-{
-}
-
-QWidget * Factory::options()
-{
- ui->autoStart->setChecked(optionsEngine->getOptionValue("autoStart").toBool());
- return tempWidget;
-}
-
-void Factory::setDoRightTransfer(bool doRightTransfer)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("doRightTransfer",doRightTransfer);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented");
-}
-
-void Factory::setKeepDate(bool keepDate)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("keepDate",keepDate);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented");
-}
-
-void Factory::setBlockSize(int blockSize)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("blockSize",blockSize);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented");
-}
-
-void Factory::setAutoStart(bool autoStart)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("autoStart",autoStart);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented");
-}
-
-void Factory::setRsync(bool rsync)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("rsync",rsync);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented");
-}
-
-void Factory::newLanguageLoaded()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start, retranslate the widget options");
- ui->retranslateUi(tempWidget);
- if(optionsEngine!=NULL)
- {
- filters->newLanguageLoaded();
- renamingRules->newLanguageLoaded();
- }
- emit reloadLanguage();
-}
-
-Q_EXPORT_PLUGIN2(copyEngine, Factory);
-
-void Factory::doChecksum_toggled(bool doChecksum)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("doChecksum",doChecksum);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented");
-}
-
-void Factory::checksumOnlyOnError_toggled(bool checksumOnlyOnError)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("checksumOnlyOnError",checksumOnlyOnError);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented");
-}
-
-void Factory::osBuffer_toggled(bool osBuffer)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("osBuffer",osBuffer);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented");
- ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked());
-}
-
-void Factory::osBufferLimited_toggled(bool osBufferLimited)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("osBufferLimited",osBufferLimited);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented");
- ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked());
-}
-
-void Factory::osBufferLimit_editingFinished()
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the spinbox have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("osBufferLimit",ui->osBufferLimit->value());
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented");
-}
-
-void Factory::showFilterDialog()
-{
- if(optionsEngine==NULL)
- {
- QMessageBox::critical(NULL,tr("Options error"),tr("Options engine is not loaded, can't access to the filters"));
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"options not loaded");
- return;
- }
- filters->exec();
-}
-
-void Factory::sendNewFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"new filter");
- if(optionsEngine!=NULL)
- {
- optionsEngine->setOptionValue("includeStrings",includeStrings);
- optionsEngine->setOptionValue("includeOptions",includeOptions);
- optionsEngine->setOptionValue("excludeStrings",excludeStrings);
- optionsEngine->setOptionValue("excludeOptions",excludeOptions);
- }
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented");
-}
-
-void Factory::sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"new filter");
- if(optionsEngine!=NULL)
- {
- optionsEngine->setOptionValue("firstRenamingRule",firstRenamingRule);
- optionsEngine->setOptionValue("otherRenamingRule",otherRenamingRule);
- }
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented");
-}
-
-void Factory::showRenamingRules()
-{
- if(optionsEngine==NULL)
- {
- QMessageBox::critical(NULL,tr("Options error"),tr("Options engine is not loaded, can't access to the filters"));
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"options not loaded");
- return;
- }
- renamingRules->exec();
-}
-
-void Factory::checksumIgnoreIfImpossible_toggled(bool checksumIgnoreIfImpossible)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"the checkbox have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("checksumIgnoreIfImpossible",checksumIgnoreIfImpossible);
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"internal error, crash prevented");
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/factory.h b/plugins-alternative/CopyEngine/Rsync/factory.h
deleted file mode 100644
index 40c6d53..0000000
--- a/plugins-alternative/CopyEngine/Rsync/factory.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/** \file factory.h
-\brief Define the factory to create new instance
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include <QObject>
-#include <QList>
-#include <QStringList>
-#include <QFileInfo>
-#include <QProcess>
-
-#include "../../../interface/PluginInterface_CopyEngine.h"
-#include "StructEnumDefinition.h"
-#include "ui_options.h"
-#include "copyEngine.h"
-#include "Environment.h"
-#include "Filters.h"
-#include "RenamingRules.h"
-
-#ifndef FACTORY_H
-#define FACTORY_H
-
-namespace Ui {
- class options;
-}
-
-/** \brief to generate copy engine instance */
-class Factory : public PluginInterface_CopyEngineFactory
-{
- Q_OBJECT
- Q_INTERFACES(PluginInterface_CopyEngineFactory)
-public:
- Factory();
- ~Factory();
- /// \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 QString &writePath,const QString &pluginPath,FacilityInterface * facilityInterface,const bool &portableVersion);
- //get mode allowed
- /// \brief define if can copy file, folder or both
- CopyType getCopyType();
- /// \brief to return which kind of transfer list operation is supported
- TransferListOperation getTransferListOperation();
- /// \brief define if can only copy, or copy and move
- bool canDoOnlyCopy();
- /// \brief to get the supported protocols for the source
- QStringList supportedProtocolsForTheSource();
- /// \brief to get the supported protocols for the destination
- QStringList supportedProtocolsForTheDestination();
- /// \brief to get the options of the copy engine
- QWidget * options();
-private:
- Ui::options *ui;
- QWidget* tempWidget;
- OptionInterface * optionsEngine;
- QStringList mountSysPoint;
- QProcess mount;
- QString StandardError;
- QString StandardOutput;
- bool errorFound;
- FacilityInterface * facilityEngine;
- Filters *filters;
- RenamingRules *renamingRules;
-private slots:
- void error(QProcess::ProcessError error);
- void finished(int exitCode, QProcess::ExitStatus exitStatus);
- void readyReadStandardError();
- void readyReadStandardOutput();
- void setDoRightTransfer(bool doRightTransfer);
- void setKeepDate(bool keepDate);
- void setBlockSize(int blockSize);
- void setAutoStart(bool autoStart);
- void setRsync(bool rsync);
- void showFilterDialog();
- void sendNewFilters(QStringList includeStrings,QStringList includeOptions,QStringList excludeStrings,QStringList excludeOptions);
- void doChecksum_toggled(bool);
- void checksumOnlyOnError_toggled(bool);
- void osBuffer_toggled(bool);
- void osBufferLimited_toggled(bool);
- void osBufferLimit_editingFinished();
- void checksumIgnoreIfImpossible_toggled(bool);
- void sendNewRenamingRules(QString firstRenamingRule,QString otherRenamingRule);
- void showRenamingRules();
-public slots:
- void resetOptions();
- void newLanguageLoaded();
-signals:
- void reloadLanguage();
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- /// \brief To debug source
- void debugInformation(DebugLevel level,QString fonction,QString text,QString file,int ligne);
- #endif
-};
-
-#endif // FACTORY_H
diff --git a/plugins-alternative/CopyEngine/Rsync/fileErrorDialog.cpp b/plugins-alternative/CopyEngine/Rsync/fileErrorDialog.cpp
deleted file mode 100644
index 0d9fa9a..0000000
--- a/plugins-alternative/CopyEngine/Rsync/fileErrorDialog.cpp
+++ /dev/null
@@ -1,95 +0,0 @@
-#include "fileErrorDialog.h"
-#include "ui_fileErrorDialog.h"
-
-fileErrorDialog::fileErrorDialog(QWidget *parent,QFileInfo fileInfo,QString errorString,bool havePutAtTheEndButton) :
- QDialog(parent),
- ui(new Ui::fileErrorDialog)
-{
- ui->setupUi(this);
- action=FileError_Cancel;
- ui->label_error->setText(errorString);
- ui->label_content_file_name->setText(fileInfo.fileName());
- if(fileInfo.exists())
- {
- ui->label_content_size->setText(QString::number(fileInfo.size()));
- QDateTime maxTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1));
- if(maxTime<fileInfo.lastModified())
- {
- ui->label_modified->setVisible(true);
- ui->label_content_modified->setVisible(true);
- ui->label_content_modified->setText(fileInfo.lastModified().toString());
- }
- else
- {
- ui->label_modified->setVisible(false);
- ui->label_content_modified->setVisible(false);
- }
- if(fileInfo.isDir())
- {
- this->setWindowTitle(tr("Error on folder"));
- ui->label_size->hide();
- ui->label_content_size->hide();
- ui->label_file_name->setText(tr("Folder name"));
- }
- }
- else
- {
- ui->label_size->hide();
- ui->label_content_size->hide();
- ui->label_modified->hide();
- ui->label_content_modified->hide();
- }
- if(!havePutAtTheEndButton)
- ui->PutToBottom->hide();
-}
-
-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;
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/fileErrorDialog.h b/plugins-alternative/CopyEngine/Rsync/fileErrorDialog.h
deleted file mode 100644
index b14fe87..0000000
--- a/plugins-alternative/CopyEngine/Rsync/fileErrorDialog.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/** \file fileErrorDialog.h
-\brief Define the dialog error on the file
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include <QDialog>
-#include <QWidget>
-#include <QString>
-#include <QDateTime>
-#include <QFileInfo>
-#include "Environment.h"
-
-#ifndef FILEERRORDIALOG_H
-#define FILEERRORDIALOG_H
-
-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,QFileInfo fileInfo,QString errorString,bool havePutAtTheEndButton=true);
- ~fileErrorDialog();
- /// \brief return the the always checkbox is checked
- bool getAlways();
- /// \brief return the action clicked
- FileErrorAction getAction();
-protected:
- void changeEvent(QEvent *e);
-private slots:
- void on_PutToBottom_clicked();
- void on_Retry_clicked();
- void on_Skip_clicked();
- void on_Cancel_clicked();
-private:
- Ui::fileErrorDialog *ui;
- FileErrorAction action;
-};
-
-#endif // FILEERRORDIALOG_H
diff --git a/plugins-alternative/CopyEngine/Rsync/fileErrorDialog.ui b/plugins-alternative/CopyEngine/Rsync/fileErrorDialog.ui
deleted file mode 100644
index c5027e7..0000000
--- a/plugins-alternative/CopyEngine/Rsync/fileErrorDialog.ui
+++ /dev/null
@@ -1,220 +0,0 @@
-<?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>478</width>
- <height>154</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Error on 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">
- <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>
- </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 do 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="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-alternative/CopyEngine/Rsync/fileExistsDialog.cpp b/plugins-alternative/CopyEngine/Rsync/fileExistsDialog.cpp
deleted file mode 100644
index 191dd79..0000000
--- a/plugins-alternative/CopyEngine/Rsync/fileExistsDialog.cpp
+++ /dev/null
@@ -1,189 +0,0 @@
-#include "fileExistsDialog.h"
-#include "ui_fileExistsDialog.h"
-
-#include <QDebug>
-
-fileExistsDialog::fileExistsDialog(QWidget *parent,QFileInfo source,QFileInfo destination,QString firstRenamingRule,QString otherRenamingRule) :
- QDialog(parent),
- ui(new Ui::fileExistsDialog)
-{
- ui->setupUi(this);
- action=FileExists_Cancel;
- destinationInfo=destination;
- oldName=destination.fileName();
- ui->lineEditNewName->setText(oldName);
- ui->lineEditNewName->setPlaceholderText(oldName);
- ui->Overwrite->addAction(ui->actionOverwrite_if_newer);
- ui->Overwrite->addAction(ui->actionOverwrite_if_not_same_modification_date);
- ui->label_content_source_size->setText(QString::number(source.size()));
- ui->label_content_source_modified->setText(source.lastModified().toString());
- ui->label_content_source_file_name->setText(source.fileName());
- ui->label_content_destination_size->setText(QString::number(destination.size()));
- ui->label_content_destination_modified->setText(destination.lastModified().toString());
- ui->label_content_destination_file_name->setText(destination.fileName());
- QDateTime maxTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1));
- if(maxTime<source.lastModified())
- {
- ui->label_source_modified->setVisible(true);
- ui->label_content_source_modified->setVisible(true);
- ui->label_content_source_modified->setText(source.lastModified().toString());
- }
- else
- {
- ui->label_source_modified->setVisible(false);
- ui->label_content_source_modified->setVisible(false);
- }
- if(maxTime<destination.lastModified())
- {
- ui->label_destination_modified->setVisible(true);
- ui->label_content_destination_modified->setVisible(true);
- ui->label_content_destination_modified->setText(destination.lastModified().toString());
- }
- else
- {
- ui->label_destination_modified->setVisible(false);
- ui->label_content_destination_modified->setVisible(false);
- }
- this->firstRenamingRule=firstRenamingRule;
- this->otherRenamingRule=otherRenamingRule;
-}
-
-fileExistsDialog::~fileExistsDialog()
-{
- delete ui;
-}
-
-void fileExistsDialog::changeEvent(QEvent *e)
-{
- QWidget::changeEvent(e);
- switch (e->type()) {
- case QEvent::LanguageChange:
- ui->retranslateUi(this);
- break;
- default:
- break;
- }
-}
-
-QString fileExistsDialog::getNewName()
-{
- if(oldName==ui->lineEditNewName->text() || ui->checkBoxAlways->isChecked())
- qDebug() << "return the old name: "+oldName;
- else
- qDebug() << "return the new name: "+ui->lineEditNewName->text();
- if(oldName==ui->lineEditNewName->text() || ui->checkBoxAlways->isChecked())
- return oldName;
- else
- return ui->lineEditNewName->text();
-}
-
-void fileExistsDialog::on_SuggestNewName_clicked()
-{
- QFileInfo destinationInfo=this->destinationInfo;
- QString absolutePath=destinationInfo.absolutePath();
- QString fileName=destinationInfo.fileName();
- QString suffix="";
- QString destination;
- QString newFileName;
- //resolv the suffix
- if(fileName.contains(QRegExp("^(.*)(\\.[a-z0-9]+)$")))
- {
- suffix=fileName;
- suffix.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\2");
- fileName.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\1");
- }
- //resolv the new name
- int num=1;
- do
- {
- if(num==1)
- {
- if(firstRenamingRule=="")
- newFileName=tr("%1 - copy").arg(fileName);
- else
- {
- newFileName=firstRenamingRule;
- newFileName.replace("%name%",fileName);
- }
- }
- else
- {
- if(otherRenamingRule=="")
- newFileName=tr("%1 - copy (%2)").arg(fileName).arg(num);
- else
- {
- newFileName=otherRenamingRule;
- newFileName.replace("%name%",fileName);
- newFileName.replace("%number%",QString::number(num));
- }
- }
- destination=absolutePath+QDir::separator()+newFileName+suffix;
- destinationInfo.setFile(destination);
- num++;
- }
- while(destinationInfo.exists());
- ui->lineEditNewName->setText(newFileName+suffix);
-}
-
-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_OverwriteIfNotSameModificationDate;
- this->close();
-}
-
-FileExistsAction fileExistsDialog::getAction()
-{
- return action;
-}
-
-bool fileExistsDialog::getAlways()
-{
- return ui->checkBoxAlways->isChecked();
-}
-
-void fileExistsDialog::updateRenameButton()
-{
- ui->Rename->setEnabled(ui->checkBoxAlways->isChecked() || (oldName!=ui->lineEditNewName->text() && !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();
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/fileExistsDialog.h b/plugins-alternative/CopyEngine/Rsync/fileExistsDialog.h
deleted file mode 100644
index 75af190..0000000
--- a/plugins-alternative/CopyEngine/Rsync/fileExistsDialog.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/** \file fileExistsDialog.h
-\brief Define the dialog when file already exists
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include <QDialog>
-#include <QWidget>
-#include <QString>
-#include <QDateTime>
-#include <QFileInfo>
-#include <QDir>
-#include "Environment.h"
-
-#ifndef FILEEXISTSDIALOG_H
-#define FILEEXISTSDIALOG_H
-
-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,QFileInfo source,QFileInfo destination,QString firstRenamingRule,QString otherRenamingRule);
- ~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
- QString 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);
-private:
- Ui::fileExistsDialog *ui;
- FileExistsAction action;
- QString oldName;
- QFileInfo destinationInfo;
- QString firstRenamingRule;
- QString otherRenamingRule;
-};
-
-#endif // FILEEXISTSDIALOG_H
diff --git a/plugins-alternative/CopyEngine/Rsync/fileExistsDialog.ui b/plugins-alternative/CopyEngine/Rsync/fileExistsDialog.ui
deleted file mode 100644
index a37945a..0000000
--- a/plugins-alternative/CopyEngine/Rsync/fileExistsDialog.ui
+++ /dev/null
@@ -1,367 +0,0 @@
-<?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>469</width>
- <height>150</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>
- </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>
- </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 do 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 not same modification 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-alternative/CopyEngine/Rsync/fileIsSameDialog.cpp b/plugins-alternative/CopyEngine/Rsync/fileIsSameDialog.cpp
deleted file mode 100644
index f45b2ea..0000000
--- a/plugins-alternative/CopyEngine/Rsync/fileIsSameDialog.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-#include "fileIsSameDialog.h"
-#include "ui_fileIsSameDialog.h"
-
-#include <QDebug>
-
-fileIsSameDialog::fileIsSameDialog(QWidget *parent,QFileInfo fileInfo,QString firstRenamingRule,QString otherRenamingRule) :
- QDialog(parent),
- ui(new Ui::fileIsSameDialog)
-{
- ui->setupUi(this);
- action=FileExists_Cancel;
- oldName=fileInfo.fileName();
- destinationInfo=fileInfo;
- ui->lineEditNewName->setText(oldName);
- ui->lineEditNewName->setPlaceholderText(oldName);
- ui->label_content_size->setText(QString::number(fileInfo.size()));
- ui->label_content_modified->setText(fileInfo.lastModified().toString());
- ui->label_content_file_name->setText(fileInfo.fileName());
- updateRenameButton();
- QDateTime maxTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1));
- if(maxTime<fileInfo.lastModified())
- {
- ui->label_modified->setVisible(true);
- ui->label_content_modified->setVisible(true);
- ui->label_content_modified->setText(fileInfo.lastModified().toString());
- }
- else
- {
- ui->label_modified->setVisible(false);
- ui->label_content_modified->setVisible(false);
- }
- this->firstRenamingRule=firstRenamingRule;
- this->otherRenamingRule=otherRenamingRule;
-}
-
-fileIsSameDialog::~fileIsSameDialog()
-{
- delete ui;
-}
-
-void fileIsSameDialog::changeEvent(QEvent *e)
-{
- QWidget::changeEvent(e);
- switch (e->type()) {
- case QEvent::LanguageChange:
- ui->retranslateUi(this);
- break;
- default:
- break;
- }
-}
-
-QString fileIsSameDialog::getNewName()
-{
- if(oldName==ui->lineEditNewName->text() || ui->checkBoxAlways->isChecked())
- qDebug() << "fileIsSameDialog, return the old name: "+oldName;
- else
- qDebug() << "fileIsSameDialog, return the new name: "+ui->lineEditNewName->text();
- if(oldName==ui->lineEditNewName->text() || ui->checkBoxAlways->isChecked())
- return oldName;
- else
- return ui->lineEditNewName->text();
-}
-
-void fileIsSameDialog::on_SuggestNewName_clicked()
-{
- QFileInfo destinationInfo=this->destinationInfo;
- QString absolutePath=destinationInfo.absolutePath();
- QString fileName=destinationInfo.fileName();
- QString suffix="";
- QString destination;
- QString newFileName;
- //resolv the suffix
- if(fileName.contains(QRegExp("^(.*)(\\.[a-z0-9]+)$")))
- {
- suffix=fileName;
- suffix.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\2");
- fileName.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\1");
- }
- //resolv the new name
- int num=1;
- do
- {
- if(num==1)
- {
- if(firstRenamingRule=="")
- newFileName=tr("%1 - copy").arg(fileName);
- else
- {
- newFileName=firstRenamingRule;
- newFileName.replace("%name%",fileName);
- }
- }
- else
- {
- if(otherRenamingRule=="")
- newFileName=tr("%1 - copy (%2)").arg(fileName).arg(num);
- else
- {
- newFileName=otherRenamingRule;
- newFileName.replace("%name%",fileName);
- newFileName.replace("%number%",QString::number(num));
- }
- }
- destination=absolutePath+QDir::separator()+newFileName+suffix;
- destinationInfo.setFile(destination);
- num++;
- }
- while(destinationInfo.exists());
- ui->lineEditNewName->setText(newFileName+suffix);
-}
-
-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() || (oldName!=ui->lineEditNewName->text() && !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();
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/fileIsSameDialog.h b/plugins-alternative/CopyEngine/Rsync/fileIsSameDialog.h
deleted file mode 100644
index fa48755..0000000
--- a/plugins-alternative/CopyEngine/Rsync/fileIsSameDialog.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/** \file fileIsSameDialog.h
-\brief Define the dialog when file is same
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include <QDialog>
-#include <QWidget>
-#include <QString>
-#include <QDateTime>
-#include <QFileInfo>
-#include <QDir>
-#include "Environment.h"
-
-#ifndef FILEISSAMEDIALOG_H
-#define FILEISSAMEDIALOG_H
-
-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,QFileInfo fileInfo,QString firstRenamingRule,QString otherRenamingRule);
- ~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
- QString 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);
-private:
- Ui::fileIsSameDialog *ui;
- FileExistsAction action;
- QString oldName;
- QFileInfo destinationInfo;
- QString firstRenamingRule;
- QString otherRenamingRule;
-
-};
-
-#endif // FILEISSAMEDIALOG_H
diff --git a/plugins-alternative/CopyEngine/Rsync/fileIsSameDialog.ui b/plugins-alternative/CopyEngine/Rsync/fileIsSameDialog.ui
deleted file mode 100644
index 673ba26..0000000
--- a/plugins-alternative/CopyEngine/Rsync/fileIsSameDialog.ui
+++ /dev/null
@@ -1,192 +0,0 @@
-<?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>378</width>
- <height>148</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>This files are the same file</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <item>
- <widget class="QLabel" name="label">
- <property name="text">
- <string>The source and destination is same</string>
- </property>
- </widget>
- </item>
- <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>
- </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>
- </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 do 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-alternative/CopyEngine/Rsync/folderExistsDialog.cpp b/plugins-alternative/CopyEngine/Rsync/folderExistsDialog.cpp
deleted file mode 100644
index d951b90..0000000
--- a/plugins-alternative/CopyEngine/Rsync/folderExistsDialog.cpp
+++ /dev/null
@@ -1,143 +0,0 @@
-#include "folderExistsDialog.h"
-#include "ui_folderExistsDialog.h"
-
-#include <QMessageBox>
-
-folderExistsDialog::folderExistsDialog(QWidget *parent,QFileInfo source,bool isSame,QFileInfo destination,QString firstRenamingRule,QString otherRenamingRule) :
- QDialog(parent),
- ui(new Ui::folderExistsDialog)
-{
- ui->setupUi(this);
- action=FolderExists_Cancel;
- oldName=source.fileName();
- this->destinationInfo=destinationInfo;
- ui->lineEditNewName->setText(oldName);
- ui->lineEditNewName->setPlaceholderText(oldName);
- ui->label_content_source_modified->setText(source.lastModified().toString());
- ui->label_content_source_folder_name->setText(source.fileName());
- if(isSame)
- {
- ui->label_source->hide();
- ui->label_destination->hide();
- ui->label_destination_modified->hide();
- ui->label_destination_folder_name->hide();
- ui->label_content_destination_modified->hide();
- ui->label_content_destination_folder_name->hide();
- }
- else
- {
- this->setWindowTitle(tr("Folder already exists"));
- ui->label_message->hide();
- ui->label_content_destination_modified->setText(destination.lastModified().toString());
- ui->label_content_destination_folder_name->setText(destination.fileName());
- }
- this->firstRenamingRule=firstRenamingRule;
- this->otherRenamingRule=otherRenamingRule;
-}
-
-folderExistsDialog::~folderExistsDialog()
-{
- delete ui;
-}
-
-void folderExistsDialog::changeEvent(QEvent *e)
-{
- QDialog::changeEvent(e);
- switch (e->type()) {
- case QEvent::LanguageChange:
- ui->retranslateUi(this);
- break;
- default:
- break;
- }
-}
-
-QString folderExistsDialog::getNewName()
-{
- if(oldName==ui->lineEditNewName->text() || ui->checkBoxAlways->isChecked())
- return "";
- else
- return ui->lineEditNewName->text();
-}
-
-void folderExistsDialog::on_SuggestNewName_clicked()
-{
- QFileInfo destinationInfo=this->destinationInfo;
- QString absolutePath=destinationInfo.absolutePath();
- QString fileName=destinationInfo.fileName();
- QString suffix="";
- QString destination;
- QString newFileName;
- //resolv the suffix
- if(fileName.contains(QRegExp("^(.*)(\\.[a-z0-9]+)$")))
- {
- suffix=fileName;
- suffix.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\2");
- fileName.replace(QRegExp("^(.*)(\\.[a-z0-9]+)$"),"\\1");
- }
- //resolv the new name
- int num=1;
- do
- {
- if(num==1)
- {
- if(firstRenamingRule=="")
- newFileName=tr("%1 - copy").arg(fileName);
- else
- {
- newFileName=firstRenamingRule;
- newFileName.replace("%name%",fileName);
- }
- }
- else
- {
- if(otherRenamingRule=="")
- newFileName=tr("%1 - copy (%2)").arg(fileName).arg(num);
- else
- {
- newFileName=otherRenamingRule;
- newFileName.replace("%name%",fileName);
- newFileName.replace("%number%",QString::number(num));
- }
- }
- destination=absolutePath+QDir::separator()+newFileName+suffix;
- destinationInfo.setFile(destination);
- num++;
- }
- while(destinationInfo.exists());
- ui->lineEditNewName->setText(newFileName+suffix);
-}
-
-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();
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/folderExistsDialog.h b/plugins-alternative/CopyEngine/Rsync/folderExistsDialog.h
deleted file mode 100644
index 6d612f1..0000000
--- a/plugins-alternative/CopyEngine/Rsync/folderExistsDialog.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/** \file folderExistsDialog.h
-\brief Define the dialog when file exists
-\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#ifndef FOLDERISSAMEDIALOG_H
-#define FOLDERISSAMEDIALOG_H
-
-#include <QDialog>
-#include <QFileInfo>
-#include <QString>
-#include <QDateTime>
-#include <QDir>
-
-#include "Environment.h"
-
-namespace Ui {
- class folderExistsDialog;
-}
-
-/// \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,QFileInfo source,bool isSame,QFileInfo destination,QString firstRenamingRule,QString 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
- QString 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 on_Merge_clicked();
-private:
- Ui::folderExistsDialog *ui;
- FolderExistsAction action;
- QString oldName;
- QString firstRenamingRule;
- QString otherRenamingRule;
- QFileInfo destinationInfo;
-};
-
-#endif // FOLDERISSAMEDIALOG_H
diff --git a/plugins-alternative/CopyEngine/Rsync/folderExistsDialog.ui b/plugins-alternative/CopyEngine/Rsync/folderExistsDialog.ui
deleted file mode 100644
index c4c4d5e..0000000
--- a/plugins-alternative/CopyEngine/Rsync/folderExistsDialog.ui
+++ /dev/null
@@ -1,282 +0,0 @@
-<?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>443</width>
- <height>146</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>This folders are the same folder</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>
- <widget class="QLabel" name="label_message">
- <property name="text">
- <string>The source and destination is same</string>
- </property>
- </widget>
- </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>
- </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>
- </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 do 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-alternative/CopyEngine/Rsync/options.ui b/plugins-alternative/CopyEngine/Rsync/options.ui
deleted file mode 100644
index 78ac0b2..0000000
--- a/plugins-alternative/CopyEngine/Rsync/options.ui
+++ /dev/null
@@ -1,328 +0,0 @@
-<?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>354</width>
- <height>399</height>
- </rect>
- </property>
- <layout class="QGridLayout" name="gridLayout">
- <property name="margin">
- <number>2</number>
- </property>
- <property name="spacing">
- <number>2</number>
- </property>
- <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="1" column="0">
- <widget class="QLabel" name="label_2">
- <property name="text">
- <string>Keep the file date</string>
- </property>
- </widget>
- </item>
- <item row="1" column="2">
- <widget class="QCheckBox" name="keepDate"/>
- </item>
- <item row="2" column="2">
- <widget class="QSpinBox" name="blockSize">
- <property name="suffix">
- <string>KB</string>
- </property>
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="maximum">
- <number>64000</number>
- </property>
- </widget>
- </item>
- <item row="3" column="0" colspan="2">
- <widget class="QLabel" name="label_5">
- <property name="text">
- <string>Auto start the transfer</string>
- </property>
- </widget>
- </item>
- <item row="3" column="2">
- <widget class="QCheckBox" name="autoStart"/>
- </item>
- <item row="4" 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="QComboBox" name="comboBoxFolderError">
- <item>
- <property name="text">
- <string>Ask</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Skip</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="5" column="0">
- <widget class="QLabel" name="label_7">
- <property name="text">
- <string>When folder collision</string>
- </property>
- </widget>
- </item>
- <item row="5" column="2">
- <widget class="QComboBox" name="comboBoxFolderColision">
- <item>
- <property name="text">
- <string>Ask</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Merge</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Skip</string>
- </property>
- </item>
- <item>
- <property name="text">
- <string>Rename</string>
- </property>
- </item>
- </widget>
- </item>
- <item row="6" column="0" colspan="2">
- <widget class="QLabel" name="label_8">
- <property name="text">
- <string>Check if destination folder exists</string>
- </property>
- </widget>
- </item>
- <item row="6" column="2">
- <widget class="QCheckBox" name="checkBoxDestinationFolderExists"/>
- </item>
- <item row="8" column="0" colspan="3">
- <widget class="QGroupBox" name="groupBox">
- <property name="title">
- <string>Checksum</string>
- </property>
- <layout class="QGridLayout" name="gridLayout_2">
- <item row="1" column="1">
- <widget class="QCheckBox" name="checksumOnlyOnError">
- <property name="enabled">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item row="1" column="0">
- <widget class="QLabel" name="label_9">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>Only after error</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="label_10">
- <property name="enabled">
- <bool>false</bool>
- </property>
- <property name="text">
- <string>Ignore if impossible</string>
- </property>
- </widget>
- </item>
- <item row="2" column="1">
- <widget class="QCheckBox" name="checksumIgnoreIfImpossible">
- <property name="enabled">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QCheckBox" name="doChecksum"/>
- </item>
- <item row="0" column="0">
- <widget class="QLabel" name="label_11">
- <property name="text">
- <string>Do checksum</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item row="9" column="1">
- <widget class="QLabel" name="label_3">
- <property name="text">
- <string>Enable OS buffer</string>
- </property>
- </widget>
- </item>
- <item row="9" column="2">
- <widget class="QCheckBox" name="osBuffer"/>
- </item>
- <item row="10" column="0" colspan="2">
- <widget class="QCheckBox" name="osBufferLimited">
- <property name="text">
- <string>OS buffer only if smaller than</string>
- </property>
- </widget>
- </item>
- <item row="10" column="2">
- <widget class="QSpinBox" name="osBufferLimit">
- <property name="suffix">
- <string>KB</string>
- </property>
- <property name="minimum">
- <number>1</number>
- </property>
- <property name="maximum">
- <number>2048</number>
- </property>
- <property name="value">
- <number>512</number>
- </property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="label_4">
- <property name="text">
- <string>Block size</string>
- </property>
- </widget>
- </item>
- <item row="13" column="1">
- <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="12" column="1">
- <widget class="QPushButton" name="filters">
- <property name="text">
- <string>Filters</string>
- </property>
- </widget>
- </item>
- <item row="11" column="1">
- <widget class="QPushButton" name="renamingRules">
- <property name="text">
- <string>Renaming rules</string>
- </property>
- </widget>
- </item>
- <item row="7" column="2">
- <widget class="QCheckBox" name="rsync">
- <property name="text">
- <string/>
- </property>
- </widget>
- </item>
- <item row="7" column="0" colspan="2">
- <widget class="QLabel" name="label_rsync">
- <property name="text">
- <string>Rsync (only in copy mode)</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections>
- <connection>
- <sender>doChecksum</sender>
- <signal>clicked(bool)</signal>
- <receiver>label_9</receiver>
- <slot>setEnabled(bool)</slot>
- <hints>
- <hint type="sourcelabel">
- <x>187</x>
- <y>212</y>
- </hint>
- <hint type="destinationlabel">
- <x>100</x>
- <y>223</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>doChecksum</sender>
- <signal>clicked(bool)</signal>
- <receiver>checksumOnlyOnError</receiver>
- <slot>setEnabled(bool)</slot>
- <hints>
- <hint type="sourcelabel">
- <x>198</x>
- <y>212</y>
- </hint>
- <hint type="destinationlabel">
- <x>190</x>
- <y>226</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>doChecksum</sender>
- <signal>clicked(bool)</signal>
- <receiver>label_10</receiver>
- <slot>setEnabled(bool)</slot>
- <hints>
- <hint type="sourcelabel">
- <x>245</x>
- <y>210</y>
- </hint>
- <hint type="destinationlabel">
- <x>123</x>
- <y>251</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>doChecksum</sender>
- <signal>clicked(bool)</signal>
- <receiver>checksumIgnoreIfImpossible</receiver>
- <slot>setEnabled(bool)</slot>
- <hints>
- <hint type="sourcelabel">
- <x>269</x>
- <y>209</y>
- </hint>
- <hint type="destinationlabel">
- <x>213</x>
- <y>247</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
diff --git a/plugins-alternative/CopyEngine/Rsync/resources.qrc b/plugins-alternative/CopyEngine/Rsync/resources.qrc
deleted file mode 100644
index c6ca4ef..0000000
--- a/plugins-alternative/CopyEngine/Rsync/resources.qrc
+++ /dev/null
@@ -1,8 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <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-alternative/CopyEngine/Rsync/resources/add.png b/plugins-alternative/CopyEngine/Rsync/resources/add.png
deleted file mode 100644
index 1e03be9..0000000
--- a/plugins-alternative/CopyEngine/Rsync/resources/add.png
+++ /dev/null
Binary files differ
diff --git a/plugins-alternative/CopyEngine/Rsync/resources/edit.png b/plugins-alternative/CopyEngine/Rsync/resources/edit.png
deleted file mode 100644
index 8072aea..0000000
--- a/plugins-alternative/CopyEngine/Rsync/resources/edit.png
+++ /dev/null
Binary files differ
diff --git a/plugins-alternative/CopyEngine/Rsync/resources/filter.png b/plugins-alternative/CopyEngine/Rsync/resources/filter.png
deleted file mode 100644
index 9cabc5a..0000000
--- a/plugins-alternative/CopyEngine/Rsync/resources/filter.png
+++ /dev/null
Binary files differ
diff --git a/plugins-alternative/CopyEngine/Rsync/resources/remove.png b/plugins-alternative/CopyEngine/Rsync/resources/remove.png
deleted file mode 100644
index 5b4c488..0000000
--- a/plugins-alternative/CopyEngine/Rsync/resources/remove.png
+++ /dev/null
Binary files differ
diff --git a/plugins-alternative/CopyEngine/Rsync/scanFileOrFolder.cpp b/plugins-alternative/CopyEngine/Rsync/scanFileOrFolder.cpp
deleted file mode 100644
index 197b8c7..0000000
--- a/plugins-alternative/CopyEngine/Rsync/scanFileOrFolder.cpp
+++ /dev/null
@@ -1,511 +0,0 @@
-#include "scanFileOrFolder.h"
-
-#include <QDateTime>
-
-scanFileOrFolder::scanFileOrFolder(CopyMode mode)
-{
- rsync=false;
- stopped = true;
- stopIt = false;
- this->mode=mode;
- setObjectName("ScanFileOrFolder");
- folder_isolation=QRegExp("^(.*/)?([^/]+)/$");
-}
-
-scanFileOrFolder::~scanFileOrFolder()
-{
- stop();
- quit();
- wait();
-}
-
-bool scanFileOrFolder::isFinished()
-{
- return stopped;
-}
-
-void scanFileOrFolder::addToList(const QStringList& sources,const QString& destination)
-{
- stopIt=false;
- this->sources=parseWildcardSources(sources);
- this->destination=destination;
- if(sources.size()>1 || QFileInfo(destination).isDir())
- /* Disabled because the separator transformation product bug
- * if(!destination.endsWith(QDir::separator()))
- this->destination+=QDir::separator();*/
- if(!destination.endsWith("/") && !destination.endsWith("\\"))
- this->destination+="/";//put unix separator because it's transformed into that's under windows too
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"addToList("+sources.join(";")+","+destination+")");
-}
-
-
-QStringList scanFileOrFolder::parseWildcardSources(const QStringList &sources)
-{
- QRegExp splitFolder("[/\\\\]");
- QStringList returnList;
- int index=0;
- while(index<sources.size())
- {
- if(sources.at(index).contains("*"))
- {
- QStringList toParse=sources.at(index).split(splitFolder);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("before wildcard parse: %1, toParse: %2, is valid: %3").arg(sources.at(index)).arg(toParse.join(", ")).arg(splitFolder.isValid()));
- QList<QStringList> recomposedSource;
- recomposedSource << (QStringList() << "");
- while(toParse.size()>0)
- {
- if(toParse.first().contains('*'))
- {
- QString toParseFirst=toParse.first();
- if(toParseFirst=="")
- toParseFirst+="/";
- QList<QStringList> newRecomposedSource;
- QRegExp toResolv=QRegExp(toParseFirst.replace('*',"[^/\\\\]*"));
- int index_recomposedSource=0;
- while(index_recomposedSource<recomposedSource.size())//parse each url part
- {
- QFileInfo info(recomposedSource.at(index_recomposedSource).join("/"));
- if(info.isDir())
- {
- QDir folder(info.absoluteFilePath());
- QFileInfoList fileFile=folder.entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System);//QStringList() << toResolv
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("list the folder: %1, with the wildcard: %2").arg(info.absoluteFilePath()).arg(toResolv.pattern()));
- int index_fileList=0;
- while(index_fileList<fileFile.size())
- {
- if(fileFile.at(index_fileList).fileName().contains(toResolv))
- {
- QStringList tempList=recomposedSource.at(index_recomposedSource);
- tempList << fileFile.at(index_fileList).fileName();
- newRecomposedSource << tempList;
- }
- index_fileList++;
- }
- }
- index_recomposedSource++;
- }
- recomposedSource=newRecomposedSource;
- }
- else
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("add toParse: %1").arg(toParse.join("/")));
- int index_recomposedSource=0;
- while(index_recomposedSource<recomposedSource.size())
- {
- recomposedSource[index_recomposedSource] << toParse.first();
- if(!QFileInfo(recomposedSource.at(index_recomposedSource).join("/")).exists())
- recomposedSource.removeAt(index_recomposedSource);
- else
- index_recomposedSource++;
- }
- }
- toParse.removeFirst();
- }
- int index_recomposedSource=0;
- while(index_recomposedSource<recomposedSource.size())
- {
- returnList<<recomposedSource.at(index_recomposedSource).join("/");
- index_recomposedSource++;
- }
- }
- else
- returnList << sources.at(index);
- index++;
- }
- return returnList;
-}
-
-void scanFileOrFolder::setFilters(QList<Filters_rules> include,QList<Filters_rules> exclude)
-{
- ULTRACOPIER_DEBUGCONSOLE(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(DebugLevel_Notice,QString("haveFilters: %1, include_send.size(): %2, exclude_send.size(): %3").arg(haveFilters).arg(include_send.size()).arg(exclude_send.size()));
-}
-
-//set action if Folder are same or exists
-void scanFileOrFolder::setFolderExistsAction(FolderExistsAction action,QString newName)
-{
- this->newName=newName;
- folderExistsAction=action;
- waitOneAction.release();
-}
-
-//set action if error
-void scanFileOrFolder::setFolderErrorAction(FileErrorAction action)
-{
- fileErrorAction=action;
- waitOneAction.release();
-}
-
-void scanFileOrFolder::stop()
-{
- stopIt=true;
- waitOneAction.release();
-}
-
-void scanFileOrFolder::run()
-{
- stopped=false;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start the listing with destination: "+destination+", mode: "+QString::number(mode));
- QDir destinationFolder(destination);
- int sourceIndex=0;
- while(sourceIndex<sources.size())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"size source to list: "+QString::number(sourceIndex)+"/"+QString::number(sources.size()));
- if(stopIt)
- {
- stopped=true;
- return;
- }
- QFileInfo source=sources.at(sourceIndex);
- if(source.isDir())
- {
- /* 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()+"/",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
- listFolder(source.absolutePath()+"/",destinationFolder.absolutePath()+"/",source.fileName()+"/",source.fileName()+"/");
- }
- else
- emit fileTransfer(source,destination+source.fileName(),mode);
- sourceIndex++;
- }
- stopped=true;
- if(stopIt)
- return;
- emit finishedTheListing();
-}
-
-void scanFileOrFolder::listFolder(const QString& source,const QString& destination,const QString& sourceSuffixPath,QString destinationSuffixPath)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"source: "+source+", destination: "+destination+", sourceSuffixPath: "+sourceSuffixPath+", destinationSuffixPath: "+destinationSuffixPath);
- if(stopIt)
- return;
- QString newSource = source+sourceSuffixPath;
- QString finalDest = destination+destinationSuffixPath;
- //if is same
- if(newSource==finalDest)
- {
- QDir dirSource(newSource);
- emit folderAlreadyExists(dirSource.absolutePath(),finalDest,true);
- waitOneAction.acquire();
- switch(folderExistsAction)
- {
- case FolderExists_Merge:
- break;
- case FolderExists_Skip:
- return;
- break;
- case FolderExists_Rename:
- if(newName=="")
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"pattern: "+folder_isolation.pattern());
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"full: "+destinationSuffixPath);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"prefix: "+prefix);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"suffix: "+suffix);
- //resolv the new name
- QFileInfo destinationInfo;
- int num=1;
- do
- {
- if(num==1)
- {
- if(firstRenamingRule=="")
- destinationSuffixPath=tr("%1 - copy").arg(suffix);
- else
- {
- destinationSuffixPath=firstRenamingRule;
- destinationSuffixPath.replace("%name%",suffix);
- }
- }
- else
- {
- if(otherRenamingRule=="")
- destinationSuffixPath=tr("%1 - copy (%2)").arg(suffix).arg(num);
- else
- {
- destinationSuffixPath=otherRenamingRule;
- destinationSuffixPath.replace("%name%",suffix);
- destinationSuffixPath.replace("%number%",QString::number(num));
- }
- }
- num++;
- destinationInfo.setFile(prefix+destinationSuffixPath);
- }
- while(destinationInfo.exists());
- }
- else
- destinationSuffixPath = newName;
- destinationSuffixPath+="/";
- finalDest = destination+destinationSuffixPath;
- break;
- default:
- return;
- break;
- }
- }
- //check if destination exists
- if(checkDestinationExists)
- {
- QDir finalSource(newSource);
- QDir destinationDir(finalDest);
- if(destinationDir.exists())
- {
- emit folderAlreadyExists(finalSource.absolutePath(),destinationDir.absolutePath(),false);
- waitOneAction.acquire();
- switch(folderExistsAction)
- {
- case FolderExists_Merge:
- break;
- case FolderExists_Skip:
- return;
- break;
- case FolderExists_Rename:
- if(newName=="")
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"pattern: "+folder_isolation.pattern());
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"full: "+destinationSuffixPath);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"prefix: "+prefix);
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"suffix: "+suffix);
- //resolv the new name
- QFileInfo destinationInfo;
- int num=1;
- do
- {
- if(num==1)
- {
- if(firstRenamingRule=="")
- destinationSuffixPath=tr("%1 - copy").arg(suffix);
- else
- {
- destinationSuffixPath=firstRenamingRule;
- destinationSuffixPath.replace("%name%",suffix);
- }
- }
- else
- {
- if(otherRenamingRule=="")
- destinationSuffixPath=tr("%1 - copy (%2)").arg(suffix).arg(num);
- else
- {
- destinationSuffixPath=otherRenamingRule;
- destinationSuffixPath.replace("%name%",suffix);
- destinationSuffixPath.replace("%number%",QString::number(num));
- }
- }
- destinationInfo.setFile(prefix+destinationSuffixPath);
- num++;
- }
- while(destinationInfo.exists());
- }
- else
- destinationSuffixPath = newName;
- destinationSuffixPath+="/";
- finalDest = destination+destinationSuffixPath;
- break;
- default:
- return;
- break;
- }
- }
- }
- //do source check
- QDir finalSource(newSource);
- QFileInfo dirInfo(newSource);
- //check of source is readable
- do
- {
- fileErrorAction=FileError_NotSet;
- if(!dirInfo.isReadable() || !dirInfo.isExecutable() || !dirInfo.exists())
- {
- if(!dirInfo.exists())
- emit errorOnFolder(dirInfo,tr("The folder not exists"));
- else
- emit errorOnFolder(dirInfo,tr("The folder is not readable"));
- waitOneAction.acquire();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"actionNum: "+QString::number(fileErrorAction));
- }
- } while(fileErrorAction==FileError_Retry);
- /// \todo check here if the folder is not readable or not exists
- QFileInfoList entryList=finalSource.entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System,QDir::DirsFirst|QDir::Name|QDir::IgnoreCase);//possible wait time here
- int sizeEntryList=entryList.size();
- emit newFolderListing(newSource);
- if(sizeEntryList==0)
- emit addToMkPath(finalDest);
- for (int index=0;index<sizeEntryList;++index)
- {
- QFileInfo 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;
- }
- QString fileName=fileInfo.fileName();
- if(fileInfo.isDir())
- {
- bool excluded=false,included=(include.size()==0);
- 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(fileName.contains(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(fileName.contains(include.at(filters_index).regex))
- {
- included=true;
- break;
- }
- }
- filters_index++;
- }
- if(!included)
- {}
- else
- listFolder(source,destination,sourceSuffixPath+fileInfo.fileName()+"/",destinationSuffixPath+fileName+"/");
- }
- }
- else
- {
- bool excluded=false,included=(include.size()==0);
- 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(fileName.contains(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(fileName.contains(include.at(filters_index).regex))
- {
- included=true;
- break;
- }
- }
- filters_index++;
- }
- if(!included)
- {}
- else
- {
- bool sendToTransfer=false;
- if(!rsync)
- sendToTransfer=true;
- else if(!QFile::exists(finalDest+fileName))
- sendToTransfer=true;
- else if(fileInfo.lastModified()!=QFileInfo(finalDest+fileName).lastModified())
- sendToTransfer=true;
- if(sendToTransfer)
- emit fileTransfer(fileInfo.absoluteFilePath(),finalDest+fileName,mode);
- }
- }
- }
- }
- else
- {
- if(fileInfo.isDir())//possible wait time here
- //listFolder(source,destination,suffixPath+fileInfo.fileName()+QDir::separator());
- listFolder(source,destination,sourceSuffixPath+fileInfo.fileName()+"/",destinationSuffixPath+fileInfo.fileName()+"/");//put unix separator because it's transformed into that's under windows too
- else
- {
- bool sendToTransfer=false;
- if(!rsync)
- sendToTransfer=true;
- else if(!QFile::exists(finalDest+fileInfo.fileName()))
- sendToTransfer=true;
- else if(fileInfo.lastModified()!=QFileInfo(finalDest+fileInfo.fileName()).lastModified())
- sendToTransfer=true;
- if(sendToTransfer)
- emit fileTransfer(fileInfo.absoluteFilePath(),finalDest+fileInfo.fileName(),mode);
- }
- }
- }
- if(rsync)
- {
- //check the reverse path here
- QFileInfoList entryListDestination=QDir(finalDest).entryInfoList(QDir::AllEntries|QDir::NoDotAndDotDot|QDir::Hidden|QDir::System,QDir::DirsFirst|QDir::Name|QDir::IgnoreCase);//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(finalDest+entryListDestination.at(indexDestination).fileName());
- }
- }
- return;
- }
-
- if(mode==Move)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"newSource: "+newSource+", sizeEntryList: "+QString::number(sizeEntryList));
- emit addToRmPath(newSource,sizeEntryList);
- }
-}
-
-//set if need check if the destination exists
-void scanFileOrFolder::setCheckDestinationFolderExists(const bool checkDestinationFolderExists)
-{
- this->checkDestinationExists=checkDestinationFolderExists;
-}
-
-void scanFileOrFolder::setRenamingRules(QString firstRenamingRule,QString otherRenamingRule)
-{
- this->firstRenamingRule=firstRenamingRule;
- this->otherRenamingRule=otherRenamingRule;
-}
-
-/// \brief set rsync
-void scanFileOrFolder::setRsync(const bool rsync)
-{
- this->rsync=rsync;
-}
diff --git a/plugins-alternative/CopyEngine/Rsync/scanFileOrFolder.h b/plugins-alternative/CopyEngine/Rsync/scanFileOrFolder.h
deleted file mode 100644
index 2109df2..0000000
--- a/plugins-alternative/CopyEngine/Rsync/scanFileOrFolder.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/** \file scanFileOrFolder.h
-\brief Thread changed to list recursively the folder
-\author alpha_one_x86
-\version 0.3
-\date 2011 */
-
-#include <QThread>
-#include <QStringList>
-#include <QString>
-#include <QList>
-#include <QFileInfo>
-#include <QDir>
-#include <QSemaphore>
-#include <QEventLoop>
-#include <QCoreApplication>
-#include <QMutexLocker>
-
-#include "Environment.h"
-
-#ifndef SCANFILEORFOLDER_H
-#define SCANFILEORFOLDER_H
-
-/// \brief Thread changed to list recursively the folder
-class scanFileOrFolder : public QThread
-{
- Q_OBJECT
-public:
- explicit scanFileOrFolder(CopyMode mode);
- ~scanFileOrFolder();
- /// \brief to the a folder listing
- void stop();
- /// \brief to get if is finished
- bool isFinished();
- /// \brief set action if Folder are same or exists
- void setFolderExistsAction(FolderExistsAction action,QString newName="");
- /// \brief set action if error
- void setFolderErrorAction(FileErrorAction action);
- /// \brief set if need check if the destination exists
- void setCheckDestinationFolderExists(const bool checkDestinationFolderExists);
- void setRenamingRules(QString firstRenamingRule,QString otherRenamingRule);
- /// \brief set rsync
- void setRsync(const bool rsync);
-signals:
- void fileTransfer(const QFileInfo &source,const QFileInfo &destination,const CopyMode &mode);
- /// \brief To debug source
- void debugInformation(const DebugLevel &level,const QString &fonction,const QString &text,const QString &file,const int &ligne);
- void folderAlreadyExists(const QFileInfo &source,const QFileInfo &destination,const bool &isSame);
- void errorOnFolder(const QFileInfo &fileInfo,const QString &errorString);
- void finishedTheListing();
-
- void newFolderListing(const QString &path);
- void addToMkPath(const QString& folder);
- void addToRmPath(const QString& folder,const int& inodeToRemove);
- void addToRmForRsync(const QString& inode);
-public slots:
- void addToList(const QStringList& sources,const QString& destination);
- void setFilters(QList<Filters_rules> include,QList<Filters_rules> exclude);
-protected:
- void run();
-private:
- QStringList sources;
- QString destination;
- volatile bool stopIt;
- void listFolder(const QString& source,const QString& destination,const QString& sourceSuffixPath,QString destinationSuffixPath);
- volatile bool stopped;
- QSemaphore waitOneAction;
- FolderExistsAction folderExistsAction;
- FileErrorAction fileErrorAction;
- volatile bool checkDestinationExists;
- QString newName;
- QRegExp folder_isolation;
- QString prefix;
- QString suffix;
- CopyMode mode;
- bool rsync;
- QList<Filters_rules> include,exclude;
- QList<Filters_rules> include_send,exclude_send;
- bool reloadTheNewFilters;
- bool haveFilters;
- QMutex filtersMutex;
- QString firstRenamingRule;
- QString otherRenamingRule;
- /** 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
- */
- QStringList parseWildcardSources(const QStringList &sources);
-};
-
-#endif // SCANFILEORFOLDER_H
diff --git a/plugins-alternative/CopyEngine/Rsync/DebugEngineMacro.h b/plugins-alternative/PluginLoader/keybinding/DebugEngineMacro.h
index ad08d4f..f9b5349 100644
--- a/plugins-alternative/CopyEngine/Rsync/DebugEngineMacro.h
+++ b/plugins-alternative/PluginLoader/keybinding/DebugEngineMacro.h
@@ -1,12 +1,15 @@
/** \file DebugEngineMacro.h
\brief Define the macro for the debug
\author alpha_one_x86
-\version 0.3
-\date 2010 */
+\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__)
diff --git a/plugins-alternative/CopyEngine/Rsync/Environment.h b/plugins-alternative/PluginLoader/keybinding/Environment.h
index 7ac6f16..265a5a6 100644
--- a/plugins-alternative/CopyEngine/Rsync/Environment.h
+++ b/plugins-alternative/PluginLoader/keybinding/Environment.h
@@ -1,12 +1,10 @@
/** \file Environment.h
\brief Define the environment variable and global function
\author alpha_one_x86
-\version 0.3
-\date 2010 */
+\licence GPL3, see the file COPYING */
#include "Variable.h"
/// \brief The global include
#include "StructEnumDefinition.h"
-#include "StructEnumDefinition_CopyEngine.h"
#include "DebugEngineMacro.h"
-#include "CompilerInfo.h"
+
diff --git a/plugins-alternative/PluginLoader/keybinding/KeyBind.cpp b/plugins-alternative/PluginLoader/keybinding/KeyBind.cpp
new file mode 100644
index 0000000..0fd5287
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/KeyBind.cpp
@@ -0,0 +1,11 @@
+#include "KeyBind.h"
+
+KeyBind::KeyBind(QWidget *parent) :
+ QLineEdit(parent)
+{
+}
+
+void KeyBind::keyPressEvent(QKeyEvent * event)
+{
+ emit newKey(event);
+}
diff --git a/plugins-alternative/PluginLoader/keybinding/KeyBind.h b/plugins-alternative/PluginLoader/keybinding/KeyBind.h
new file mode 100644
index 0000000..f4abf68
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/KeyBind.h
@@ -0,0 +1,18 @@
+#ifndef KEYBIND_H
+#define KEYBIND_H
+
+#include <QLineEdit>
+
+class KeyBind : public QLineEdit
+{
+ Q_OBJECT
+public:
+ explicit KeyBind(QWidget *parent = 0);
+
+signals:
+ void newKey(QKeyEvent * event);
+public slots:
+ void keyPressEvent(QKeyEvent * event);
+};
+
+#endif // KEYBIND_H
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/ar/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/ar/translation.ts
new file mode 100644
index 0000000..07a7469
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/ar/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/de/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/de/translation.ts
new file mode 100644
index 0000000..fe80b91
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/de/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="de" sourcelanguage="en">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/el/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/el/translation.ts
new file mode 100644
index 0000000..07a7469
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/el/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/en/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/en/translation.ts
new file mode 100644
index 0000000..f92b6b5
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/en/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/es/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/es/translation.ts
new file mode 100644
index 0000000..c72ba56
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/es/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="es" sourcelanguage="en">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/fr/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/fr/translation.ts
new file mode 100644
index 0000000..513e265
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/fr/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr" sourcelanguage="en">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/hi/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/hi/translation.ts
new file mode 100644
index 0000000..07a7469
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/hi/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/hu/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/hu/translation.ts
new file mode 100644
index 0000000..cb3bde6
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/hu/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="hu">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/id/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/id/translation.ts
new file mode 100644
index 0000000..07a7469
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/id/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/it/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/it/translation.ts
new file mode 100644
index 0000000..a2257e5
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/it/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="it_IT">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/ja/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/ja/translation.ts
new file mode 100644
index 0000000..07a7469
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/ja/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/ko/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/ko/translation.ts
new file mode 100644
index 0000000..18f47bb
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/ko/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ko_KR">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/nl/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/nl/translation.ts
new file mode 100644
index 0000000..07a7469
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/nl/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/no/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/no/translation.ts
new file mode 100644
index 0000000..07a7469
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/no/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/pl/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/pl/translation.ts
new file mode 100644
index 0000000..07a7469
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/pl/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/pt/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/pt/translation.ts
new file mode 100644
index 0000000..07a7469
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/pt/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/ru/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/ru/translation.ts
new file mode 100644
index 0000000..38a6bfd
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/ru/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ru" sourcelanguage="en">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/th/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/th/translation.ts
new file mode 100644
index 0000000..07a7469
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/th/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/tr/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/tr/translation.ts
new file mode 100644
index 0000000..07a7469
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/tr/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/Languages/zh/translation.ts b/plugins-alternative/PluginLoader/keybinding/Languages/zh/translation.ts
new file mode 100644
index 0000000..07a7469
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Languages/zh/translation.ts
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+</TS>
diff --git a/plugins-alternative/PluginLoader/keybinding/OptionsWidget.cpp b/plugins-alternative/PluginLoader/keybinding/OptionsWidget.cpp
new file mode 100644
index 0000000..a48e61f
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/OptionsWidget.cpp
@@ -0,0 +1,55 @@
+#include "OptionsWidget.h"
+#include "KeyBind.h"
+#include "ui_OptionsWidget.h"
+
+#include <QKeyEvent>
+
+OptionsWidget::OptionsWidget(QWidget *parent) :
+ QWidget(parent),
+ modifier(QList<int>() << Qt::Key_Control << Qt::Key_Shift << Qt::Key_Super_R << Qt::Key_Super_L << Qt::Key_Meta << Qt::Key_Alt << Qt::Key_AltGr),
+ ui(new Ui::OptionsWidget)
+{
+ ui->setupUi(this);
+
+ keyBind=new KeyBind(this);
+ ui->vboxLayout->addWidget(keyBind);
+ connect(keyBind,&KeyBind::newKey,this,&OptionsWidget::newKeyBind);
+}
+
+OptionsWidget::~OptionsWidget()
+{
+ delete ui;
+}
+
+void OptionsWidget::retranslate()
+{
+ ui->retranslateUi(this);
+}
+
+void OptionsWidget::setKeyBind(const QKeySequence &keySequence)
+{
+ keyBind->setText(keySequence.toString());
+}
+
+void OptionsWidget::newKey(QKeyEvent * event)
+{
+ int keyInt = event->key();
+ if(!modifier.contains(keyInt))
+ {
+ const Qt::KeyboardModifiers &modifiers = event->modifiers();
+ if(modifiers & Qt::ShiftModifier)
+ keyInt += Qt::SHIFT;
+ if(modifiers & Qt::ControlModifier)
+ keyInt += Qt::CTRL;
+ if(modifiers & Qt::AltModifier)
+ keyInt += Qt::ALT;
+ if(modifiers & Qt::MetaModifier)
+ keyInt += Qt::META;
+
+ const QKeySequence &keySeq = QKeySequence(keyInt);
+ keyBind->setText(keySeq.toString());
+
+ sendKeyBind(keySeq);
+ }
+}
+
diff --git a/plugins-alternative/PluginLoader/keybinding/OptionsWidget.h b/plugins-alternative/PluginLoader/keybinding/OptionsWidget.h
new file mode 100644
index 0000000..e0d8e4b
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/OptionsWidget.h
@@ -0,0 +1,31 @@
+#ifndef OptionsWidget_H
+#define OptionsWidget_H
+
+#include <QWidget>
+#include "KeyBind.h"
+
+namespace Ui {
+class OptionsWidget;
+}
+
+class OptionsWidget : public QWidget
+{
+ Q_OBJECT
+
+public:
+ explicit OptionsWidget(QWidget *parent = 0);
+ ~OptionsWidget();
+ void setKeyBind(const QKeySequence &keySequence);
+ void retranslate();
+private:
+ const QList<int> modifier;
+ Ui::OptionsWidget *ui;
+ KeyBind *keyBind;
+private slots:
+ void newKey(QKeyEvent * event);
+signals:
+ void sendKeyBind(const QKeySequence &keySequence);
+ void newKeyBind(QKeyEvent * event);
+};
+
+#endif // OptionsWidget_H
diff --git a/plugins-alternative/PluginLoader/keybinding/OptionsWidget.ui b/plugins-alternative/PluginLoader/keybinding/OptionsWidget.ui
new file mode 100644
index 0000000..2bc3cbe
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/OptionsWidget.ui
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>OptionsWidget</class>
+ <widget class="QWidget" name="OptionsWidget">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>195</width>
+ <height>58</height>
+ </rect>
+ </property>
+ <layout class="QVBoxLayout">
+ <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>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/plugins-alternative/PluginLoader/keybinding/PlatformMacro.h b/plugins-alternative/PluginLoader/keybinding/PlatformMacro.h
new file mode 100644
index 0000000..f7586b0
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/PlatformMacro.h
@@ -0,0 +1 @@
+#include "../../../PlatformMacro.h"
diff --git a/plugins-alternative/CopyEngine/Rsync/StructEnumDefinition.h b/plugins-alternative/PluginLoader/keybinding/StructEnumDefinition.h
index c1758f4..c1758f4 100644
--- a/plugins-alternative/CopyEngine/Rsync/StructEnumDefinition.h
+++ b/plugins-alternative/PluginLoader/keybinding/StructEnumDefinition.h
diff --git a/plugins-alternative/PluginLoader/keybinding/Variable.h b/plugins-alternative/PluginLoader/keybinding/Variable.h
new file mode 100644
index 0000000..90e1557
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/Variable.h
@@ -0,0 +1,16 @@
+/** \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
+#define ULTRACOPIER_PLUGIN_DEBUG
+//#define ULTRACOPIER_PLUGIN_ALL_IN_ONE
+
+#endif // VARIABLE_H
+
+
+
diff --git a/plugins-alternative/PluginLoader/keybinding/documentation.dox b/plugins-alternative/PluginLoader/keybinding/documentation.dox
new file mode 100644
index 0000000..08ccc4a
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/documentation.dox
@@ -0,0 +1,34 @@
+/* -*- mode: C++ ; c-file-style: "stroustrup" -*- **/
+
+/*
+ This file contains NO source code, just some documentation for doxygen to
+ parse.
+*/
+
+/*!
+ \mainpage catchcopy-v0002
+
+ \section mainpage_overview Overview
+
+ Is the plugin to load the catchcopy plugin into the windows file manager. Mostly it use the command: regsvr32 /s catchcopy32.dll/catchcopy64.dll\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 found link on <a href="http://ultracopier.first-world.info/">Ultracopier (Supercopier/Teracopy)</a> project page, via git, snapshot sources, ...
+
+ \section mainpage_algorithm Requirements
+
+ You can see the documentation on <a href="http://catchcopy.first-world.info/">Catchcopy web site</a>. It use catchcopy32.dll/catchcopy64.dll as explorer plugin for the windows's file manager. Need it into the plugins.\n
+ In function if Ultracopier is compiled by portable version, try load the dll by other way.
+
+ \section license GPL Version 3
+ The code source is under GPL3.
+
+*/
+
diff --git a/plugins-alternative/PluginLoader/keybinding/informations.xml b/plugins-alternative/PluginLoader/keybinding/informations.xml
new file mode 100644
index 0000000..142e9a5
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/informations.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package>
+ <title xml:lang="en"><![CDATA[Plugin loader for catchcopy v0002]]></title><!-- english is required -->
+ <title xml:lang="fr"><![CDATA[Chargeur de plugin pour catchcopy v0002]]></title>
+ <!-- What kind of plugin this is -->
+ <category>PluginLoader</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[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.2.3.6</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. -->
+ <dependencies><![CDATA[
+ =ultracopier-1.0
+ ]]></dependencies>
+</package> \ No newline at end of file
diff --git a/plugins-alternative/PluginLoader/keybinding/plugin.json b/plugins-alternative/PluginLoader/keybinding/plugin.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/plugin.json
@@ -0,0 +1 @@
+{} \ No newline at end of file
diff --git a/plugins-alternative/PluginLoader/keybinding/pluginLoader.cpp b/plugins-alternative/PluginLoader/keybinding/pluginLoader.cpp
new file mode 100644
index 0000000..387b09e
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/pluginLoader.cpp
@@ -0,0 +1,61 @@
+/** \file pluginLoader.cpp
+\brief Define the session plugin loader test
+\author alpha_one_x86 */
+
+#include "pluginLoader.h"
+#include "PlatformMacro.h"
+
+#include <QFile>
+#include <QDir>
+
+#ifndef Q_OS_UNIX
+#error "Only for unix"
+#endif
+
+KeyBindPlugin::KeyBindPlugin()
+{
+ connect(&optionsWidget,&OptionsWidget::sendKeyBind,this,&KeyBindPlugin::setKeyBind);
+}
+
+KeyBindPlugin::~KeyBindPlugin()
+{
+}
+
+void KeyBindPlugin::setResources(OptionInterface * options,const QString &writePath,const QString &pluginPath,const bool &portableVersion)
+{
+ Q_UNUSED(options);
+ Q_UNUSED(writePath);
+ Q_UNUSED(pluginPath);
+ Q_UNUSED(portableVersion);
+ this->optionsEngine=options;
+ if(optionsEngine!=NULL)
+ {
+ QList<QPair<QString, QVariant> > KeysList;
+ KeysList.append(qMakePair(QStringLiteral("keySequence"),QString()));
+ optionsEngine->addOptionGroup(KeysList);
+ optionsWidget.setKeyBind(QKeySequence::fromString(optionsEngine->getOptionValue("keySequence").toString()));
+ }
+}
+
+/// \brief to get the options widget, NULL if not have
+QWidget * KeyBindPlugin::options()
+{
+ return &optionsWidget;
+}
+
+void KeyBindPlugin::newLanguageLoaded()
+{
+ optionsWidget.retranslate();
+}
+
+/// \brief try enable/disable the catching
+void KeyBindPlugin::setEnabled(const bool &needBeRegistred)
+{
+ Q_UNUSED(needBeRegistred);
+}
+
+void KeyBindPlugin::setKeyBind(const QKeySequence &keySequence)
+{
+ optionsEngine->setOptionValue("keySequence",keySequence);
+}
+
diff --git a/plugins-alternative/PluginLoader/keybinding/pluginLoader.h b/plugins-alternative/PluginLoader/keybinding/pluginLoader.h
new file mode 100644
index 0000000..1361c0d
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/pluginLoader.h
@@ -0,0 +1,47 @@
+/** \file pluginLoader.h
+\brief Define the plugin loader
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef PLUGIN_LOADER_TEST_H
+#define PLUGIN_LOADER_TEST_H
+
+#include <QObject>
+#include <QMessageBox>
+
+#include <QString>
+#include <QStringList>
+#include <QProcess>
+#include <QSet>
+#include <QKeySequence>
+
+#include "../../../interface/PluginInterface_PluginLoader.h"
+#include "Environment.h"
+#include "OptionsWidget.h"
+
+/// \brief \brief Define the plugin loader
+class KeyBindPlugin : public PluginInterface_PluginLoader
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "first-world.info.ultracopier.PluginInterface.PluginLoader/1.0.0.0" FILE "plugin.json")
+ Q_INTERFACES(PluginInterface_PluginLoader)
+public:
+ KeyBindPlugin();
+ ~KeyBindPlugin();
+ /// \brief try enable/disable the catching
+ void setEnabled(const bool &needBeRegistred);
+ /// \brief to set resources, writePath can be empty if read only mode
+ void setResources(OptionInterface * options,const QString &writePath,const QString &pluginPath,const bool &portableVersion);
+ /// \brief to get the options widget, NULL if not have
+ QWidget * options();
+public slots:
+ /// \brief to reload the translation, because the new language have been loaded
+ void newLanguageLoaded();
+private:
+ OptionInterface * optionsEngine;
+ OptionsWidget optionsWidget;
+private slots:
+ void setKeyBind(const QKeySequence &keySequence);
+};
+
+#endif // PLUGIN_LOADER_TEST_H
diff --git a/plugins-alternative/PluginLoader/keybinding/pluginLoader.pro b/plugins-alternative/PluginLoader/keybinding/pluginLoader.pro
new file mode 100644
index 0000000..ad5404b
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/pluginLoader.pro
@@ -0,0 +1,50 @@
+CONFIG += c++11
+QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
+mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
+
+QT += widgets
+TEMPLATE = lib
+CONFIG += plugin
+HEADERS = \
+ StructEnumDefinition.h \
+ pluginLoader.h \
+ DebugEngineMacro.h \
+ Environment.h \
+ Variable.h \
+ PlatformMacro.h \
+ ../../../interface/PluginInterface_PluginLoader.h \
+ OptionsWidget.h \
+ KeyBind.h
+SOURCES = \
+ pluginLoader.cpp \
+ OptionsWidget.cpp \
+ KeyBind.cpp
+TARGET = $$qtLibraryTarget(pluginLoader)
+TRANSLATIONS += Languages/ar/translation.ts \
+ Languages/de/translation.ts \
+ Languages/el/translation.ts \
+ Languages/en/translation.ts \
+ Languages/es/translation.ts \
+ Languages/fr/translation.ts \
+ Languages/hi/translation.ts \
+ Languages/hu/translation.ts \
+ Languages/id/translation.ts \
+ Languages/it/translation.ts \
+ Languages/ja/translation.ts \
+ Languages/ko/translation.ts \
+ Languages/nl/translation.ts \
+ Languages/no/translation.ts \
+ Languages/pl/translation.ts \
+ Languages/pt/translation.ts \
+ Languages/ru/translation.ts \
+ Languages/th/translation.ts \
+ Languages/tr/translation.ts \
+ Languages/zh/translation.ts
+
+FORMS += \
+ OptionsWidget.ui
+
+CONFIG(static, static|shared) {
+DEFINES += ULTRACOPIER_PLUGIN_ALL_IN_ONE
+}
+
diff --git a/plugins-alternative/PluginLoader/keybinding/pluginLoader.pro.user.3.3-pre1 b/plugins-alternative/PluginLoader/keybinding/pluginLoader.pro.user.3.3-pre1
new file mode 100644
index 0000000..c45904e
--- /dev/null
+++ b/plugins-alternative/PluginLoader/keybinding/pluginLoader.pro.user.3.3-pre1
@@ -0,0 +1,266 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE QtCreatorProject>
+<!-- Written by QtCreator 3.2.2, 2015-04-28T09:04:56. -->
+<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.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">Qt5 5.4</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt5 5.4</value>
+ <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{f6cc43bb-0436-4d0e-8325-897ff43ef853}</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-alternative/PluginLoader/build-pluginLoader-Qt5_5_2-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">false</value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">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-alternative/PluginLoader/build-pluginLoader-Qt5_5_2-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="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
+ <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
+ <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">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>
+ <value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</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">true</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="bool" key="ProjectExplorer.CustomExecutableRunConfiguration.UseTerminal">false</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">16</value>
+ </data>
+ <data>
+ <variable>Version</variable>
+ <value type="int">16</value>
+ </data>
+</qtcreator>
diff --git a/plugins-alternative/Themes/Clean/Languages/ar/translation.ts b/plugins-alternative/Themes/Clean/Languages/ar/translation.ts
index 81df74e..54104e3 100644
--- a/plugins-alternative/Themes/Clean/Languages/ar/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/ar/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation type="unfinished"></translation>
</message>
@@ -18,7 +18,7 @@
</message>
<message>
<location filename="../../interface.ui" line="44"/>
- <source>In wait</source>
+ <source>Waiting</source>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/plugins-alternative/Themes/Clean/Languages/de/translation.ts b/plugins-alternative/Themes/Clean/Languages/de/translation.ts
index 7ea1972..0a833ee 100644
--- a/plugins-alternative/Themes/Clean/Languages/de/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/de/translation.ts
@@ -4,9 +4,9 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
- <translation>%1/%2 dateien, %3/%4</translation>
+ <translation>%1/%2 Dateien, %3/%4</translation>
</message>
</context>
<context>
@@ -18,8 +18,8 @@
</message>
<message>
<location filename="../../interface.ui" line="44"/>
- <source>In wait</source>
- <translation>auf der Lauer</translation>
+ <source>Waiting</source>
+ <translation>Warten</translation>
</message>
<message>
<location filename="../../interface.ui" line="78"/>
@@ -34,22 +34,22 @@
<message>
<location filename="../../interface.ui" line="96"/>
<source>Move file(s)</source>
- <translation>Bewegen Sie Datei (en)</translation>
+ <translation>Datei (en) verschieben</translation>
</message>
<message>
<location filename="../../interface.ui" line="105"/>
<source>Move folder</source>
- <translation>bewegen Sie Ordner</translation>
+ <translation>Ordner verschieben</translation>
</message>
<message>
<location filename="../../interface.ui" line="114"/>
<source>Copy file(s)</source>
- <translation>Kopieren Sie die Datei (en)</translation>
+ <translation>Datei (en) kopieren</translation>
</message>
<message>
<location filename="../../interface.ui" line="123"/>
<source>Copy folder</source>
- <translation>kopieren Sie das Verzeichnis</translation>
+ <translation>Ordner kopieren</translation>
</message>
</context>
</TS>
diff --git a/plugins-alternative/Themes/Clean/Languages/el/translation.ts b/plugins-alternative/Themes/Clean/Languages/el/translation.ts
index 81df74e..54104e3 100644
--- a/plugins-alternative/Themes/Clean/Languages/el/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/el/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation type="unfinished"></translation>
</message>
@@ -18,7 +18,7 @@
</message>
<message>
<location filename="../../interface.ui" line="44"/>
- <source>In wait</source>
+ <source>Waiting</source>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/plugins-alternative/Themes/Clean/Languages/en/translation.ts b/plugins-alternative/Themes/Clean/Languages/en/translation.ts
new file mode 100644
index 0000000..d13892c
--- /dev/null
+++ b/plugins-alternative/Themes/Clean/Languages/en/translation.ts
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en">
+<context>
+ <name>InterfacePlugin</name>
+ <message>
+ <location filename="../../interface.cpp" line="142"/>
+ <source>%1/%2 files, %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="32"/>
+ <source>Action:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="44"/>
+ <source>Waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="78"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="87"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="96"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="105"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="114"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="123"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Clean/Languages/es/translation.ts b/plugins-alternative/Themes/Clean/Languages/es/translation.ts
index 70b8246..8c54e8a 100644
--- a/plugins-alternative/Themes/Clean/Languages/es/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/es/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation>%1/%2 archivos, %3/%4</translation>
</message>
@@ -17,9 +17,13 @@
<translation>Acción:</translation>
</message>
<message>
- <location filename="../../interface.ui" line="44"/>
<source>In wait</source>
- <translation>En espera</translation>
+ <translation type="obsolete">En espera</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="44"/>
+ <source>Waiting</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../../interface.ui" line="78"/>
diff --git a/plugins-alternative/Themes/Clean/Languages/fr/translation.ts b/plugins-alternative/Themes/Clean/Languages/fr/translation.ts
index 51fd57f..bdc0621 100644
--- a/plugins-alternative/Themes/Clean/Languages/fr/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/fr/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation>%1/%2 fichiers, %3/%4</translation>
</message>
@@ -17,9 +17,8 @@
<translation>Action:</translation>
</message>
<message>
- <location filename="../../interface.ui" line="44"/>
<source>In wait</source>
- <translation>En attente</translation>
+ <translation type="obsolete">En attente</translation>
</message>
<message>
<location filename="../../interface.ui" line="96"/>
@@ -47,6 +46,11 @@
<translation>Ajouter un dossier</translation>
</message>
<message>
+ <location filename="../../interface.ui" line="44"/>
+ <source>Waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../interface.ui" line="78"/>
<source>Add file</source>
<translation>Ajout de fichier</translation>
diff --git a/plugins-alternative/Themes/Clean/Languages/hi/translation.ts b/plugins-alternative/Themes/Clean/Languages/hi/translation.ts
index 81df74e..54104e3 100644
--- a/plugins-alternative/Themes/Clean/Languages/hi/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/hi/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation type="unfinished"></translation>
</message>
@@ -18,7 +18,7 @@
</message>
<message>
<location filename="../../interface.ui" line="44"/>
- <source>In wait</source>
+ <source>Waiting</source>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/plugins-alternative/Themes/Clean/Languages/hu/translation.ts b/plugins-alternative/Themes/Clean/Languages/hu/translation.ts
new file mode 100644
index 0000000..e5a3bcc
--- /dev/null
+++ b/plugins-alternative/Themes/Clean/Languages/hu/translation.ts
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="hu">
+<context>
+ <name>InterfacePlugin</name>
+ <message>
+ <location filename="../../interface.cpp" line="142"/>
+ <source>%1/%2 files, %3/%4</source>
+ <translation>%1/%2 fájl, %3/%4</translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="32"/>
+ <source>Action:</source>
+ <translation>Művelet:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="44"/>
+ <source>Waiting</source>
+ <translation>Várakozás</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="78"/>
+ <source>Add file</source>
+ <translation>Fájl hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="87"/>
+ <source>Add folder</source>
+ <translation>Mappa hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="96"/>
+ <source>Move file(s)</source>
+ <translation>Fájl(ok) mozgatása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="105"/>
+ <source>Move folder</source>
+ <translation>Mappa mozgatása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="114"/>
+ <source>Copy file(s)</source>
+ <translation>Fájl(ok) másolása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="123"/>
+ <source>Copy folder</source>
+ <translation>Mappa másolása</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Clean/Languages/id/translation.ts b/plugins-alternative/Themes/Clean/Languages/id/translation.ts
index 81df74e..54104e3 100644
--- a/plugins-alternative/Themes/Clean/Languages/id/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/id/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation type="unfinished"></translation>
</message>
@@ -18,7 +18,7 @@
</message>
<message>
<location filename="../../interface.ui" line="44"/>
- <source>In wait</source>
+ <source>Waiting</source>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/plugins-alternative/Themes/Clean/Languages/it/translation.ts b/plugins-alternative/Themes/Clean/Languages/it/translation.ts
index b44bd5f..b94ac7b 100644
--- a/plugins-alternative/Themes/Clean/Languages/it/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/it/translation.ts
@@ -4,9 +4,9 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
- <translation></translation>
+ <translation>%1/%2 file, %3/%4</translation>
</message>
</context>
<context>
@@ -17,9 +17,13 @@
<translation>Azione:</translation>
</message>
<message>
- <location filename="../../interface.ui" line="44"/>
<source>In wait</source>
- <translation>In attesa</translation>
+ <translation type="obsolete">In attesa</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="44"/>
+ <source>Waiting</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../../interface.ui" line="78"/>
@@ -34,22 +38,22 @@
<message>
<location filename="../../interface.ui" line="96"/>
<source>Move file(s)</source>
- <translation>Spostare file(s)</translation>
+ <translation>Sposta file</translation>
</message>
<message>
<location filename="../../interface.ui" line="105"/>
<source>Move folder</source>
- <translation>Spostare la cartella</translation>
+ <translation>Sposta la cartella</translation>
</message>
<message>
<location filename="../../interface.ui" line="114"/>
<source>Copy file(s)</source>
- <translation>Copiare il file (s)</translation>
+ <translation>Copia file</translation>
</message>
<message>
<location filename="../../interface.ui" line="123"/>
<source>Copy folder</source>
- <translation>Copia la cartella</translation>
+ <translation>Copia cartella</translation>
</message>
</context>
</TS>
diff --git a/plugins-alternative/Themes/Clean/Languages/ja/translation.ts b/plugins-alternative/Themes/Clean/Languages/ja/translation.ts
index 81df74e..54104e3 100644
--- a/plugins-alternative/Themes/Clean/Languages/ja/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/ja/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation type="unfinished"></translation>
</message>
@@ -18,7 +18,7 @@
</message>
<message>
<location filename="../../interface.ui" line="44"/>
- <source>In wait</source>
+ <source>Waiting</source>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/plugins-alternative/Themes/Clean/Languages/ko/translation.ts b/plugins-alternative/Themes/Clean/Languages/ko/translation.ts
index 41627de..95d2138 100644
--- a/plugins-alternative/Themes/Clean/Languages/ko/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/ko/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="+145"/>
+ <location filename="../../interface.cpp" line="+142"/>
<source>%1/%2 files, %3/%4</source>
<translation type="unfinished">%1/%2 파일, %3/%4</translation>
</message>
@@ -17,9 +17,13 @@
<translation type="unfinished">실행:</translation>
</message>
<message>
- <location line="+12"/>
<source>In wait</source>
- <translation type="unfinished">대기중</translation>
+ <translation type="obsolete">대기중</translation>
+ </message>
+ <message>
+ <location line="+12"/>
+ <source>Waiting</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location line="+34"/>
diff --git a/plugins-alternative/Themes/Clean/Languages/nl/translation.ts b/plugins-alternative/Themes/Clean/Languages/nl/translation.ts
index 81df74e..54104e3 100644
--- a/plugins-alternative/Themes/Clean/Languages/nl/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/nl/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation type="unfinished"></translation>
</message>
@@ -18,7 +18,7 @@
</message>
<message>
<location filename="../../interface.ui" line="44"/>
- <source>In wait</source>
+ <source>Waiting</source>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/plugins-alternative/Themes/Clean/Languages/no/translation.ts b/plugins-alternative/Themes/Clean/Languages/no/translation.ts
index 81df74e..54104e3 100644
--- a/plugins-alternative/Themes/Clean/Languages/no/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/no/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation type="unfinished"></translation>
</message>
@@ -18,7 +18,7 @@
</message>
<message>
<location filename="../../interface.ui" line="44"/>
- <source>In wait</source>
+ <source>Waiting</source>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/plugins-alternative/Themes/Clean/Languages/pl/translation.ts b/plugins-alternative/Themes/Clean/Languages/pl/translation.ts
index 81df74e..54104e3 100644
--- a/plugins-alternative/Themes/Clean/Languages/pl/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/pl/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation type="unfinished"></translation>
</message>
@@ -18,7 +18,7 @@
</message>
<message>
<location filename="../../interface.ui" line="44"/>
- <source>In wait</source>
+ <source>Waiting</source>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/plugins-alternative/Themes/Clean/Languages/ru/translation.ts b/plugins-alternative/Themes/Clean/Languages/ru/translation.ts
index 5f83874..36798e7 100644
--- a/plugins-alternative/Themes/Clean/Languages/ru/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/ru/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation>%1/%2 файлы, %3/%4</translation>
</message>
@@ -17,9 +17,13 @@
<translation>Действие:</translation>
</message>
<message>
- <location filename="../../interface.ui" line="44"/>
<source>In wait</source>
- <translation>В ожидании</translation>
+ <translation type="obsolete">В ожидании</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="44"/>
+ <source>Waiting</source>
+ <translation type="unfinished"></translation>
</message>
<message>
<location filename="../../interface.ui" line="78"/>
diff --git a/plugins-alternative/Themes/Clean/Languages/th/translation.ts b/plugins-alternative/Themes/Clean/Languages/th/translation.ts
index 81df74e..54104e3 100644
--- a/plugins-alternative/Themes/Clean/Languages/th/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/th/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation type="unfinished"></translation>
</message>
@@ -18,7 +18,7 @@
</message>
<message>
<location filename="../../interface.ui" line="44"/>
- <source>In wait</source>
+ <source>Waiting</source>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/plugins-alternative/Themes/Clean/Languages/tr/translation.ts b/plugins-alternative/Themes/Clean/Languages/tr/translation.ts
index 81df74e..54104e3 100644
--- a/plugins-alternative/Themes/Clean/Languages/tr/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/tr/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation type="unfinished"></translation>
</message>
@@ -18,7 +18,7 @@
</message>
<message>
<location filename="../../interface.ui" line="44"/>
- <source>In wait</source>
+ <source>Waiting</source>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/plugins-alternative/Themes/Clean/Languages/zh/translation.ts b/plugins-alternative/Themes/Clean/Languages/zh/translation.ts
index 81df74e..54104e3 100644
--- a/plugins-alternative/Themes/Clean/Languages/zh/translation.ts
+++ b/plugins-alternative/Themes/Clean/Languages/zh/translation.ts
@@ -4,7 +4,7 @@
<context>
<name>InterfacePlugin</name>
<message>
- <location filename="../../interface.cpp" line="145"/>
+ <location filename="../../interface.cpp" line="142"/>
<source>%1/%2 files, %3/%4</source>
<translation type="unfinished"></translation>
</message>
@@ -18,7 +18,7 @@
</message>
<message>
<location filename="../../interface.ui" line="44"/>
- <source>In wait</source>
+ <source>Waiting</source>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/plugins-alternative/Themes/Clean/documentation.dox b/plugins-alternative/Themes/Clean/documentation.dox
index 56e5331..3f7bc88 100755..100644
--- a/plugins-alternative/Themes/Clean/documentation.dox
+++ b/plugins-alternative/Themes/Clean/documentation.dox
@@ -11,12 +11,12 @@
\section mainpage_overview Overview
It's interface to have minimal interface for Ultracopier.\n
- More informations on <a href="http://ultracopier-wiki.first-world.info/">the wiki of ultracopier</a>. Is part of Ultracopier 0.3 project as alternative plugin.
+ More informations on <a href="http://ultracopier-wiki.first-world.info/">the wiki of ultracopier</a>. Is part of Ultracopier project as alternative plugin.
\section mainpage_platforms Platforms
- This plugin might be usable in all environments where you find Qt 4.\n
- To be compatible with the official Ultracopier plugins, you need compil it with Gcc, Qt4.8, and same env as Ultracopier have been compiled, see the documentation.
+ 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
diff --git a/plugins-alternative/Themes/Clean/factory.cpp b/plugins-alternative/Themes/Clean/factory.cpp
index 2b8d109..6acbe3a 100644
--- a/plugins-alternative/Themes/Clean/factory.cpp
+++ b/plugins-alternative/Themes/Clean/factory.cpp
@@ -1,70 +1,65 @@
/** \file factory.cpp
\brief Define the factory core
\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include <QtCore>
+*/
#include "factory.h"
-PluginInterface_Themes * Factory::getInstance()
+PluginInterface_Themes * ThemesFactory::getInstance()
{
- PluginInterface_Themes * newInterface=new InterfacePlugin(facilityEngine);
- connect(this,SIGNAL(reloadLanguage()),newInterface,SLOT(newLanguageLoaded()));
- return newInterface;
+ InterfacePlugin * newInterface=new InterfacePlugin(facilityEngine);
+ connect(this,&ThemesFactory::reloadLanguage,newInterface,&InterfacePlugin::newLanguageLoaded);
+ return newInterface;
}
-void Factory::setResources(OptionInterface * options,const QString &writePath,const QString &pluginPath,FacilityInterface * facilityEngine,bool portableVersion)
+void ThemesFactory::setResources(OptionInterface * options, const QString &writePath, const QString &pluginPath, FacilityInterface * facilityInterface, const bool &portableVersion)
{
- Q_UNUSED(options)
- Q_UNUSED(writePath)
- Q_UNUSED(pluginPath)
- this->facilityEngine=facilityEngine;
- Q_UNUSED(portableVersion)
+ Q_UNUSED(options)
+ Q_UNUSED(writePath)
+ Q_UNUSED(pluginPath)
+ this->facilityEngine=facilityInterface;
+ Q_UNUSED(portableVersion)
}
-QWidget * Factory::options()
+QWidget * ThemesFactory::options()
{
- return NULL;
+ return NULL;
}
-QIcon Factory::getIcon(const QString &fileName)
+QIcon ThemesFactory::getIcon(const QString &fileName) const
{
- if(fileName=="SystemTrayIcon/exit.png")
- {
- QIcon tempIcon=QIcon::fromTheme("application-exit");
- if(!tempIcon.isNull())
- return tempIcon;
- }
- if(fileName=="SystemTrayIcon/add.png")
- {
- QIcon tempIcon=QIcon::fromTheme("list-add");
- if(!tempIcon.isNull())
- return tempIcon;
- }
- if(fileName=="SystemTrayIcon/informations.png")
- {
- QIcon tempIcon=QIcon::fromTheme("help-about");
- if(!tempIcon.isNull())
- return tempIcon;
- }
- if(fileName=="SystemTrayIcon/options.png")
- {
- QIcon tempIcon=QIcon::fromTheme("applications-system");
- if(!tempIcon.isNull())
- return tempIcon;
- }
- return QIcon(":/resources/"+fileName);
+ if(fileName=="SystemTrayIcon/exit.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("application-exit");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ if(fileName=="SystemTrayIcon/add.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("list-add");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ if(fileName=="SystemTrayIcon/informations.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("help-about");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ if(fileName=="SystemTrayIcon/options.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("applications-system");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ return QIcon(":/Themes/Clean/resources/"+fileName);
}
-void Factory::resetOptions()
+void ThemesFactory::resetOptions()
{
}
-void Factory::newLanguageLoaded()
+void ThemesFactory::newLanguageLoaded()
{
- emit reloadLanguage();
+ emit reloadLanguage();
}
-
-Q_EXPORT_PLUGIN2(interface, Factory);
diff --git a/plugins-alternative/Themes/Clean/factory.h b/plugins-alternative/Themes/Clean/factory.h
index 2a9c0ef..f9b1ee2 100644
--- a/plugins-alternative/Themes/Clean/factory.h
+++ b/plugins-alternative/Themes/Clean/factory.h
@@ -1,8 +1,7 @@
/** \file factory.h
\brief Define the factory, to create instance of the interface
\author alpha_one_x86
-\version 0.3
-\date 2010 */
+\licence GPL3, see the file COPYING */
#ifndef FACTORY_H
#define FACTORY_H
@@ -14,26 +13,27 @@
#include "../../../interface/PluginInterface_Themes.h"
/// \brief Define the factory, to create instance of the interface
-class Factory : public PluginInterface_ThemesFactory
+class ThemesFactory : public PluginInterface_ThemesFactory
{
- Q_OBJECT
- Q_INTERFACES(PluginInterface_ThemesFactory)
- public:
- /// \brief to return the instance of the copy engine
- PluginInterface_Themes * getInstance();
- /// \brief set the resources, to store options, to have facilityInterface
- void setResources(OptionInterface * optionsEngine,const QString &writePath,const QString &pluginPath,FacilityInterface * facilityEngine,bool portableVersion);
- /// \brief to get the default options widget
- QWidget * options();
- /// \brief to get a resource icon
- QIcon getIcon(const QString &fileName);
- signals:
- void reloadLanguage();
- public slots:
- void resetOptions();
- void newLanguageLoaded();
- private:
- FacilityInterface * facilityEngine;
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "first-world.info.ultracopier.PluginInterface.ThemesFactory/1.0.1.0" FILE "plugin.json")
+ Q_INTERFACES(PluginInterface_ThemesFactory)
+ public:
+ /// \brief to return the instance of the copy engine
+ PluginInterface_Themes * getInstance();
+ /// \brief set the resources, to store options, to have facilityInterface
+ void setResources(OptionInterface * options,const QString &writePath,const QString &pluginPath,FacilityInterface * facilityInterface,const bool &portableVersion);
+ /// \brief to get the default options widget
+ QWidget * options();
+ /// \brief to get a resource icon
+ QIcon getIcon(const QString &fileName) const;
+ signals:
+ void reloadLanguage();
+ public slots:
+ void resetOptions();
+ void newLanguageLoaded();
+ private:
+ FacilityInterface * facilityEngine;
};
#endif // FACTORY_H
diff --git a/plugins-alternative/Themes/Clean/informations.xml b/plugins-alternative/Themes/Clean/informations.xml
index 8e076a4..3b49a98 100644
--- a/plugins-alternative/Themes/Clean/informations.xml
+++ b/plugins-alternative/Themes/Clean/informations.xml
@@ -17,11 +17,10 @@
<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>0.3.1.0</version>
+ <version>1.2.3.6</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. -->
<dependencies><![CDATA[
- >=ultracopier-0.3.1.0
]]></dependencies>
</package> \ No newline at end of file
diff --git a/plugins-alternative/Themes/Clean/interface.cpp b/plugins-alternative/Themes/Clean/interface.cpp
index 6d6c4b1..3f2cd2a 100644
--- a/plugins-alternative/Themes/Clean/interface.cpp
+++ b/plugins-alternative/Themes/Clean/interface.cpp
@@ -1,99 +1,96 @@
/** \file interface.cpp
\brief Define the interface core
\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include <QtCore>
+*/
#include "interface.h"
#include "ui_interface.h"
InterfacePlugin::InterfacePlugin(FacilityInterface * facilityEngine) :
- ui(new Ui::interface())
-{
- ui->setupUi(this);
- currentFile = 0;
- totalFile = 0;
- currentSize = 0;
- totalSize = 0;
- modeIsForced = false;
- haveStarted = false;
- this->facilityEngine = facilityEngine;
- this->show();
- menu=new QMenu(this);
- ui->toolButton->setMenu(menu);
- updateModeAndType();
-
- connect(ui->actionAddFile,SIGNAL(triggered()),this,SLOT(forcedModeAddFile()));
- connect(ui->actionAddFileToCopy,SIGNAL(triggered()),this,SLOT(forcedModeAddFileToCopy()));
- connect(ui->actionAddFileToMove,SIGNAL(triggered()),this,SLOT(forcedModeAddFileToMove()));
- connect(ui->actionAddFolderToCopy,SIGNAL(triggered()),this,SLOT(forcedModeAddFolderToCopy()));
- connect(ui->actionAddFolderToMove,SIGNAL(triggered()),this,SLOT(forcedModeAddFolderToMove()));
- connect(ui->actionAddFolder,SIGNAL(triggered()),this,SLOT(forcedModeAddFolder()));
+ ui(new Ui::interface())
+{
+ ui->setupUi(this);
+ currentFile = 0;
+ totalFile = 0;
+ currentSize = 0;
+ totalSize = 0;
+ modeIsForced = false;
+ haveStarted = false;
+ this->facilityEngine = facilityEngine;
+ menu=new QMenu(this);
+ ui->toolButton->setMenu(menu);
+ updateModeAndType();
+
+ connect(ui->actionAddFile,&QAction::triggered,this,&InterfacePlugin::forcedModeAddFile);
+ connect(ui->actionAddFileToCopy,&QAction::triggered,this,&InterfacePlugin::forcedModeAddFileToCopy);
+ connect(ui->actionAddFileToMove,&QAction::triggered,this,&InterfacePlugin::forcedModeAddFileToMove);
+ connect(ui->actionAddFolderToCopy,&QAction::triggered,this,&InterfacePlugin::forcedModeAddFolderToCopy);
+ connect(ui->actionAddFolderToMove,&QAction::triggered,this,&InterfacePlugin::forcedModeAddFolderToMove);
+ connect(ui->actionAddFolder,&QAction::triggered,this,&InterfacePlugin::forcedModeAddFolder);
+ show();
}
InterfacePlugin::~InterfacePlugin()
{
- delete menu;
+ delete menu;
}
void InterfacePlugin::forcedModeAddFile()
{
- emit userAddFile(mode);
+ emit userAddFile(mode);
}
void InterfacePlugin::forcedModeAddFolder()
{
- emit userAddFolder(mode);
+ emit userAddFolder(mode);
}
void InterfacePlugin::forcedModeAddFileToCopy()
{
- emit userAddFile(Copy);
+ emit userAddFile(Ultracopier::Copy);
}
void InterfacePlugin::forcedModeAddFolderToCopy()
{
- emit userAddFolder(Copy);
+ emit userAddFolder(Ultracopier::Copy);
}
void InterfacePlugin::forcedModeAddFileToMove()
{
- emit userAddFile(Move);
+ emit userAddFile(Ultracopier::Move);
}
void InterfacePlugin::forcedModeAddFolderToMove()
{
- emit userAddFolder(Move);
+ emit userAddFolder(Ultracopier::Move);
}
void InterfacePlugin::updateModeAndType()
{
- menu->clear();
- if(modeIsForced)
- {
- menu->addAction(ui->actionAddFile);
- if(type==FileAndFolder)
- menu->addAction(ui->actionAddFolder);
- }
- else
- {
- menu->addAction(ui->actionAddFileToCopy);
- menu->addAction(ui->actionAddFileToMove);
- if(type==FileAndFolder)
- {
- menu->addAction(ui->actionAddFolderToCopy);
- menu->addAction(ui->actionAddFolderToMove);
- }
- }
+ 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 InterfacePlugin::closeEvent(QCloseEvent *event)
{
- event->ignore();
- this->hide();
- emit cancel();
+ event->ignore();
+ this->hide();
+ emit cancel();
}
void InterfacePlugin::detectedSpeed(const quint64 &speed)
@@ -106,162 +103,170 @@ QWidget * InterfacePlugin::getOptionsEngineWidget()
return NULL;
}
-void InterfacePlugin::getOptionsEngineEnabled(bool isEnabled)
+void InterfacePlugin::getOptionsEngineEnabled(const bool &isEnabled)
{
Q_UNUSED(isEnabled)
}
-void InterfacePlugin::setCopyType(CopyType type)
+void InterfacePlugin::setCopyType(const Ultracopier::CopyType &type)
{
- this->type=type;
- updateModeAndType();
+ this->type=type;
+ updateModeAndType();
}
-void InterfacePlugin::forceCopyMode(CopyMode mode)
+void InterfacePlugin::forceCopyMode(const Ultracopier::CopyMode &mode)
{
- modeIsForced=true;
- this->mode=mode;
- updateModeAndType();
+ modeIsForced=true;
+ this->mode=mode;
+ updateModeAndType();
}
void InterfacePlugin::updateTitle()
{
- QString actionString;
- switch(action)
- {
- case Listing:
- actionString=facilityEngine->translateText("Listing");
- break;
- case Copying:
- actionString=facilityEngine->translateText("Copying");
- break;
- case CopyingAndListing:
- actionString=facilityEngine->translateText("Listing and copying");
- break;
- case Idle:
- actionString="Ultracopier";
- break;
- }
- this->setWindowTitle(actionString+" - "+tr("%1/%2 files, %3/%4").arg(currentFile).arg(totalFile).arg(currentSize).arg(totalSize));
-}
-
-void InterfacePlugin::actionInProgess(EngineActionInProgress action)
-{
- this->action=action;
- switch(action)
- {
- case Copying:
- case CopyingAndListing:
- ui->progressBar->setMaximum(65535);
- ui->progressBar->setMinimum(0);
- break;
- case Listing:
- ui->progressBar->setMaximum(0);
- ui->progressBar->setMinimum(0);
- break;
- case Idle:
- if(haveStarted)
- emit cancel();
- break;
- default:
- break;
- }
- switch(action)
- {
- case Copying:
- case CopyingAndListing:
- haveStarted=true;
- break;
- default:
- break;
- }
-}
-
-void InterfacePlugin::newTransferStart(const ItemOfCopyList &item)
-{
- ui->text->setText(item.sourceFullPath);
+ QString actionString;
+ switch(action)
+ {
+ case Ultracopier::Listing:
+ actionString=facilityEngine->translateText("Listing");
+ break;
+ case Ultracopier::Copying:
+ actionString=facilityEngine->translateText("Copying");
+ break;
+ case Ultracopier::CopyingAndListing:
+ actionString=facilityEngine->translateText("Listing and copying");
+ break;
+ case Ultracopier::Idle:
+ actionString="Ultracopier";
+ break;
+ }
+ this->setWindowTitle(actionString+" - "+tr("%1/%2 files, %3/%4").arg(currentFile).arg(totalFile).arg(currentSize).arg(totalSize));
+}
+
+void InterfacePlugin::actionInProgess(const Ultracopier::EngineActionInProgress &action)
+{
+ this->action=action;
+ switch(action)
+ {
+ case Ultracopier::Copying:
+ case Ultracopier::CopyingAndListing:
+ ui->progressBar->setMaximum(65535);
+ ui->progressBar->setMinimum(0);
+ break;
+ case Ultracopier::Listing:
+ ui->progressBar->setMaximum(0);
+ ui->progressBar->setMinimum(0);
+ break;
+ case Ultracopier::Idle:
+ if(haveStarted)
+ emit cancel();
+ break;
+ default:
+ break;
+ }
+ switch(action)
+ {
+ case Ultracopier::Copying:
+ case Ultracopier::CopyingAndListing:
+ haveStarted=true;
+ break;
+ default:
+ break;
+ }
+}
+
+void InterfacePlugin::newTransferStart(const Ultracopier::ItemOfCopyList &item)
+{
+ ui->text->setText(item.sourceFullPath);
}
void InterfacePlugin::newTransferStop(const quint64 &id)
{
- Q_UNUSED(id)
+ Q_UNUSED(id)
}
void InterfacePlugin::newFolderListing(const QString &path)
{
- if(action==Listing)
- ui->text->setText(path);
+ if(action==Ultracopier::Listing)
+ ui->text->setText(path);
}
void InterfacePlugin::remainingTime(const int &remainingSeconds)
{
- Q_UNUSED(remainingSeconds)
+ Q_UNUSED(remainingSeconds)
}
void InterfacePlugin::newCollisionAction(const QString &action)
{
- Q_UNUSED(action)
+ Q_UNUSED(action)
}
void InterfacePlugin::newErrorAction(const QString &action)
{
- Q_UNUSED(action)
+ Q_UNUSED(action)
}
void InterfacePlugin::errorDetected()
{
}
-void InterfacePlugin::setTransferListOperation(TransferListOperation transferListOperation)
+/// \brief new error
+void InterfacePlugin::errorToRetry(const QString &source,const QString &destination,const QString &error)
+{
+ Q_UNUSED(source);
+ Q_UNUSED(destination);
+ Q_UNUSED(error);
+}
+
+void InterfacePlugin::setTransferListOperation(const Ultracopier::TransferListOperation &transferListOperation)
{
- Q_UNUSED(transferListOperation)
+ Q_UNUSED(transferListOperation)
}
//speed limitation
bool InterfacePlugin::setSpeedLimitation(const qint64 &speedLimitation)
{
- Q_UNUSED(speedLimitation)
+ Q_UNUSED(speedLimitation)
return false;
}
//get information about the copy
void InterfacePlugin::setGeneralProgression(const quint64 &current,const quint64 &total)
{
- ui->progressBar->setValue(((double)current/total)*65535);
+ ui->progressBar->setValue(((double)current/total)*65535);
}
void InterfacePlugin::setCollisionAction(const QList<QPair<QString,QString> > &list)
{
- Q_UNUSED(list)
+ Q_UNUSED(list)
}
void InterfacePlugin::setErrorAction(const QList<QPair<QString,QString> > &list)
{
- Q_UNUSED(list)
+ Q_UNUSED(list)
}
//edit the transfer list
-void InterfacePlugin::getActionOnList(const QList<returnActionOnCopyList> &returnActions)
+void InterfacePlugin::getActionOnList(const QList<Ultracopier::ReturnActionOnCopyList> &returnActions)
{
- Q_UNUSED(returnActions)
+ Q_UNUSED(returnActions)
}
void InterfacePlugin::haveExternalOrder()
{
- ui->toolButton->hide();
+ ui->toolButton->hide();
}
-void InterfacePlugin::isInPause(bool isInPause)
+void InterfacePlugin::isInPause(const bool &isInPause)
{
- //resume in auto the pause
- if(isInPause)
- emit resume();
+ //resume in auto the pause
+ if(isInPause)
+ emit resume();
}
void InterfacePlugin::newLanguageLoaded()
{
- ui->retranslateUi(this);
- updateTitle();
+ ui->retranslateUi(this);
+ updateTitle();
}
/*
@@ -269,147 +274,153 @@ void InterfacePlugin::newLanguageLoaded()
Return[1]: totalSize
Return[2]: currentFile
*/
-void InterfacePlugin::synchronizeItems(const QList<returnActionOnCopyList>& returnActions)
-{
- loop_size=returnActions.size();
- index_for_loop=0;
- while(index_for_loop<loop_size)
- {
- const returnActionOnCopyList& action=returnActions.at(index_for_loop);
- switch(action.type)
- {
- case AddingItem:
- {
- totalFile++;
- totalSize+=action.addAction.size;
- }
- break;
- case RemoveItem:
- currentFile++;
- break;
- case PreOperation:
- {
- ItemOfCopyListWithMoreInformations tempItem;
- tempItem.currentProgression=0;
- tempItem.generalData=action.addAction;
- totalFile+=action.addAction.size;
- InternalRunningOperation << tempItem;
- }
- break;
- case Transfer:
- {
- sub_index_for_loop=0;
- sub_loop_size=InternalRunningOperation.size();
- while(sub_index_for_loop<sub_loop_size)
- {
- if(InternalRunningOperation.at(sub_index_for_loop).generalData.id==action.addAction.id)
- {
- InternalRunningOperation[sub_index_for_loop].actionType=action.type;
- break;
- }
- sub_index_for_loop++;
- }
- }
- break;
- case PostOperation:
- {
- sub_index_for_loop=0;
- sub_loop_size=InternalRunningOperation.size();
- while(sub_index_for_loop<sub_loop_size)
- {
- if(InternalRunningOperation.at(sub_index_for_loop).generalData.id==action.addAction.id)
- {
- InternalRunningOperation.removeAt(sub_index_for_loop);
- break;
- }
- sub_index_for_loop++;
- }
- }
- break;
- case CustomOperation:
- {
- bool custom_with_progression=(action.addAction.size==1);
- sub_index_for_loop=0;
- sub_loop_size=InternalRunningOperation.size();
- while(sub_index_for_loop<sub_loop_size)
- {
- if(InternalRunningOperation.at(sub_index_for_loop).generalData.id==action.addAction.id)
- {
- InternalRunningOperation[sub_index_for_loop].actionType=action.type;
- InternalRunningOperation[sub_index_for_loop].custom_with_progression=custom_with_progression;
- InternalRunningOperation[sub_index_for_loop].currentProgression=0;
- break;
- }
- sub_index_for_loop++;
- }
- }
- break;
- default:
- //unknow code, ignore it
- break;
- }
- index_for_loop++;
- }
-}
-
-void InterfacePlugin::setFileProgression(const QList<ProgressionItem> &progressionList)
-{
- loop_size=InternalRunningOperation.size();
- sub_loop_size=progressionList.size();
- index_for_loop=0;
- while(index_for_loop<loop_size)
- {
- sub_index_for_loop=0;
- while(sub_index_for_loop<sub_loop_size)
- {
- if(progressionList.at(sub_index_for_loop).id==InternalRunningOperation.at(index_for_loop).generalData.id)
- {
- InternalRunningOperation[index_for_loop].generalData.size=progressionList.at(sub_index_for_loop).total;
- InternalRunningOperation[index_for_loop].currentProgression=progressionList.at(sub_index_for_loop).current;
- break;
- }
- sub_index_for_loop++;
- }
- index_for_loop++;
- }
+void InterfacePlugin::synchronizeItems(const QList<Ultracopier::ReturnActionOnCopyList>& returnActions)
+{
+ loop_size=returnActions.size();
+ index_for_loop=0;
+ while(index_for_loop<loop_size)
+ {
+ const Ultracopier::ReturnActionOnCopyList& action=returnActions.at(index_for_loop);
+ switch(action.type)
+ {
+ case Ultracopier::AddingItem:
+ {
+ totalFile++;
+ totalSize+=action.addAction.size;
+ }
+ break;
+ case Ultracopier::RemoveItem:
+ currentFile++;
+ break;
+ case Ultracopier::PreOperation:
+ {
+ ItemOfCopyListWithMoreInformations tempItem;
+ tempItem.currentProgression=0;
+ tempItem.generalData=action.addAction;
+ currentSize+=action.addAction.size;
+ InternalRunningOperation << tempItem;
+ }
+ break;
+ case Ultracopier::Transfer:
+ {
+ sub_index_for_loop=0;
+ sub_loop_size=InternalRunningOperation.size();
+ while(sub_index_for_loop<sub_loop_size)
+ {
+ if(InternalRunningOperation.at(sub_index_for_loop).generalData.id==action.addAction.id)
+ {
+ InternalRunningOperation[sub_index_for_loop].actionType=action.type;
+ break;
+ }
+ sub_index_for_loop++;
+ }
+ }
+ break;
+ case Ultracopier::PostOperation:
+ {
+ sub_index_for_loop=0;
+ sub_loop_size=InternalRunningOperation.size();
+ while(sub_index_for_loop<sub_loop_size)
+ {
+ if(InternalRunningOperation.at(sub_index_for_loop).generalData.id==action.addAction.id)
+ {
+ InternalRunningOperation.removeAt(sub_index_for_loop);
+ break;
+ }
+ sub_index_for_loop++;
+ }
+ }
+ break;
+ case Ultracopier::CustomOperation:
+ {
+ bool custom_with_progression=(action.addAction.size==1);
+ sub_index_for_loop=0;
+ sub_loop_size=InternalRunningOperation.size();
+ while(sub_index_for_loop<sub_loop_size)
+ {
+ if(InternalRunningOperation.at(sub_index_for_loop).generalData.id==action.addAction.id)
+ {
+ InternalRunningOperation[sub_index_for_loop].actionType=action.type;
+ InternalRunningOperation[sub_index_for_loop].custom_with_progression=custom_with_progression;
+ InternalRunningOperation[sub_index_for_loop].currentProgression=0;
+ break;
+ }
+ sub_index_for_loop++;
+ }
+ }
+ break;
+ default:
+ //unknow code, ignore it
+ break;
+ }
+ index_for_loop++;
+ }
+}
+
+/** \brief support speed limitation */
+void InterfacePlugin::setSupportSpeedLimitation(const bool &supportSpeedLimitationBool)
+{
+ Q_UNUSED(supportSpeedLimitationBool);
+}
+
+void InterfacePlugin::setFileProgression(const QList<Ultracopier::ProgressionItem> &progressionList)
+{
+ loop_size=InternalRunningOperation.size();
+ sub_loop_size=progressionList.size();
+ index_for_loop=0;
+ while(index_for_loop<loop_size)
+ {
+ sub_index_for_loop=0;
+ while(sub_index_for_loop<sub_loop_size)
+ {
+ if(progressionList.at(sub_index_for_loop).id==InternalRunningOperation.at(index_for_loop).generalData.id)
+ {
+ InternalRunningOperation[index_for_loop].generalData.size=progressionList.at(sub_index_for_loop).total;
+ InternalRunningOperation[index_for_loop].currentProgression=(progressionList.at(sub_index_for_loop).currentRead+progressionList.at(sub_index_for_loop).currentWrite)/2;
+ break;
+ }
+ sub_index_for_loop++;
+ }
+ index_for_loop++;
+ }
}
InterfacePlugin::currentTransfertItem InterfacePlugin::getCurrentTransfertItem()
{
- currentTransfertItem returnItem;
- returnItem.haveItem=InternalRunningOperation.size()>0;
- if(returnItem.haveItem)
- {
- const ItemOfCopyListWithMoreInformations &itemTransfer=InternalRunningOperation.first();
- returnItem.from=itemTransfer.generalData.sourceFullPath;
- returnItem.to=itemTransfer.generalData.destinationFullPath;
- returnItem.current_file=itemTransfer.generalData.destinationFileName+", "+facilityEngine->sizeToString(itemTransfer.generalData.size);
- switch(itemTransfer.actionType)
- {
- case CustomOperation:
- if(!itemTransfer.custom_with_progression)
- returnItem.progressBar_file=0;
- else
- {
- if(itemTransfer.generalData.size>0)
- returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
- else
- returnItem.progressBar_file=0;
- }
- break;
- case Transfer:
- if(itemTransfer.generalData.size>0)
- returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
- else
- returnItem.progressBar_file=0;
- break;
- case PostOperation:
- returnItem.progressBar_file=65535;
- break;
- default:
- returnItem.progressBar_file=0;
- }
- }
- return returnItem;
+ currentTransfertItem returnItem;
+ returnItem.haveItem=InternalRunningOperation.size()>0;
+ if(returnItem.haveItem)
+ {
+ const ItemOfCopyListWithMoreInformations &itemTransfer=InternalRunningOperation.first();
+ returnItem.from=itemTransfer.generalData.sourceFullPath;
+ returnItem.to=itemTransfer.generalData.destinationFullPath;
+ returnItem.current_file=itemTransfer.generalData.destinationFileName+", "+facilityEngine->sizeToString(itemTransfer.generalData.size);
+ switch(itemTransfer.actionType)
+ {
+ case Ultracopier::CustomOperation:
+ if(!itemTransfer.custom_with_progression)
+ returnItem.progressBar_file=0;
+ else
+ {
+ if(itemTransfer.generalData.size>0)
+ returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
+ else
+ returnItem.progressBar_file=0;
+ }
+ break;
+ case Ultracopier::Transfer:
+ if(itemTransfer.generalData.size>0)
+ returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
+ else
+ returnItem.progressBar_file=0;
+ break;
+ case Ultracopier::PostOperation:
+ returnItem.progressBar_file=65535;
+ break;
+ default:
+ returnItem.progressBar_file=0;
+ }
+ }
+ return returnItem;
}
diff --git a/plugins-alternative/Themes/Clean/interface.h b/plugins-alternative/Themes/Clean/interface.h
index b7ab57f..e5b5c36 100644
--- a/plugins-alternative/Themes/Clean/interface.h
+++ b/plugins-alternative/Themes/Clean/interface.h
@@ -1,8 +1,7 @@
/** \file interface.h
\brief Define the interface
\author alpha_one_x86
-\version 0.3
-\date 2010 */
+\licence GPL3, see the file COPYING */
#ifndef INTERFACE_TEST_H
#define INTERFACE_TEST_H
@@ -15,145 +14,128 @@
#include "../../../interface/PluginInterface_Themes.h"
namespace Ui {
- class interface;
+ class interface;
}
/// \brief Define the interface
class InterfacePlugin : public PluginInterface_Themes
{
- Q_OBJECT
+ Q_OBJECT
public slots:
- //send information about the copy
- /// \brief to set the action in progress
- void actionInProgess(EngineActionInProgress);
- /// \brief new transfer have started
- void newTransferStart(const ItemOfCopyList &item);
- /** \brief one transfer have been stopped
- * is stopped, example: because error have occurred, and try later, don't remove the item! */
- void newTransferStop(const quint64 &id);
- /// \brief the new folder is listing
- void newFolderListing(const QString &path);
- /** \brief show the detected speed
- * in byte per seconds */
- void detectedSpeed(const quint64 &speed);
- /** \brief show the remaining time
- * time in seconds */
- void remainingTime(const int &remainingSeconds);
- /// \brief set the current collision action
- void newCollisionAction(const QString &action);
- /// \brief set the current error action
- void newErrorAction(const QString &action);
- /// \brief set one error is detected
- void errorDetected();
- //speed limitation
- /** \brief the max speed used
- * in byte per seconds, -1 if not able, 0 if disabled */
- bool setSpeedLimitation(const qint64 &speedLimitation);
- //set the translate
- void newLanguageLoaded();
- void synchronizeItems(const QList<returnActionOnCopyList>& returnActions);
+ //send information about the copy
+ /// \brief to set the action in progress
+ void actionInProgess(const Ultracopier::EngineActionInProgress&);
+ /// \brief new transfer have started
+ void newTransferStart(const Ultracopier::ItemOfCopyList &item);
+ /** \brief one transfer have been stopped
+ * is stopped, example: because error have occurred, and try later, don't remove the item! */
+ void newTransferStop(const quint64 &id);
+ /// \brief the new folder is listing
+ void newFolderListing(const QString &path);
+ /** \brief show the detected speed
+ * in byte per seconds */
+ void detectedSpeed(const quint64 &speed);
+ /** \brief show the remaining time
+ * time in seconds */
+ void remainingTime(const int &remainingSeconds);
+ /// \brief set the current collision action
+ void newCollisionAction(const QString &action);
+ /// \brief set the current error action
+ void newErrorAction(const QString &action);
+ /// \brief set one error is detected
+ void errorDetected();
+ /// \brief new error
+ void errorToRetry(const QString &source,const QString &destination,const QString &error);
+ //speed limitation
+ /** \brief the max speed used
+ * in byte per seconds, -1 if not able, 0 if disabled */
+ bool setSpeedLimitation(const qint64 &speedLimitation);
+ //set the translate
+ void newLanguageLoaded();
+ void synchronizeItems(const QList<Ultracopier::ReturnActionOnCopyList>& returnActions);
+ /** \brief support speed limitation */
+ void setSupportSpeedLimitation(const bool &supportSpeedLimitationBool);
public:
- /// \brief the transfer item with progression
- struct ItemOfCopyListWithMoreInformations
- {
- quint64 currentProgression;
- ItemOfCopyList generalData;
- ActionTypeCopyList actionType;
- bool custom_with_progression;
- };
- /// \brief returned first transfer item
- struct currentTransfertItem
- {
- quint64 id;
- bool haveItem;
- QString from;
- QString to;
- QString current_file;
- int progressBar_file;
- };
- /// \brief get the widget for the copy engine
- QWidget * getOptionsEngineWidget();
- /// \brief to set if the copy engine is found
- void getOptionsEngineEnabled(bool isEnabled);
- /// \brief get action on the transfer list (add/move/remove)
- void getActionOnList(const QList<returnActionOnCopyList> &returnActions);
- //get information about the copy
- /// \brief show the general progression
- void setGeneralProgression(const quint64 &current,const quint64 &total);
- /// \brief show the file progression
- void setFileProgression(const QList<ProgressionItem> &progressionList);
- /// \brief set collision action
- void setCollisionAction(const QList<QPair<QString,QString> > &);
- /// \brief set error action
- void setErrorAction(const QList<QPair<QString,QString> > &);
- /// \brief set the copyType -> file or folder
- void setCopyType(CopyType);
- /// \brief set the copyMove -> copy or move, to force in copy or move, else support both
- void forceCopyMode(CopyMode);
- /// \brief set if transfer list is exportable/importable
- void setTransferListOperation(TransferListOperation transferListOperation);
- /** \brief set if the order is external (like file manager copy)
- * to notify the interface, which can hide add folder/filer button */
- void haveExternalOrder();
- /// \brief set if is in pause
- void isInPause(bool);
+ /// \brief the transfer item with progression
+ struct ItemOfCopyListWithMoreInformations
+ {
+ quint64 currentProgression;
+ Ultracopier::ItemOfCopyList generalData;
+ Ultracopier::ActionTypeCopyList actionType;
+ bool custom_with_progression;
+ };
+ /// \brief returned first transfer item
+ struct currentTransfertItem
+ {
+ quint64 id;
+ bool haveItem;
+ QString from;
+ QString to;
+ QString current_file;
+ int progressBar_file;
+ };
+ /// \brief get the widget for the copy engine
+ QWidget * getOptionsEngineWidget();
+ /// \brief to set if the copy engine is found
+ void getOptionsEngineEnabled(const bool &isEnabled);
+ /// \brief get action on the transfer list (add/move/remove)
+ void getActionOnList(const QList<Ultracopier::ReturnActionOnCopyList> &returnActions);
+ //get information about the copy
+ /// \brief show the general progression
+ void setGeneralProgression(const quint64 &current,const quint64 &total);
+ /// \brief show the file progression
+ void setFileProgression(const QList<Ultracopier::ProgressionItem> &progressionList);
+ /// \brief set collision action
+ void setCollisionAction(const QList<QPair<QString,QString> > &);
+ /// \brief set error action
+ void setErrorAction(const QList<QPair<QString,QString> > &);
+ /// \brief set the copyType -> file or folder
+ void setCopyType(const Ultracopier::CopyType&);
+ /// \brief set the copyMove -> copy or move, to force in copy or move, else support both
+ void forceCopyMode(const Ultracopier::CopyMode &);
+ /// \brief set if transfer list is exportable/importable
+ void setTransferListOperation(const Ultracopier::TransferListOperation &transferListOperation);
+ /** \brief set if the order is external (like file manager copy)
+ * to notify the interface, which can hide add folder/filer button */
+ void haveExternalOrder();
+ /// \brief set if is in pause
+ void isInPause(const bool &);
signals:
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- /// \brief To debug source
- void debugInformation(DebugLevel level,QString fonction,QString text,QString file,int ligne);
- #endif
- //set the transfer list
- void removeItems(QList<int> ids);
- void moveItemsOnTop(QList<int> ids);
- void moveItemsUp(QList<int> ids);
- void moveItemsDown(QList<int> ids);
- void moveItemsOnBottom(QList<int> ids);
- void exportTransferList();
- void importTransferList();
- //user ask ask to add folder (add it with interface ask source/destination)
- void userAddFolder(CopyMode);
- void userAddFile(CopyMode);
- void urlDropped(QList<QUrl> urls);
- //action on the copy
- void pause();
- void resume();
- void skip(quint64 id);
- void cancel();
- //edit the action
- void sendCollisionAction(QString action);
- void sendErrorAction(QString action);
- void newSpeedLimitation(qint64);
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ /// \brief To debug source
+ void debugInformation(const DebugLevel &level,const QString &fonction,const QString &text,const QString &file,const int &ligne);
+ #endif
public:
- //constructor and destructor
- InterfacePlugin(FacilityInterface * facilityEngine);
- ~InterfacePlugin();
+ //constructor and destructor
+ InterfacePlugin(FacilityInterface * facilityEngine);
+ ~InterfacePlugin();
private:
- Ui::interface *ui;
- quint64 currentFile;
- quint64 totalFile;
- quint64 currentSize;
- quint64 totalSize;
- void updateTitle();
- QMenu *menu;
- EngineActionInProgress action;
- void closeEvent(QCloseEvent *event);
- void updateModeAndType();
- bool modeIsForced;
- CopyType type;
- CopyMode mode;
- bool haveStarted;
- QList<ItemOfCopyListWithMoreInformations> InternalRunningOperation;
- int loop_size,index_for_loop;
- int sub_loop_size,sub_index_for_loop;
- currentTransfertItem getCurrentTransfertItem();
- FacilityInterface * facilityEngine;
+ Ui::interface *ui;
+ quint64 currentFile;
+ quint64 totalFile;
+ quint64 currentSize;
+ quint64 totalSize;
+ void updateTitle();
+ QMenu *menu;
+ Ultracopier::EngineActionInProgress action;
+ void closeEvent(QCloseEvent *event);
+ void updateModeAndType();
+ bool modeIsForced;
+ Ultracopier::CopyType type;
+ Ultracopier::CopyMode mode;
+ bool haveStarted;
+ QList<ItemOfCopyListWithMoreInformations> InternalRunningOperation;
+ int loop_size,index_for_loop;
+ int sub_loop_size,sub_index_for_loop;
+ currentTransfertItem getCurrentTransfertItem();
+ FacilityInterface * facilityEngine;
private slots:
- void forcedModeAddFile();
- void forcedModeAddFolder();
- void forcedModeAddFileToCopy();
- void forcedModeAddFolderToCopy();
- void forcedModeAddFileToMove();
- void forcedModeAddFolderToMove();
+ void forcedModeAddFile();
+ void forcedModeAddFolder();
+ void forcedModeAddFileToCopy();
+ void forcedModeAddFolderToCopy();
+ void forcedModeAddFileToMove();
+ void forcedModeAddFolderToMove();
};
#endif // INTERFACE_TEST_H
diff --git a/plugins-alternative/Themes/Clean/interface.pro b/plugins-alternative/Themes/Clean/interface.pro
index 20fd1dd..eb124c9 100644
--- a/plugins-alternative/Themes/Clean/interface.pro
+++ b/plugins-alternative/Themes/Clean/interface.pro
@@ -1,31 +1,36 @@
+CONFIG += c++11
+QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
+mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
+
+QT += widgets
TEMPLATE = lib
CONFIG += plugin
HEADERS = interface.h \
- interface/PluginInterface_Themes.h \
- StructEnumDefinition.h \
+ StructEnumDefinition.h \
factory.h \
../../../interface/PluginInterface_Themes.h
SOURCES = interface.cpp \
factory.cpp
TARGET = $$qtLibraryTarget(interface)
-TRANSLATIONS += Languages/fr/translation.ts \
- Languages/ar/translation.ts \
- Languages/zh/translation.ts \
- Languages/es/translation.ts \
+TRANSLATIONS += Languages/ar/translation.ts \
Languages/de/translation.ts \
Languages/el/translation.ts \
+ Languages/en/translation.ts \
+ Languages/es/translation.ts \
+ Languages/fr/translation.ts \
+ Languages/hi/translation.ts \
+ Languages/hu/translation.ts \
+ Languages/id/translation.ts \
Languages/it/translation.ts \
Languages/ja/translation.ts \
- Languages/id/translation.ts \
+ Languages/ko/translation.ts \
+ Languages/nl/translation.ts \
+ Languages/no/translation.ts \
Languages/pl/translation.ts \
Languages/ru/translation.ts \
- Languages/tr/translation.ts \
Languages/th/translation.ts \
- Languages/hi/translation.ts \
- Languages/nl/translation.ts \
- Languages/no/translation.ts \
- Languages/pt/translation.ts \
- Languages/ko/translation.ts
+ Languages/tr/translation.ts \
+ Languages/zh/translation.ts
FORMS += \
interface.ui
diff --git a/plugins-alternative/Themes/Clean/interface.ui b/plugins-alternative/Themes/Clean/interface.ui
index 1ac0e4a..f178af7 100644
--- a/plugins-alternative/Themes/Clean/interface.ui
+++ b/plugins-alternative/Themes/Clean/interface.ui
@@ -41,7 +41,7 @@
</font>
</property>
<property name="text">
- <string>In wait</string>
+ <string>Waiting</string>
</property>
</widget>
</item>
@@ -72,7 +72,7 @@
<action name="actionAddFile">
<property name="icon">
<iconset>
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
+ <normaloff>:/Themes/Clean/resources/add.png</normaloff>:/Themes/Clean/resources/add.png</iconset>
</property>
<property name="text">
<string>Add file</string>
@@ -81,7 +81,7 @@
<action name="actionAddFolder">
<property name="icon">
<iconset>
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
+ <normaloff>:/Themes/Clean/resources/add.png</normaloff>:/Themes/Clean/resources/add.png</iconset>
</property>
<property name="text">
<string>Add folder</string>
@@ -90,7 +90,7 @@
<action name="actionAddFileToMove">
<property name="icon">
<iconset>
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
+ <normaloff>:/Themes/Clean/resources/add.png</normaloff>:/Themes/Clean/resources/add.png</iconset>
</property>
<property name="text">
<string>Move file(s)</string>
@@ -99,7 +99,7 @@
<action name="actionAddFolderToMove">
<property name="icon">
<iconset>
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
+ <normaloff>:/Themes/Clean/resources/add.png</normaloff>:/Themes/Clean/resources/add.png</iconset>
</property>
<property name="text">
<string>Move folder</string>
@@ -108,7 +108,7 @@
<action name="actionAddFileToCopy">
<property name="icon">
<iconset>
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
+ <normaloff>:/Themes/Clean/resources/add.png</normaloff>:/Themes/Clean/resources/add.png</iconset>
</property>
<property name="text">
<string>Copy file(s)</string>
@@ -117,7 +117,7 @@
<action name="actionAddFolderToCopy">
<property name="icon">
<iconset>
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
+ <normaloff>:/Themes/Clean/resources/add.png</normaloff>:/Themes/Clean/resources/add.png</iconset>
</property>
<property name="text">
<string>Copy folder</string>
diff --git a/plugins-alternative/Themes/Clean/plugin.json b/plugins-alternative/Themes/Clean/plugin.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/plugins-alternative/Themes/Clean/plugin.json
@@ -0,0 +1 @@
+{} \ No newline at end of file
diff --git a/plugins-alternative/Themes/Clean/resources.qrc b/plugins-alternative/Themes/Clean/resources.qrc
index 67c550f..40533c4 100644
--- a/plugins-alternative/Themes/Clean/resources.qrc
+++ b/plugins-alternative/Themes/Clean/resources.qrc
@@ -1,5 +1,5 @@
<RCC>
- <qresource prefix="/">
+ <qresource prefix="/Themes/Clean">
<file>resources/SystemTrayIcon/informations.png</file>
</qresource>
</RCC>
diff --git a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/informations.png b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/informations.png
index e1eb797..5b7b255 100644
--- a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/informations.png
+++ b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/informations.png
Binary files differ
diff --git a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Caught_Unix.png b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Caught_Unix.png
index a81e70d..6f5d1cf 100644
--- a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Caught_Unix.png
+++ b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Caught_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Caught_Windows.png b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Caught_Windows.png
index 8072aea..5464856 100644
--- a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Caught_Windows.png
+++ b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Caught_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
index f40ea82..3961215 100644
--- a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
+++ b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
index 8d673e4..45d6315 100644
--- a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
+++ b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Uncaught_Unix.png b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Uncaught_Unix.png
index 9ce4779..ac4299a 100644
--- a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Uncaught_Unix.png
+++ b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Uncaught_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Uncaught_Windows.png b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Uncaught_Windows.png
index d0fca1b..6e6bae7 100644
--- a/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Uncaught_Windows.png
+++ b/plugins-alternative/Themes/Clean/resources/SystemTrayIcon/systray_Uncaught_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Clean/resources_unix.qrc b/plugins-alternative/Themes/Clean/resources_unix.qrc
index ae3894b..847cc1c 100644
--- a/plugins-alternative/Themes/Clean/resources_unix.qrc
+++ b/plugins-alternative/Themes/Clean/resources_unix.qrc
@@ -1,6 +1,6 @@
<RCC>
- <qresource prefix="/">
- <file>resources/SystemTrayIcon/systray_Caught_Unix.png</file>
+ <qresource prefix="/Themes/Clean">
+ <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>
diff --git a/plugins-alternative/Themes/Clean/resources_windows.qrc b/plugins-alternative/Themes/Clean/resources_windows.qrc
index 99829b3..7d8bbe1 100644
--- a/plugins-alternative/Themes/Clean/resources_windows.qrc
+++ b/plugins-alternative/Themes/Clean/resources_windows.qrc
@@ -1,5 +1,5 @@
<RCC>
- <qresource prefix="/">
+ <qresource prefix="/Themes/Clean">
<file>resources/SystemTrayIcon/systray_Caught_Windows.png</file>
<file>resources/SystemTrayIcon/systray_Semiuncaught_Windows.png</file>
<file>resources/SystemTrayIcon/systray_Uncaught_Windows.png</file>
diff --git a/plugins-alternative/Themes/Supercopier/DebugEngineMacro.h b/plugins-alternative/Themes/Supercopier/DebugEngineMacro.h
new file mode 100644
index 0000000..4582010
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/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-alternative/Themes/Supercopier/Environment.h b/plugins-alternative/Themes/Supercopier/Environment.h
new file mode 100644
index 0000000..265a5a6
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/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-alternative/Themes/Supercopier/Languages/ar/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/ar/translation.ts
new file mode 100644
index 0000000..78e326c
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/ar/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/de/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/de/translation.ts
new file mode 100644
index 0000000..c1177e9
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/de/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="de" sourcelanguage="en">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation>Kaufen Sie die Ultimate-Version um die Entwicklung zu unterstützen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation>Datei %1/%2, Größe:%3/%4</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation>Zu kopierende Dateien</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation>Zu verschiebende Dateien</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>Bei Fehler nicht</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation>Nie</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation>Immer</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation>Dateiname, 0KB</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation>Farbe auswählen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation>%1 %2 von %3</translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>Nicht schließen, wenn Fehler aufgetreten sind</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation>Niemals schließen</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation>Immer schließen</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation>Wählen Sie eine Farbe</translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation>Von:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation>Nach:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation>Am Ende des Transfers schließen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation>&amp;Mehr</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Pause</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation>Über&amp;springen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation>Abbrechen (&amp;C)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation>Dateiliste</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation>Ausgewählte Einträge löschen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation>Dateiliste exportieren</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation>Dateiliste importieren</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation>Vorherige</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation>Nächste</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation>Darstellungsoptionen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <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="283"/>
+ <source>Limit copy speed to:</source>
+ <translation>Begrenze Kopiergeschwindigkeit auf:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <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="401"/>
+ <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="427"/>
+ <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="453"/>
+ <source>Add file/folder</source>
+ <translation>Datei/Ordner hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation>In Dateiliste suchen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation>Fehlerprotokoll</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation>Fehler in Transferliste exportieren</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation>Quelle</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation>Ziel</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation>Datei hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation>Ordner hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation>Datei(en) verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation>Ordner verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation>Datei(en) kopieren</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation>Verzeichnis kopieren</translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation>Zweifachen Fortschritt anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation>Geschwindigkeitsbegrenzungs Schieberegler anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation>Benutzung</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <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="61"/>
+ <source>Minimize on close to systray</source>
+ <translation>Beim Schließen ins Systray minimieren</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation>Fenster am Ende des Vorgangs schließen</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation>Begrenze Übertragungsgeschwindigkeit auf</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation>Zum Bearbeiten der Farbe klicken</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation> KB/s</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation>Informationen</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation>Anzeige</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation>Geschwindigkeit als Fortschrittsbalken anzeigen</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation>Farbe des Fortschrittsbalken</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation>Fortschritt im Fenstertitel zeigen</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation>Fenster immer im Vordergrund</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/el/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/el/translation.ts
new file mode 100644
index 0000000..78e326c
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/el/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/en/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/en/translation.ts
new file mode 100644
index 0000000..9275b19
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/en/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/es/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/es/translation.ts
new file mode 100644
index 0000000..c407b34
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/es/translation.ts
@@ -0,0 +1,340 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="es" sourcelanguage="en">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <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="262"/>
+ <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="476"/>
+ <source>Copy list</source>
+ <translation>Lista de copia</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation>Lista de movimiento</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <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="900"/>
+ <source>Never close</source>
+ <translation>Nunca cierre</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation>Siempre cerrar</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation>Nombre de archivo, 0KB</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation>Seleccione un color</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>No cierre si se encuentran errores</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation>Nunca cierre</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation>Siempre cerrar</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation>Seleccione un color</translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation>De:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation>Para:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation>Cerca al final de las transferencias</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation>&amp;Más</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Pausa</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Omitir</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Cancelar</translation>
+ </message>
+ <message>
+ <source>Limit copy speed at:</source>
+ <translation type="obsolete">Limitar la velocidad de copia en:</translation>
+ </message>
+ <message>
+ <source>Close on transfer completion</source>
+ <translation type="obsolete">Cerca de finalización de transferencia</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation>Limitar la velocidad de copia en:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation>Lista de transferencia</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <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="375"/>
+ <source>Move up the selected items</source>
+ <translation>Mueva los elementos seleccionados</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation>Bajar los elementos seleccionados</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <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="453"/>
+ <source>Add file/folder</source>
+ <translation>Agregar archivo/carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation>Eliminar los elementos seleccionados</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation>Buscar</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation>Exportar la lista de transferencias</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation>Importe la lista de transferencias</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation>Anterior</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation>Próximo</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation>Error</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <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="719"/>
+ <source>Source</source>
+ <translation>Fuente</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation>Destino</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation>Interfaz</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation>Añadir archivo</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation>Añadir carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation>Mover archivo(s)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation>Mueva la carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation>Copia el archivo(s)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation>Copia la carpeta</translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation>Mostrar progresión dual</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation>Mostrar la velocidad como principales informaciones</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation>Uso</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <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="61"/>
+ <source>Minimize on close to systray</source>
+ <translation>Minimizar en cerca de la bandeja del sistema</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation>Al final de la copia</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation>Limitar la velocidad de copia de</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation>Haga clic para editar el color</translation>
+ </message>
+ <message>
+ <source>At the end of the copy: </source>
+ <translation type="obsolete">Al final de la copia: </translation>
+ </message>
+ <message>
+ <source>Limit copy speed at:</source>
+ <translation type="obsolete">Limitar la velocidad de copia en:</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation> KB/s</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation>Informations</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation>Visualización</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation>Velocidad con barra de progreso</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation>Progresión de color</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation>Mostrar progresión en el título</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation>Siempre visible</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/fr/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/fr/translation.ts
new file mode 100644
index 0000000..49112ee
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/fr/translation.ts
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr" sourcelanguage="en">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="+180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation>Achetez la version Ultimate pour financer le développement</translation>
+ </message>
+ <message>
+ <location line="+82"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation>Fichier %1/%2, taille: %3/%4</translation>
+ </message>
+ <message>
+ <location line="+214"/>
+ <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="+421"/>
+ <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="+183"/>
+ <location line="+12"/>
+ <location line="+12"/>
+ <source>Select a color</source>
+ <translation>Selectionner une coleur</translation>
+ </message>
+ <message>
+ <location line="+75"/>
+ <location line="+4"/>
+ <location line="+2"/>
+ <source>%1 %2% of %3</source>
+ <translation>%1 de %2% de %3</translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="+197"/>
+ <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="+187"/>
+ <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="+35"/>
+ <source>From:</source>
+ <translation>Depuis:</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>To:</source>
+ <translation>Vers:</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Close at the end of the transfers</source>
+ <translation>Fermer à la fin des transferts</translation>
+ </message>
+ <message>
+ <location line="+98"/>
+ <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="+14"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Passer</translation>
+ </message>
+ <message>
+ <location line="+11"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Annuler</translation>
+ </message>
+ <message>
+ <source>Limit copy speed at:</source>
+ <translation type="obsolete">Limiter la vitesse de copie à:</translation>
+ </message>
+ <message>
+ <source>Close on transfer completion</source>
+ <translation type="obsolete">Fermer à la fin des transferts</translation>
+ </message>
+ <message>
+ <location line="+15"/>
+ <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="+37"/>
+ <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="+230"/>
+ <source>Show dual progression</source>
+ <translation>Afficher une double progression</translation>
+ </message>
+ <message>
+ <location line="-58"/>
+ <source>Show speed as main information</source>
+ <translation>Afficher la vitesse comme information principale</translation>
+ </message>
+ <message>
+ <location line="-137"/>
+ <source>Use</source>
+ <translation>Utilisation</translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation>Déplier automatiquement les détails</translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Minimize on close to systray</source>
+ <translation>Minimiser à la fermeture dans le systray</translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>At the end of the copy</source>
+ <translation>À la fin de la copie</translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <location line="+24"/>
+ <source>Limit copy speed to</source>
+ <translation>Limiter la vitesse de copie à</translation>
+ </message>
+ <message>
+ <location line="+138"/>
+ <source>Click to edit the color</source>
+ <translation>Cliquer pour édité la couleur</translation>
+ </message>
+ <message>
+ <source>At the end of the copy: </source>
+ <translation type="obsolete">À la fin de la copie:</translation>
+ </message>
+ <message>
+ <source>Limit copy speed at:</source>
+ <translation type="obsolete">Limiter la vitesse de copie à:</translation>
+ </message>
+ <message>
+ <source>Limit copy speed to:</source>
+ <translation type="obsolete">Limiter la vitesse de copie à:</translation>
+ </message>
+ <message>
+ <location line="-128"/>
+ <source> KB/s</source>
+ <translation> Ko/s</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <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="-20"/>
+ <source>Show progression in the title</source>
+ <translation>Afficher la progression dans le titre</translation>
+ </message>
+ <message>
+ <location line="-169"/>
+ <source>Always on top</source>
+ <translation>Toujours au 1er plan</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/hi/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/hi/translation.ts
new file mode 100644
index 0000000..78e326c
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/hi/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/hu/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/hu/translation.ts
new file mode 100644
index 0000000..bc36d92
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/hu/translation.ts
@@ -0,0 +1,328 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="hu">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <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="262"/>
+ <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="476"/>
+ <source>Copy list</source>
+ <translation>Lista másolása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation>Lista mozgatása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <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="900"/>
+ <source>Never close</source>
+ <translation>Sose zárja be</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation>Mindig zárja be</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation>Fájlnév, 0KB</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation>Válassz egy színt</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <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="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation>Sose zárja be</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation>Mindig zárja be</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation>Válassz egy színt</translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation>Forrás:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation>Cél:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation>&amp;Több</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Szünet</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Kihagy</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Mégse</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation>Átviteli lista</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation>Előző</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation>Következő</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation>Kezelőfelület</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation>Kijelölések elemek mozgatása legfelülre</translation>
+ </message>
+ <message>
+ <source>Close on transfer completion</source>
+ <translation type="obsolete">Átvitel végeztével zárja be</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation>Másolási sebesség korlátozása:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation>Kijelölt elemek mozgatása fel</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation>Kijelölt elemek mozgatása le</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <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="453"/>
+ <source>Add file/folder</source>
+ <translation>Fájl/mappa hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation>Kijelölt elemek törlése</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation>Keresés</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation>Átviteli lista exportálása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation>Átviteli lista importálása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation>Hiba</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <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="719"/>
+ <source>Source</source>
+ <translation>Forrás</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation>Cél</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation>Fájl hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation>Mappa hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation>Fájl(ok) mozgatása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation>Mappa mozgatása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation>Fájl(ok) másolása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation>Mappa másolása</translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation>Páros folyamat mutatása</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation>Sebesség mutatása, mint fő információ</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation>Használ</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <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="61"/>
+ <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="71"/>
+ <source>At the end of the copy</source>
+ <translation>A másolás befejezésekor</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation>Másolási sebesség korlátozása</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation>Kattints a szín szerkesztéséhez</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation> KB/s</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation>Információk</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation>Megjelenítés</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation>Sebesség folyamatsávval</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation>Folyamat színe</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation>Folyamat mutatása a címsorban</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation>Mindig legfelül</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/id/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/id/translation.ts
new file mode 100644
index 0000000..78e326c
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/id/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/it/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/it/translation.ts
new file mode 100644
index 0000000..255c3b1
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/it/translation.ts
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="it" sourcelanguage="en">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation>File %1/%2, dimensione: %3/%4</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation>Lista della copia</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation>Lista dello spostamento</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <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="900"/>
+ <source>Never close</source>
+ <translation>Non chiudere mai</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation>Chiudere sempre</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation>Nome del file, 0KB</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation>Scegliere un colore</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation>Non chiudere se vengono rilevati errori</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation>Non chiudere mai</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation>Chiudere sempre</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation>Scegliere un colore</translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation>Da:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation>a:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished">Chiudi alla fine dei trasferimenti</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation>Altr&amp;o</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Pausa</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Salta</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Annulla</translation>
+ </message>
+ <message>
+ <source>Limit copy speed at:</source>
+ <translation type="obsolete">Ridurre la velocità di copia a:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation>Lista dei trasferimenti</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation>Sposta in cima gli elementi selezionati</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation>Sposta sopra gli elementi selezionati</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation>Sposta sotto gli elementi selezionati</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation>Sposta in coda gli elementi selezionati</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation>Aggiungi file/cartelle</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation>Elimina gli elementi selezionati</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation>Cerca</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation>Esporta la lista dei trasferimenti</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation>Importa la lista dei trasferimenti</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation>Precedente</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation>Successivo</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation>Interfaccia</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation>Aggiungi file</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation>Aggiungi cartella</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation>Sposta file</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation>Sposta la cartella</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation>Copia file</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation>Copia la cartella</translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation>Mostrare la doppia progressione</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation>Mostrare la velocità come principale informazione</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <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="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>At the end of the copy: </source>
+ <translation type="obsolete">Alla fine della copia: </translation>
+ </message>
+ <message>
+ <source>Limit copy speed at:</source>
+ <translation type="obsolete">Ridurre la velocità di copia a:</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation> KB/s</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation>Velocità nella barra di progresso</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation>Colore della progressione</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation>Mostrare la percentuale di progresso sul titolo</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation>Sempre in primo piano</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/ja/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/ja/translation.ts
new file mode 100644
index 0000000..6ba3c00
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/ja/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/ko/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/ko/translation.ts
new file mode 100644
index 0000000..4354bd2
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/ko/translation.ts
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ko_KR">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="+180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+82"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished">파일 %1/%2, 크기: %3/%4</translation>
+ </message>
+ <message>
+ <location line="+214"/>
+ <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="+421"/>
+ <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="+183"/>
+ <location line="+12"/>
+ <location line="+12"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+75"/>
+ <location line="+4"/>
+ <location line="+2"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="+197"/>
+ <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="+187"/>
+ <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="+35"/>
+ <source>From:</source>
+ <translation type="unfinished">원본:</translation>
+ </message>
+ <message>
+ <location line="+37"/>
+ <source>To:</source>
+ <translation type="unfinished">대상:</translation>
+ </message>
+ <message>
+ <location line="+53"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+98"/>
+ <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="+14"/>
+ <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>
+ <source>Limit copy speed at:</source>
+ <translation type="obsolete">복사 속도 제한:</translation>
+ </message>
+ <message>
+ <location line="+58"/>
+ <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="-66"/>
+ <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="+51"/>
+ <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="+230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-58"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished">메인 정보에 속도 표시</translation>
+ </message>
+ <message>
+ <location line="-137"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+6"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+20"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+26"/>
+ <location line="+24"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+138"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>At the end of the copy: </source>
+ <translation type="obsolete">복사 종료시:</translation>
+ </message>
+ <message>
+ <source>Limit copy speed at:</source>
+ <translation type="obsolete">복사 속도 제한:</translation>
+ </message>
+ <message>
+ <location line="-128"/>
+ <source> KB/s</source>
+ <translation type="unfinished"> KB/초</translation>
+ </message>
+ <message>
+ <location line="+35"/>
+ <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="-20"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="-169"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/nl/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/nl/translation.ts
new file mode 100644
index 0000000..78e326c
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/nl/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/no/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/no/translation.ts
new file mode 100644
index 0000000..78e326c
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/no/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/pl/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/pl/translation.ts
new file mode 100644
index 0000000..78e326c
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/pl/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/pt/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/pt/translation.ts
new file mode 100644
index 0000000..78e326c
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/pt/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/ru/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/ru/translation.ts
new file mode 100644
index 0000000..a5a373b
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/ru/translation.ts
@@ -0,0 +1,336 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ru" sourcelanguage="en">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation>Файл %1/%2, размер: %3/%4</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished">Копировать список</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished">Не закрывать, если найдены ошибки</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished">Никогда не закрывать</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished">Всегда закрывайте</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation>Имя файла, 0KB</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished">Не закрывать, если найдены ошибки</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished">Никогда не закрывать</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished">Всегда закрывайте</translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation>С:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation>к:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation>больше</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation>пауза</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation>пропускать</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation>отменить</translation>
+ </message>
+ <message>
+ <source>Limit copy speed at:</source>
+ <translation type="obsolete">Предельная скорость копирования по адресу:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation>предыдущий</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation>следующий</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation>интерфейс</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation>Добавить файл</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation>Добавить папку</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation>Перемещение файла(ов)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation>Перемещение папки</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation>Копировать файл (ы)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation>Копировать папку</translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished">Показать скорости в качестве основной информации</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>At the end of the copy: </source>
+ <translation type="obsolete">В конце копии: </translation>
+ </message>
+ <message>
+ <source>Limit copy speed at:</source>
+ <translation type="obsolete">Предельная скорость копирования по адресу:</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"> Кб/с</translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/th/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/th/translation.ts
new file mode 100644
index 0000000..78e326c
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/th/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/tr/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/tr/translation.ts
new file mode 100644
index 0000000..78e326c
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/tr/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/Languages/zh/translation.ts b/plugins-alternative/Themes/Supercopier/Languages/zh/translation.ts
new file mode 100644
index 0000000..6ba3c00
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Languages/zh/translation.ts
@@ -0,0 +1,324 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="180"/>
+ <source>Buy the Ultimate version to fund development</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="262"/>
+ <source>File %1/%2, size: %3/%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="476"/>
+ <source>Copy list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="478"/>
+ <source>Move list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="899"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="900"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="901"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="903"/>
+ <source>File Name, 0KB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1086"/>
+ <location filename="../../interface.cpp" line="1098"/>
+ <location filename="../../interface.cpp" line="1110"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="1185"/>
+ <location filename="../../interface.cpp" line="1189"/>
+ <location filename="../../interface.cpp" line="1191"/>
+ <source>%1 %2% of %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ThemesFactory</name>
+ <message>
+ <location filename="../../factory.cpp" line="197"/>
+ <source>Don&apos;t close if errors are found</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="198"/>
+ <source>Never close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="199"/>
+ <source>Always close</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../factory.cpp" line="386"/>
+ <location filename="../../factory.cpp" line="401"/>
+ <location filename="../../factory.cpp" line="416"/>
+ <source>Select a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="35"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="72"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="125"/>
+ <source>Close at the end of the transfers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="223"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="243"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="257"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="268"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="482"/>
+ <source>Delete the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="537"/>
+ <source>Export the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="563"/>
+ <source>Import the transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="618"/>
+ <source>Previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="625"/>
+ <source>Next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="738"/>
+ <source>Interface</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="349"/>
+ <source>Move the selected items to the top</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="283"/>
+ <source>Limit copy speed to:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="375"/>
+ <source>Move up the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="401"/>
+ <source>Move down the selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="427"/>
+ <source>Move the selected items to the bottom</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="453"/>
+ <source>Add file/folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="508"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="660"/>
+ <location filename="../../interface.ui" line="729"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="680"/>
+ <source>Export the errors into transfer list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="719"/>
+ <source>Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="724"/>
+ <source>Destination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="775"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="784"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="793"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="802"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="811"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="820"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>themesOptions</name>
+ <message>
+ <location filename="../../themesOptions.ui" line="230"/>
+ <source>Show dual progression</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="172"/>
+ <source>Show speed as main information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="35"/>
+ <source>Use</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="41"/>
+ <source>Start with the &quot;more button&quot; pushed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="61"/>
+ <source>Minimize on close to systray</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="71"/>
+ <source>At the end of the copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="97"/>
+ <location filename="../../themesOptions.ui" line="121"/>
+ <source>Limit copy speed to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="131"/>
+ <source> KB/s</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="166"/>
+ <source>Informations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="204"/>
+ <source>Display</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="210"/>
+ <source>Speed with progress bar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="240"/>
+ <source>Progression color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="259"/>
+ <source>Click to edit the color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="220"/>
+ <source>Show progression in the title</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../themesOptions.ui" line="51"/>
+ <source>Always on top</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Supercopier/StructEnumDefinition.h b/plugins-alternative/Themes/Supercopier/StructEnumDefinition.h
new file mode 100644
index 0000000..c1758f4
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/StructEnumDefinition.h
@@ -0,0 +1 @@
+#include "../../../StructEnumDefinition.h"
diff --git a/plugins-alternative/Themes/Supercopier/TransferModel.cpp b/plugins-alternative/Themes/Supercopier/TransferModel.cpp
new file mode 100644
index 0000000..6ce9b92
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/TransferModel.cpp
@@ -0,0 +1,569 @@
+#include "TransferModel.h"
+
+#define COLUMN_COUNT 3
+
+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;
+ facilityEngine=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 || row >= transfertItemList.count() || column < 0 || column >= COLUMN_COUNT)
+ return QVariant();
+
+ const TransfertItem& item = transfertItemList.at(row);
+ if(role==Qt::UserRole)
+ return item.id;
+ else if(role==Qt::DisplayRole)
+ {
+ switch(column)
+ {
+ case 0:
+ return item.source;
+ break;
+ case 1:
+ return item.size;
+ break;
+ case 2:
+ return item.destination;
+ break;
+ default:
+ return QVariant();
+ }
+ }
+ else if(role==Qt::DecorationRole)
+ {
+ switch(column)
+ {
+ case 0:
+ if(stopId.contains(item.id))
+ return *stop;
+ else if(startId.contains(item.id))
+ return *start;
+ else
+ return QVariant();
+ break;
+ default:
+ return QVariant();
+ }
+ }
+ else if(role==Qt::BackgroundRole)
+ {
+ if(!search_text.isEmpty() && (item.source.indexOf(search_text,0,Qt::CaseInsensitive)!=-1 || item.destination.indexOf(search_text,0,Qt::CaseInsensitive)!=-1))
+ {
+ 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.count() : 0;
+}
+
+quint64 TransferModel::firstId() const
+{
+ if(transfertItemList.count()>0)
+ return transfertItemList.first().id;
+ else
+ return 0;
+}
+
+QVariant TransferModel::headerData( int section, Qt::Orientation orientation, int role ) const
+{
+ if ( role == Qt::DisplayRole && orientation == Qt::Horizontal && section >= 0 && section < COLUMN_COUNT ) {
+ switch ( section ) {
+ case 0:
+ return facilityEngine->translateText(QStringLiteral("Source"));
+ case 1:
+ return facilityEngine->translateText(QStringLiteral("Size"));
+ case 2:
+ return facilityEngine->translateText(QStringLiteral("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 || row >= transfertItemList.count() || 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();
+ emit dataChanged(index,index);
+ return true;
+ break;
+ case 1:
+ item.size=value.toString();
+ emit dataChanged(index,index);
+ return true;
+ break;
+ case 2:
+ item.destination=value.toString();
+ emit dataChanged(index,index);
+ return true;
+ break;
+ default:
+ return false;
+ }
+ }
+ return false;
+}
+
+/*
+ Return[0]: totalFile
+ Return[1]: totalSize
+ Return[2]: currentFile
+ */
+QList<quint64> TransferModel::synchronizeItems(const QList<Ultracopier::ReturnActionOnCopyList>& returnActions)
+{
+ loop_size=returnActions.size();
+ index_for_loop=0;
+ quint64 totalFile=0,totalSize=0,currentFile=0;
+ totalFile=0;
+ totalSize=0;
+ currentFile=0;
+
+ emit layoutAboutToBeChanged();
+ 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>();
+ }
+
+ 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<<newItem;
+ totalFile++;
+ totalSize+=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));
+ break;
+ }
+ if(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));
+ 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));
+ break;
+ }
+ if(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));
+ 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));
+ break;
+ }
+ transfertItemList.move(action.userAction.position,action.userAction.moveAt);
+ //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));
+ break;
+ }
+ if(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));
+ break;
+ }
+ transfertItemList.removeAt(action.userAction.position);
+ currentFile++;
+ startId.remove(action.addAction.id);
+ stopId.remove(action.addAction.id);
+ internalRunningOperation.remove(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.contains(action.addAction.id))
+ startId << action.addAction.id;
+ stopId.remove(action.addAction.id);
+ if(internalRunningOperation.contains(action.addAction.id))
+ 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));
+ }
+ break;
+ case Ultracopier::PostOperation:
+ {
+ if(!stopId.contains(action.addAction.id))
+ stopId << action.addAction.id;
+ startId.remove(action.addAction.id);
+ }
+ break;
+ case Ultracopier::CustomOperation:
+ {
+ bool custom_with_progression=(action.addAction.size==1);
+ //without progression
+ if(custom_with_progression)
+ {
+ if(startId.remove(action.addAction.id))
+ if(!stopId.contains(action.addAction.id))
+ stopId << action.addAction.id;
+ }
+ //with progression
+ else
+ {
+ stopId.remove(action.addAction.id);
+ if(!startId.contains(action.addAction.id))
+ startId << action.addAction.id;
+ }
+ if(internalRunningOperation.contains(action.addAction.id))
+ {
+ 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 ( int i = 0; i < transfertItemList.count(); 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();
+ return QList<quint64>() << totalFile << totalSize << currentFile;
+}
+
+void TransferModel::setFacilityEngine(FacilityInterface *facilityEngine)
+{
+ this->facilityEngine=facilityEngine;
+}
+
+int TransferModel::search(const QString &text,bool searchNext)
+{
+ emit layoutAboutToBeChanged();
+ search_text=text;
+ emit layoutChanged();
+ if(transfertItemList.size()==0)
+ return -1;
+ if(text.isEmpty())
+ 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)
+ {
+ if(transfertItemList.at(currentIndexSearch).source.indexOf(search_text,0,Qt::CaseInsensitive)!=-1 || transfertItemList.at(currentIndexSearch).destination.indexOf(search_text,0,Qt::CaseInsensitive)!=-1)
+ {
+ 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 QString &text)
+{
+ emit layoutAboutToBeChanged();
+ search_text=text;
+ emit layoutChanged();
+ if(transfertItemList.size()==0)
+ return -1;
+ if(text.isEmpty())
+ 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)
+ {
+ if(transfertItemList.at(currentIndexSearch).source.indexOf(search_text,0,Qt::CaseInsensitive)!=-1 || transfertItemList.at(currentIndexSearch).destination.indexOf(search_text,0,Qt::CaseInsensitive)!=-1)
+ {
+ 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(
+ #ifndef ULTRACOPIER_PLUGIN_DEBUG
+ const
+ #endif
+ QList<Ultracopier::ProgressionItem> &progressionList)
+{
+ loop_size=progressionList.size();
+ index_for_loop=0;
+ while(index_for_loop<loop_size)
+ {
+ if(internalRunningOperation.contains(progressionList.at(index_for_loop).id))
+ {
+ 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.removeAt(index_for_loop);
+ index_for_loop--;
+ loop_size--;
+ #endif
+ }
+ index_for_loop++;
+ }
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(progressionList.size()>0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("progression remaning items"));
+ #endif
+}
+
+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.contains(*startId.constBegin()))
+ {
+ returnItem.haveItem=false;
+ return returnItem;
+ }
+ const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation.value(*startId.constBegin());
+ returnItem.from=itemTransfer.generalData.sourceFullPath;
+ returnItem.to=itemTransfer.generalData.destinationFullPath;
+ returnItem.current_file=itemTransfer.generalData.destinationFileName+QStringLiteral(", ")+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));
+ 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));
+ 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));
+ break;
+ }
+ }
+ else
+ {
+ returnItem.haveItem=stopId.size()>0;
+ if(returnItem.haveItem)
+ {
+ if(!internalRunningOperation.contains(*stopId.constBegin()))
+ {
+ returnItem.haveItem=false;
+ return returnItem;
+ }
+ const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation.value(*stopId.constBegin());
+ returnItem.from=itemTransfer.generalData.sourceFullPath;
+ returnItem.to=itemTransfer.generalData.destinationFullPath;
+ returnItem.current_file=itemTransfer.generalData.destinationFileName+QStringLiteral(", ")+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));
+ 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));
+ 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));
+ 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-alternative/Themes/Supercopier/TransferModel.h b/plugins-alternative/Themes/Supercopier/TransferModel.h
new file mode 100644
index 0000000..dd8b45a
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/TransferModel.h
@@ -0,0 +1,96 @@
+#ifndef TRANSFERMODEL_H
+#define TRANSFERMODEL_H
+
+#include <QAbstractTableModel>
+#include <QItemSelectionModel>
+#include <QModelIndex>
+#include <QVariant>
+#include <QList>
+#include <QSet>
+#include <QIcon>
+#include <QString>
+
+#include "StructEnumDefinition.h"
+#include "Environment.h"
+
+#include "../../../interface/FacilityInterface.h"
+
+/// \brief model to store the transfer list
+class TransferModel : public QAbstractTableModel
+{
+ Q_OBJECT
+public:
+ /// \brief the transfer item displayed
+ struct TransfertItem
+ {
+ quint64 id;
+ QString source;
+ QString size;
+ QString destination;
+ };
+ /// \brief the transfer item with progression
+ struct ItemOfCopyListWithMoreInformations
+ {
+ quint64 currentReadProgression,currentWriteProgression;
+ Ultracopier::ItemOfCopyList generalData;
+ Ultracopier::ActionTypeCopyList actionType;
+ bool custom_with_progression;
+ };
+ /// \brief returned first transfer item
+ struct currentTransfertItem
+ {
+ quint64 id;
+ bool haveItem;
+ QString from;
+ QString to;
+ QString 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);
+
+ QList<quint64> synchronizeItems(const QList<Ultracopier::ReturnActionOnCopyList>& returnActions);
+ void setFacilityEngine(FacilityInterface * facilityEngine);
+
+ int search(const QString &text,bool searchNext);
+ int searchPrev(const QString &text);
+
+ void setFileProgression(
+ #ifndef ULTRACOPIER_PLUGIN_DEBUG
+ const
+ #endif
+ QList<Ultracopier::ProgressionItem> &progressionList);
+
+ currentTransfertItem getCurrentTransfertItem() const;
+
+ quint64 firstId() const;
+protected:
+ QList<TransfertItem> transfertItemList;///< To have a transfer list for the user
+ QSet<quint64> startId,stopId;///< To show what is started, what is stopped
+ QHash<quint64,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;
+ QString search_text;
+ /// \brief index from start the search, decresed by remove before it
+ int currentIndexSearch;
+ bool haveSearchItem;
+ quint64 searchId;
+ static QIcon *start;
+ static QIcon *stop;
+signals:
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,QString fonction,QString text,QString file,int ligne) const;
+ #endif
+};
+
+#endif // TRANSFERMODEL_H
diff --git a/plugins-alternative/Themes/Supercopier/Variable.h b/plugins-alternative/Themes/Supercopier/Variable.h
new file mode 100644
index 0000000..963d0c8
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/Variable.h
@@ -0,0 +1,15 @@
+/** \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
+#define ULTRACOPIER_PLUGIN_DEBUG
+
+#endif // VARIABLE_H
+
+
+
diff --git a/plugins-alternative/Themes/Supercopier/documentation.dox b/plugins-alternative/Themes/Supercopier/documentation.dox
new file mode 100644
index 0000000..9357109
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/documentation.dox
@@ -0,0 +1,33 @@
+/* -*- 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 interface like Supercopier, see Tal Sella http://www.virtualplastic.net/scrow/ (icons) for the icons and icon license.\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 found link on <a href="http://ultracopier.first-world.info/">Ultracopier (Supercopier/Teracopy)</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
+ See Tal Sella http://www.virtualplastic.net/scrow/ (icons) for the icons and icon license.\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-alternative/Themes/Supercopier/factory.cpp b/plugins-alternative/Themes/Supercopier/factory.cpp
new file mode 100644
index 0000000..ce3fe15
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/factory.cpp
@@ -0,0 +1,441 @@
+/** \file factory.cpp
+\brief Define the factory core
+\author alpha_one_x86
+*/
+
+#include <QColorDialog>
+
+#include "factory.h"
+
+ThemesFactory::ThemesFactory()
+{
+ optionsEngine=NULL;
+ tempWidget=new QWidget();
+ ui=new Ui::themesOptions();
+ ui->setupUi(tempWidget);
+ ui->toolBox->setCurrentIndex(0);
+ currentSpeed = 0;
+ updateSpeed();
+ ui->labelDualProgression->hide();
+ ui->showDualProgression->hide();
+
+ qRegisterMetaType<QList<QPersistentModelIndex> >("QList<QPersistentModelIndex>");
+}
+
+ThemesFactory::~ThemesFactory()
+{
+}
+
+PluginInterface_Themes * ThemesFactory::getInstance()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start, currentSpeed: %1").arg(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()
+ );
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ connect(newInterface,&Themes::debugInformation,this,&PluginInterface_ThemesFactory::debugInformation);
+ #endif
+ connect(this,&ThemesFactory::reloadLanguage,newInterface,&Themes::newLanguageLoaded);
+ return newInterface;
+}
+
+void ThemesFactory::setResources(OptionInterface * optionsEngine,const QString &
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ writePath
+ #endif
+ ,const QString &
+ #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
+ QList<QPair<QString, QVariant> > KeysList;
+ KeysList.append(qMakePair(QStringLiteral("checkBoxShowSpeed"),QVariant(false)));
+ KeysList.append(qMakePair(QStringLiteral("moreButtonPushed"),QVariant(false)));
+ KeysList.append(qMakePair(QStringLiteral("speedWithProgressBar"),QVariant(false)));
+ KeysList.append(qMakePair(QStringLiteral("currentSpeed"),QVariant(0)));
+ KeysList.append(qMakePair(QStringLiteral("comboBox_copyEnd"),QVariant(0)));
+ KeysList.append(qMakePair(QStringLiteral("showDualProgression"),QVariant(false)));
+ KeysList.append(qMakePair(QStringLiteral("showProgressionInTheTitle"),QVariant(true)));
+ KeysList.append(qMakePair(QStringLiteral("progressColorWrite"),QVariant(QApplication::palette().color(QPalette::Highlight))));
+ KeysList.append(qMakePair(QStringLiteral("progressColorRead"),QVariant(QApplication::palette().color(QPalette::AlternateBase))));
+ KeysList.append(qMakePair(QStringLiteral("progressColorRemaining"),QVariant(QApplication::palette().color(QPalette::Base))));
+ KeysList.append(qMakePair(QStringLiteral("alwaysOnTop"),QVariant(false)));
+ KeysList.append(qMakePair(QStringLiteral("minimizeToSystray"),QVariant(false)));
+ optionsEngine->addOptionGroup(KeysList);
+ connect(optionsEngine,&OptionInterface::resetOptions,this,&ThemesFactory::resetOptions);
+ updateSpeed();
+ }
+ #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=optionsEngine->getOptionValue("currentSpeed").toUInt(&ok);
+ if(!ok)
+ currentSpeed=0;
+ ui->comboBox_copyEnd->setCurrentIndex(optionsEngine->getOptionValue(QStringLiteral("comboBox_copyEnd")).toUInt());
+ ui->speedWithProgressBar->setChecked(optionsEngine->getOptionValue(QStringLiteral("speedWithProgressBar")).toBool());
+ ui->checkBoxShowSpeed->setChecked(optionsEngine->getOptionValue(QStringLiteral("checkBoxShowSpeed")).toBool());
+ ui->checkBoxStartWithMoreButtonPushed->setChecked(optionsEngine->getOptionValue(QStringLiteral("moreButtonPushed")).toBool());
+ ui->showDualProgression->setChecked(optionsEngine->getOptionValue(QStringLiteral("showDualProgression")).toBool());
+ ui->showProgressionInTheTitle->setChecked(optionsEngine->getOptionValue(QStringLiteral("showProgressionInTheTitle")).toBool());
+ ui->alwaysOnTop->setChecked(optionsEngine->getOptionValue(QStringLiteral("alwaysOnTop")).toBool());
+ ui->minimizeToSystray->setChecked(optionsEngine->getOptionValue(QStringLiteral("minimizeToSystray")).toBool());
+
+ progressColorWrite=optionsEngine->getOptionValue(QStringLiteral("progressColorWrite")).value<QColor>();
+ progressColorRead=optionsEngine->getOptionValue(QStringLiteral("progressColorRead")).value<QColor>();
+ progressColorRemaining=optionsEngine->getOptionValue(QStringLiteral("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();
+
+ connect(ui->alwaysOnTop,&QCheckBox::stateChanged,this,&ThemesFactory::alwaysOnTop);
+ connect(ui->checkBoxShowSpeed,&QCheckBox::stateChanged,this,&ThemesFactory::checkBoxShowSpeed);
+ connect(ui->minimizeToSystray,&QCheckBox::stateChanged,this,&ThemesFactory::minimizeToSystray);
+ connect(ui->checkBox_limitSpeed,&QCheckBox::stateChanged,this,&ThemesFactory::uiUpdateSpeed);
+ connect(ui->SliderSpeed,&QAbstractSlider::valueChanged,this,&ThemesFactory::on_SliderSpeed_valueChanged);
+ connect(ui->limitSpeed,static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &ThemesFactory::uiUpdateSpeed);
+ connect(ui->checkBoxShowSpeed,&QAbstractButton::toggled,this,&ThemesFactory::checkBoxShowSpeedHaveChanged);
+ connect(ui->checkBoxStartWithMoreButtonPushed,&QAbstractButton::toggled,this,&ThemesFactory::checkBoxStartWithMoreButtonPushedHaveChanged);
+ connect(ui->speedWithProgressBar,&QAbstractButton::toggled,this,&ThemesFactory::speedWithProgressBar);
+ connect(ui->comboBox_copyEnd, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&ThemesFactory::comboBox_copyEnd);
+ connect(ui->showDualProgression,&QCheckBox::stateChanged,this,&ThemesFactory::showDualProgression);
+ connect(ui->showDualProgression,&QCheckBox::stateChanged,this,&ThemesFactory::updateProgressionColorBar);
+ connect(ui->showProgressionInTheTitle,&QCheckBox::stateChanged,this,&ThemesFactory::setShowProgressionInTheTitle);
+ connect(ui->progressColorWrite,&QAbstractButton::clicked,this,&ThemesFactory::progressColorWrite_clicked);
+ connect(ui->progressColorRead, &QAbstractButton::clicked,this,&ThemesFactory::progressColorRead_clicked);
+ connect(ui->progressColorRemaining,&QAbstractButton::clicked,this,&ThemesFactory::progressColorRemaining_clicked);
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"return the options");
+ return tempWidget;
+}
+
+QIcon ThemesFactory::getIcon(const QString &fileName) const
+{
+ return QIcon(QStringLiteral(":/Themes/Supercopier/resources/")+fileName);
+}
+
+void ThemesFactory::resetOptions()
+{
+ ui->checkBoxShowSpeed->setChecked(true);
+ ui->checkBoxStartWithMoreButtonPushed->setChecked(false);
+}
+
+void ThemesFactory::checkBoxShowSpeedHaveChanged(bool toggled)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"the checkbox have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue(QStringLiteral("checkBoxShowSpeed"),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(QStringLiteral("moreButtonPushed"),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(QStringLiteral("comboBox_copyEnd"),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(QStringLiteral("speedWithProgressBar"),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(QStringLiteral("minimizeToSystray"),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(QStringLiteral("alwaysOnTop"),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(QStringLiteral("showDualProgression"),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,QStringLiteral("value: %1").arg(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(QStringLiteral("currentSpeed"),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,QStringLiteral("emit newSpeedLimitation(%1)").arg(currentSpeed));
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue(QStringLiteral("currentSpeed"),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,QStringLiteral("checked, currentSpeed: %1").arg(currentSpeed));
+ ui->limitSpeed->setEnabled(false);
+ if(currentSpeed==0)
+ {
+ ui->SliderSpeed->setValue(0);
+ ui->label_SpeedMaxValue->setText(facilityEngine->translateText("Unlimited"));
+ }
+ else if(currentSpeed<=1024)
+ {
+ if(currentSpeed!=1024)
+ {
+ currentSpeed=1024;
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue(QStringLiteral("currentSpeed"),currentSpeed);
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+ }
+ ui->SliderSpeed->setValue(1);
+ ui->label_SpeedMaxValue->setText(facilityEngine->speedToString((double)(1024*1024)*1));
+ }
+ else if(currentSpeed<=1024*4)
+ {
+ if(currentSpeed!=1024*4)
+ {
+ currentSpeed=1024*4;
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue(QStringLiteral("currentSpeed"),currentSpeed);
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+ }
+ ui->SliderSpeed->setValue(2);
+ ui->label_SpeedMaxValue->setText(facilityEngine->speedToString((double)(1024*1024)*4));
+ }
+ else if(currentSpeed<=1024*16)
+ {
+ if(currentSpeed!=1024*16)
+ {
+ currentSpeed=1024*16;
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue(QStringLiteral("currentSpeed"),currentSpeed);
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+ }
+ ui->SliderSpeed->setValue(3);
+ ui->label_SpeedMaxValue->setText(facilityEngine->speedToString((double)(1024*1024)*16));
+ }
+ else if(currentSpeed<=1024*64)
+ {
+ if(currentSpeed!=1024*64)
+ {
+ currentSpeed=1024*64;
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue(QStringLiteral("currentSpeed"),currentSpeed);
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+ }
+ ui->SliderSpeed->setValue(4);
+ ui->label_SpeedMaxValue->setText(facilityEngine->speedToString((double)(1024*1024)*64));
+ }
+ else
+ {
+ if(currentSpeed!=1024*128)
+ {
+ currentSpeed=1024*128;
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue(QStringLiteral("currentSpeed"),currentSpeed);
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+ }
+ ui->SliderSpeed->setValue(5);
+ ui->label_SpeedMaxValue->setText(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(QStringLiteral("progressColorWrite"),progressColorWrite);
+ 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(QStringLiteral("progressColorRead"),progressColorRead);
+ 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(QStringLiteral("progressColorRemaining"),progressColorRemaining);
+ 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(QStringLiteral("showProgressionInTheTitle"),ui->showProgressionInTheTitle->isChecked());
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"internal error, crash prevented");
+}
diff --git a/plugins-alternative/Themes/Supercopier/factory.h b/plugins-alternative/Themes/Supercopier/factory.h
new file mode 100644
index 0000000..11607d2
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/factory.h
@@ -0,0 +1,83 @@
+/** \file factory.h
+\brief Define the factory, to create instance of the interface
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef FACTORY_H
+#define FACTORY_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 "Environment.h"
+
+namespace Ui {
+ class themesOptions;
+}
+
+/// \brief Define the factory, to create instance of the interface
+class ThemesFactory : public PluginInterface_ThemesFactory
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "first-world.info.ultracopier.PluginInterface.ThemesFactory/1.0.1.0" FILE "plugin.json")
+ Q_INTERFACES(PluginInterface_ThemesFactory)
+public:
+ ThemesFactory();
+ ~ThemesFactory();
+ /// \brief to return the instance of the copy engine
+ PluginInterface_Themes * getInstance();
+ /// \brief set the resources, to store options, to have facilityInterface
+ void setResources(OptionInterface * optionsEngine,const QString &
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ writePath
+ #endif
+ ,const QString &
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ pluginPath
+ #endif
+ ,FacilityInterface * facilityEngine,const bool &portableVersion);
+ /// \brief to get the default options widget
+ QWidget * options();
+ /// \brief to get a resource icon
+ QIcon getIcon(const QString &fileName) const;
+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();
+public slots:
+ void resetOptions();
+ void newLanguageLoaded();
+private:
+ OptionInterface * optionsEngine;
+ Ui::themesOptions *ui;
+ QWidget *tempWidget;
+ FacilityInterface * facilityEngine;
+ qint32 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-alternative/CopyEngine/Rsync/informations.xml b/plugins-alternative/Themes/Supercopier/informations.xml
index 709df28..25a77f9 100644
--- a/plugins-alternative/CopyEngine/Rsync/informations.xml
+++ b/plugins-alternative/Themes/Supercopier/informations.xml
@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<package>
- <title xml:lang="en"><![CDATA[Rsync copy engine]]></title><!-- english is required -->
- <title xml:lang="fr"><![CDATA[Moteur de copie rsync]]></title>
+ <title xml:lang="en"><![CDATA[Supercopier style for Ultracopier]]></title><!-- english is required -->
+ <title xml:lang="fr"><![CDATA[Style Supercopier pour Ultracopier]]></title>
<!-- What kind of plugin this is -->
- <category>CopyEngine</category>
+ <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). -->
@@ -14,14 +14,13 @@
<!-- the architecture code of this plugin, found PlatformMacro.h into ultracopier source -->
<architecture>windows-x86</architecture>
<!-- Detailed description -->
- <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>
+ <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>0.3.1.0</version>
+ <version>1.2.3.6</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>
+ <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. -->
<dependencies><![CDATA[
- >=ultracopier-0.3.1.0
]]></dependencies>
</package> \ No newline at end of file
diff --git a/plugins-alternative/Themes/Supercopier/interface.cpp b/plugins-alternative/Themes/Supercopier/interface.cpp
new file mode 100644
index 0000000..7af05e8
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/interface.cpp
@@ -0,0 +1,1332 @@
+/** \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 <cmath>
+#ifdef Q_OS_WIN
+ #ifndef NOMINMAX
+ #define NOMINMAX
+ #endif
+ #include <windows.h>
+#endif
+
+#include "interface.h"
+#include "ui_interface.h"
+#include "factory.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
+
+QIcon Themes::player_pause=QIcon(QStringLiteral(":/Themes/Supercopier/resources/player_pause.png"));
+QIcon Themes::player_play=QIcon(QStringLiteral(":/Themes/Supercopier/resources/player_play.png"));
+
+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) :
+ ui(new Ui::interfaceCopy()),
+ uiOptions(new Ui::themesOptions())
+{
+ this->facilityEngine=facilityEngine;
+ ui->setupUi(this);
+ uiOptions->setupUi(ui->optionsTab);
+
+ currentFile = 0;
+ totalFile = 0;
+ currentSize = 0;
+ totalSize = 0;
+ getOldProgression = 200;
+ haveError = false;
+ stat = status_never_started;
+ modeIsForced = false;
+ haveStarted = false;
+ storeIsInPause = false;
+ durationStarted = false;
+
+ 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->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->label_Slider_speed->setVisible(false);
+ uiOptions->SliderSpeed->setVisible(false);
+ uiOptions->label_SpeedMaxValue->setVisible(false);
+ uiOptions->comboBox_copyEnd->setCurrentIndex(comboBox_copyEnd);
+ speedWithProgressBar_toggled(speedWithProgressBar);
+ showDualProgression_toggled(showDualProgression);
+ 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);
+
+ transferModel.setFacilityEngine(facilityEngine);
+ ui->TransferList->setModel(&transferModel);
+ ui->tabWidget->setCurrentIndex(0);
+ uiOptions->toolBox->setCurrentIndex(0);
+ uiOptions->checkBoxShowSpeed->setChecked(checkBoxShowSpeed);
+ menu=new QMenu(this);
+ ui->add->setMenu(menu);
+
+ #ifdef Q_OS_WIN32
+ pixmapTop=QPixmap(":/Themes/Supercopier/resources/SystemTrayIcon/systray_Top_Progress_Windows.png");
+ pixmapBottom=QPixmap(":/Themes/Supercopier/resources/SystemTrayIcon/systray_Bottom_Progress_Windows.png");
+ #else
+ pixmapTop=QPixmap(":/Themes/Supercopier/resources/SystemTrayIcon/systray_Top_Progress_Unix.png");
+ pixmapBottom=QPixmap(":/Themes/Supercopier/resources/SystemTrayIcon/systray_Bottom_Progress_Unix.png");
+ #endif
+
+ //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);
+
+ isInPause(false);
+
+ 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);
+
+ //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);
+
+ //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);
+
+ shutdown=facilityEngine->haveFunctionality(QStringLiteral("shutdown"));
+ ui->shutdown->setVisible(shutdown);
+
+ 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*/
+ #ifdef ULTRACOPIER_VERSION_ULTIMATE
+ ui->ad_ultimate->hide();
+ #else
+ QString ultimateUrl=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")));
+ #endif
+
+ uiOptions->labelDualProgression->hide();
+ uiOptions->showDualProgression->hide();
+ ui->progressBar_all->setMaximumHeight(17);
+ ui->progressBar_file->setMaximumHeight(17);
+ ui->progressBarCurrentSpeed->setMaximumHeight(17);
+ ui->progressBar_all->setMinimumHeight(17);
+ ui->progressBar_file->setMinimumHeight(17);
+ ui->progressBarCurrentSpeed->setMinimumHeight(17);
+ ui->progressBar_all->setStyleSheet(QStringLiteral("QProgressBar{color:#fff;font-weight:bold;border:1px solid black;text-align:center;background-image:url(:/Themes/Supercopier/resources/progressbarright.png);}QProgressBar::chunk{background-image: url(:/Themes/Supercopier/resources/progressbarleft.png);}"));
+ ui->progressBar_file->setStyleSheet(QStringLiteral("QProgressBar{color:#fff;font-weight:bold;border:1px solid black;text-align:center;background-image:url(:/Themes/Supercopier/resources/progressbarright.png);}QProgressBar::chunk{background-image: url(:/Themes/Supercopier/resources/progressbarleft.png);}"));
+ ui->progressBarCurrentSpeed->setStyleSheet(QStringLiteral("QProgressBar{color:#fff;font-weight:bold;border:1px solid black;text-align:center;background-image:url(:/Themes/Supercopier/resources/progressbarright.png);}QProgressBar::chunk{background-image: url(:/Themes/Supercopier/resources/progressbarleft.png);}"));
+
+ show();
+
+ sysTrayIcon = new QSystemTrayIcon(this);
+ connect(sysTrayIcon,&QSystemTrayIcon::activated,this,&Themes::catchAction);
+}
+
+Themes::~Themes()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start"));
+ //disconnect(ui->actionAddFile);
+ //disconnect(ui->actionAddFolder);
+ 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,facilityEngine->translateText(QStringLiteral("Copy engine")));
+ }
+}
+
+void Themes::closeEvent(QCloseEvent *event)
+{
+ event->ignore();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start"));
+ this->hide();
+ if(uiOptions->minimizeToSystray->isChecked())
+ {
+ updateSysTrayIcon();
+ sysTrayIcon->show();
+ }
+ else
+ emit cancel();
+}
+
+void Themes::updateSysTrayIcon()
+{
+ if(totalSize==0)
+ {
+ sysTrayIcon->setIcon(dynaIcon(0,QStringLiteral("-")));
+ 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(facilityEngine->sizeToString(currentSize)).arg(facilityEngine->sizeToString(totalSize)));
+}
+
+void Themes::actionInProgess(const Ultracopier::EngineActionInProgress &action)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,QStringLiteral("start: ")+QString::number(action));
+ this->action=action;
+ switch(action)
+ {
+ case Ultracopier::Copying:
+ case Ultracopier::CopyingAndListing:
+ ui->progressBar_all->setMaximum(65535);
+ ui->progressBar_all->setMinimum(0);
+ break;
+ case Ultracopier::Listing:
+ ui->progressBar_all->setMaximum(0);
+ ui->progressBar_all->setMinimum(0);
+ break;
+ case Ultracopier::Idle:
+ ui->progressBar_all->setMaximum(65535);
+ ui->progressBar_all->setMinimum(0);
+ if(haveStarted && transferModel.rowCount()<=0)
+ {
+ if(shutdown && ui->shutdown->isChecked())
+ {
+ facilityEngine->callFunctionality(QStringLiteral("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(duration.elapsed()/1000);
+ ui->labelTimeRemaining->setText(QStringLiteral("<html><body style=\"white-space:nowrap;\">")+facilityEngine->translateText(QStringLiteral("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:
+ ui->pauseButton->setEnabled(true);
+ if(!durationStarted)
+ {
+ duration.start();
+ durationStarted=true;
+ }
+ haveStarted=true;
+ ui->cancelButton->setText(facilityEngine->translateText(QStringLiteral("Quit")));
+ updatePause();
+ break;
+ case Ultracopier::Listing:
+ ui->pauseButton->setEnabled(false);
+ haveStarted=true;//to close if skip at root folder collision
+ break;
+ case Ultracopier::Idle:
+ ui->pauseButton->setEnabled(false);
+ break;
+ default:
+ break;
+ }
+}
+
+void Themes::newFolderListing(const QString &path)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start"));
+ QString newPath=path;
+ if(newPath.size()>(64+3))
+ newPath=newPath.mid(0,32)+QStringLiteral("...")+newPath.mid(newPath.size()-32,32);
+ if(action==Ultracopier::Listing)
+ ui->from->setText(newPath);
+}
+
+void Themes::detectedSpeed(const quint64 &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,QStringLiteral("set max speed to: %1").arg(tempSpeed));
+ ui->progressBarCurrentSpeed->setMaximum(tempSpeed);
+ }
+ ui->progressBarCurrentSpeed->setValue(tempSpeed);
+ ui->progressBarCurrentSpeed->setFormat(facilityEngine->speedToString(speed));
+ }
+ else
+ ui->currentSpeed->setText(facilityEngine->speedToString(speed));
+}
+
+void Themes::remainingTime(const int &remainingSeconds)
+{
+ QString labelTimeRemaining(QStringLiteral("<html><body style=\"white-space:nowrap;\">")+facilityEngine->translateText(QStringLiteral("Time remaining:"))+QStringLiteral(" "));
+ 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("</body></html>");
+ ui->labelTimeRemaining->setText(labelTimeRemaining);
+}
+
+void Themes::errorDetected()
+{
+ haveError=true;
+}
+
+/// \brief new error
+void Themes::errorToRetry(const QString &source,const QString &destination,const QString &error)
+{
+ ui->errorList->addTopLevelItem(new QTreeWidgetItem(QStringList() << source << destination << 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 quint64 &current,const quint64 &total)
+{
+ currentSize=current;
+ totalSize=total;
+ if(total>0)
+ {
+ int newIndicator=((double)current/total)*65535;
+ ui->progressBar_all->setValue(newIndicator);
+ }
+ else
+ ui->progressBar_all->setValue(0);
+ if(current>0)
+ stat = status_started;
+ updateOverallInformation();
+ if(isHidden())
+ updateSysTrayIcon();
+}
+
+void Themes::setFileProgression(const QList<Ultracopier::ProgressionItem> &progressionList)
+{
+ QList<Ultracopier::ProgressionItem> progressionListBis=progressionList;
+ transferModel.setFileProgression(progressionListBis);
+ updateCurrentFileInformation();
+}
+
+//edit the transfer list
+/// \todo check and re-enable to selection
+void Themes::getActionOnList(const QList<Ultracopier::ReturnActionOnCopyList> &returnActions)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start, returnActions.size(): ")+QString::number(returnActions.size()));
+ QList<quint64> returnValue=transferModel.synchronizeItems(returnActions);
+ totalFile+=returnValue.first();
+ totalSize+=returnValue.at(1);
+ currentFile+=returnValue.last();
+ if(transferModel.rowCount()==0)
+ {
+ ui->skipButton->setEnabled(false);
+ ui->progressBar_all->setValue(65535);
+ ui->progressBar_file->setValue(65535);
+ currentSize=totalSize;
+ if(isHidden())
+ updateSysTrayIcon();
+ }
+ else
+ ui->skipButton->setEnabled(true);
+ updateOverallInformation();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("transferModel.rowCount(): ")+QString::number(transferModel.rowCount()));
+}
+
+void Themes::setCopyType(const Ultracopier::CopyType &type)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start"));
+ this->type=type;
+ updateModeAndType();
+}
+
+void Themes::forceCopyMode(const Ultracopier::CopyMode &mode)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("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,QStringLiteral("start"));
+// ui->moreButton->toggle();
+}
+
+void Themes::isInPause(const bool &isInPause)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("isInPause: ")+QString::number(isInPause));
+ //resume in auto the pause
+ storeIsInPause=isInPause;
+ updatePause();
+}
+
+void Themes::updatePause()
+{
+ if(storeIsInPause)
+ {
+ ui->pauseButton->setIcon(player_play);
+ if(stat == status_started)
+ ui->pauseButton->setText(facilityEngine->translateText(QStringLiteral("Resume")));
+ else
+ ui->pauseButton->setText(facilityEngine->translateText(QStringLiteral("Start")));
+ }
+ else
+ {
+ ui->pauseButton->setIcon(player_pause);
+ ui->pauseButton->setText(facilityEngine->translateText(QStringLiteral("Pause")));
+ }
+}
+
+void Themes::updateCurrentFileInformation()
+{
+ TransferModel::currentTransfertItem transfertItem=transferModel.getCurrentTransfertItem();
+ if(transfertItem.haveItem)
+ {
+ QString newPath=transfertItem.from;
+ if(newPath.size()>(64+3))
+ newPath=newPath.mid(0,32)+QStringLiteral("...")+newPath.mid(newPath.size()-32,32);
+ ui->from->setText(newPath);
+ newPath=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(transfertItem.current_file);
+ if(transfertItem.progressBar_read!=-1)
+ {
+ ui->progressBar_file->setRange(0,65535);
+ if(uiOptions->showDualProgression->isChecked())
+ {
+ 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())
+ );
+ ui->progressBar_file->setValue(transfertItem.progressBar_write);
+ }
+ else
+ ui->progressBar_file->setValue((transfertItem.progressBar_read+transfertItem.progressBar_write)/2);
+ }
+ 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)
+ ui->progressBar_file->setValue(65535);
+ else if(!haveStarted)
+ ui->progressBar_file->setValue(0);
+ }
+}
+
+
+void Themes::on_putOnTop_clicked()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start"));
+ selectedItems=selectionModel->selectedRows();
+ QList<int> ids;
+ int index=0;
+ const int &loop_size=selectedItems.size();
+ while(index<loop_size)
+ {
+ ids << 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,QStringLiteral("start"));
+ selectedItems=selectionModel->selectedRows();
+ QList<int> ids;
+ int index=0;
+ const int &loop_size=selectedItems.size();
+ while(index<loop_size)
+ {
+ ids << 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,QStringLiteral("start"));
+ selectedItems=selectionModel->selectedRows();
+ QList<int> ids;
+ int index=0;
+ const int &loop_size=selectedItems.size();
+ while(index<loop_size)
+ {
+ ids << 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,QStringLiteral("start"));
+ selectedItems=selectionModel->selectedRows();
+ QList<int> ids;
+ int index=0;
+ const int &loop_size=selectedItems.size();
+ while(index<loop_size)
+ {
+ ids << 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,QStringLiteral("start"));
+ selectedItems=selectionModel->selectedRows();
+ QList<int> ids;
+ int index=0;
+ const int &loop_size=selectedItems.size();
+ while(index<loop_size)
+ {
+ ids << 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,QStringLiteral("start"));
+ this->hide();
+ emit cancel();
+}
+
+
+void Themes::speedWithProgressBar_toggled(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start"));
+ ui->progressBarCurrentSpeed->setVisible(checked);
+ ui->currentSpeed->setVisible(!checked);
+}
+
+void Themes::showDualProgression_toggled(bool checked)
+{
+ Q_UNUSED(checked);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start"));
+ updateProgressionColorBar();
+}
+
+void Themes::checkBoxShowSpeed_toggled(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("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,QStringLiteral("value: %1").arg(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,QStringLiteral("emit newSpeedLimitation(%1)").arg(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,QStringLiteral("checked, currentSpeed: %1").arg(currentSpeed));
+ uiOptions->limitSpeed->setEnabled(false);
+ if(currentSpeed==0)
+ {
+ ui->SliderSpeed->setValue(0);
+ ui->label_SpeedMaxValue->setText(facilityEngine->translateText(QStringLiteral("Unlimited")));
+ }
+ else if(currentSpeed<=1024)
+ {
+ if(currentSpeed!=1024)
+ {
+ currentSpeed=1024;
+ emit newSpeedLimitation(currentSpeed);
+ }
+ ui->SliderSpeed->setValue(1);
+ ui->label_SpeedMaxValue->setText(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(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(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(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(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,QStringLiteral("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,QStringLiteral("skip at running: %1").arg(transfertItem.id));
+ emit skip(transfertItem.id);
+ }
+ else
+ {
+ if(transferModel.rowCount()>1)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("skip at idle: %1").arg(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,QStringLiteral("start"));
+ emit userAddFile(mode);
+}
+
+void Themes::forcedModeAddFolder()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start"));
+ emit userAddFolder(mode);
+}
+
+void Themes::forcedModeAddFileToCopy()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start"));
+ emit userAddFile(Ultracopier::Copy);
+}
+
+void Themes::forcedModeAddFolderToCopy()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start"));
+ emit userAddFolder(Ultracopier::Copy);
+}
+
+void Themes::forcedModeAddFileToMove()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start"));
+ emit userAddFile(Ultracopier::Move);
+}
+
+void Themes::forcedModeAddFolderToMove()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("start"));
+ emit userAddFolder(Ultracopier::Move);
+}
+
+void Themes::newLanguageLoaded()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("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,facilityEngine->translateText(QStringLiteral("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(),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());
+ 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)
+{
+ if(checked)
+ this->setMaximumHeight(16777215);
+ else
+ this->setMaximumHeight(130);
+ // usefull under windows
+ this->updateGeometry();
+ this->update();
+ this->adjustSize();
+}
+
+/* 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,QStringLiteral("start"));
+ const QMimeData* mimeData = event->mimeData();
+ if(mimeData->hasUrls())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("hasUrls"));
+ emit urlDropped(mimeData->urls());
+ event->acceptProposedAction();
+ }
+}
+
+void Themes::dragEnterEvent(QDragEnterEvent* event)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("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,QStringLiteral("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,QStringLiteral("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(): "+QString::number(uiOptions->alwaysOnTop->isChecked())+", flags: "+QString::number(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(!uiOptions->showDualProgression->isChecked())
+ {
+ /*ui->progressBar_all->setStyleSheet("");
+ ui->progressBar_file->setStyleSheet("");
+ ui->progressBarCurrentSpeed->setStyleSheet("");*/
+ }
+ 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();
+}
+
+void Themes::updateTitle()
+{
+ if(uiOptions->showProgressionInTheTitle->isChecked() && totalSize>0)
+ {
+ if(!modeIsForced)
+ this->setWindowTitle(tr("%1 %2% of %3").arg(facilityEngine->translateText("Transfer")).arg((currentSize*100)/totalSize).arg(facilityEngine->sizeToString(totalSize))+QStringLiteral(" - ")+facilityEngine->softwareName());
+ else
+ {
+ if(mode==Ultracopier::Copy)
+ this->setWindowTitle(tr("%1 %2% of %3").arg(facilityEngine->translateText("Copy")).arg((currentSize*100)/totalSize).arg(facilityEngine->sizeToString(totalSize))+QStringLiteral(" - ")+facilityEngine->softwareName());
+ else
+ this->setWindowTitle(tr("%1 %2% of %3").arg(facilityEngine->translateText("Move")).arg((currentSize*100)/totalSize).arg(facilityEngine->sizeToString(totalSize))+QStringLiteral(" - ")+facilityEngine->softwareName());
+ }
+ }
+ else
+ {
+ if(!modeIsForced)
+ this->setWindowTitle(QStringLiteral("%1").arg(facilityEngine->translateText("Transfer"))+QStringLiteral(" - ")+facilityEngine->softwareName());
+ else
+ {
+ if(mode==Ultracopier::Copy)
+ this->setWindowTitle(QStringLiteral("%1").arg(facilityEngine->translateText("Copy"))+QStringLiteral(" - ")+facilityEngine->softwareName());
+ else
+ this->setWindowTitle(QStringLiteral("%1").arg(facilityEngine->translateText("Move"))+QStringLiteral(" - ")+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,QString 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.isEmpty())
+ {
+ if(percent!=100)
+ text=QString::number(percent);
+ else
+ {
+ text=QStringLiteral(":)");
+ #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,text);
+ painter.setPen(QPen(Qt::white));
+ painter.drawText(2+textxOffset,12+textyOffset,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,QStringLiteral("reason: %1").arg(reason));
+}
+
+void Themes::on_exportErrorToTransferList_clicked()
+{
+ emit exportErrorIntoTransferList();
+}
diff --git a/plugins-alternative/Themes/Supercopier/interface.h b/plugins-alternative/Themes/Supercopier/interface.h
new file mode 100644
index 0000000..6929f07
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/interface.h
@@ -0,0 +1,221 @@
+/** \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>
+
+#include "../../../interface/PluginInterface_Themes.h"
+
+#include "ui_interface.h"
+#include "ui_themesOptions.h"
+#include "Environment.h"
+#include "TransferModel.h"
+
+// for windows progress bar
+#ifndef __GNUC__
+#include <shobjidl.h>
+#endif
+
+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);
+ ~Themes();
+ //send information about the copy
+ /// \brief to set the action in progress
+ void actionInProgess(const Ultracopier::EngineActionInProgress &);
+ /// \brief the new folder is listing
+ void newFolderListing(const QString &path);
+ /** \brief show the detected speed
+ * in byte per seconds */
+ void detectedSpeed(const quint64 &speed);
+ /** \brief show the remaining time
+ * time in seconds */
+ void remainingTime(const int &remainingSeconds);
+ /// \brief set the current collision action
+ void newCollisionAction(const QString &action);
+ /// \brief set the current error action
+ void newErrorAction(const QString &action);
+ /// \brief set one error is detected
+ void errorDetected();
+ /// \brief new error
+ void errorToRetry(const QString &source,const QString &destination,const QString &error);
+ /** \brief support speed limitation */
+ void setSupportSpeedLimitation(const bool &supportSpeedLimitationBool);
+ //get information about the copy
+ /// \brief show the general progression
+ void setGeneralProgression(const quint64 &current,const quint64 &total);
+ /// \brief show the file progression
+ void setFileProgression(const QList<Ultracopier::ProgressionItem> &progressionList);
+ /// \brief set the copyType -> file or folder
+ void setCopyType(const Ultracopier::CopyType &);
+ /// \brief set the copyMove -> copy or move, to force in copy or move, else support both
+ void forceCopyMode(const Ultracopier::CopyMode &);
+ /// \brief set if transfer list is exportable/importable
+ void setTransferListOperation(const Ultracopier::TransferListOperation &transferListOperation);
+ //edit the transfer list
+ /// \brief get action on the transfer list (add/move/remove)
+ void getActionOnList(const QList<Ultracopier::ReturnActionOnCopyList> &returnActions);
+ /** \brief set if the order is external (like file manager copy)
+ * to notify the interface, which can hide add folder/filer button */
+ void haveExternalOrder();
+ /// \brief set if is in pause
+ void isInPause(const bool &);
+ /// \brief get the widget for the copy engine
+ QWidget * getOptionsEngineWidget();
+ /// \brief to set if the copy engine is found
+ void getOptionsEngineEnabled(const bool &isEnabled);
+ enum status{status_never_started,status_started,status_stopped};
+ status stat;
+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:
+ QTime duration;
+ bool durationStarted;
+ QPixmap pixmapTop,pixmapBottom;
+ QColor progressColorWrite,progressColorRead,progressColorRemaining;
+ Ui::interfaceCopy *ui;
+ Ui::themesOptions *uiOptions;
+ quint64 currentFile;
+ quint64 totalFile;
+ quint64 currentSize;
+ quint64 totalSize;
+ quint8 getOldProgression;
+ QSystemTrayIcon *sysTrayIcon;
+ void updateOverallInformation();
+ void updateCurrentFileInformation();
+ QMenu *menu;
+ Ultracopier::EngineActionInProgress action;
+ void closeEvent(QCloseEvent *event);
+ qint32 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;
+
+ static QIcon player_play,player_pause;
+
+ /** \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);
+ /** \brief accept all event to allow the drag and drop
+ \see dropEvent() */
+ void dragEnterEvent(QDragEnterEvent* event);
+ /** \brief accept all event to allow the drag and drop
+ \see dropEvent() */
+ void dragMoveEvent(QDragMoveEvent* event);
+ /** \brief accept all event to allow the drag and drop
+ \see dropEvent() */
+ void dragLeaveEvent(QDragLeaveEvent* event);
+ //have functionality
+ bool shutdown;
+ void updatePause();
+ QIcon dynaIcon(int percent,QString text="") const;
+ void updateSysTrayIcon();
+signals:
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,const QString &fonction,const QString &text,const QString &file,const int &ligne) const;
+};
+
+#endif // INTERFACE_H
diff --git a/plugins-alternative/Themes/Supercopier/interface.pro b/plugins-alternative/Themes/Supercopier/interface.pro
new file mode 100644
index 0000000..809a84c
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/interface.pro
@@ -0,0 +1,59 @@
+CONFIG += c++11
+QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
+mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
+
+QT += widgets
+TEMPLATE = lib
+CONFIG += plugin
+HEADERS = interface.h \
+ StructEnumDefinition.h \
+ factory.h \
+ DebugEngineMacro.h \
+ Environment.h \
+ Variable.h \
+ ../../../interface/PluginInterface_Themes.h \
+ ../../../interface/FacilityInterface.h \
+ ../../../interface/OptionInterface.h \
+ TransferModel.h
+SOURCES = interface.cpp \
+ factory.cpp \
+ TransferModel.cpp
+TARGET = $$qtLibraryTarget(interface)
+TRANSLATIONS += Languages/ar/translation.ts \
+ Languages/de/translation.ts \
+ Languages/el/translation.ts \
+ Languages/en/translation.ts \
+ Languages/es/translation.ts \
+ Languages/fr/translation.ts \
+ Languages/hi/translation.ts \
+ Languages/hu/translation.ts \
+ Languages/id/translation.ts \
+ Languages/it/translation.ts \
+ Languages/ja/translation.ts \
+ Languages/ko/translation.ts \
+ Languages/nl/translation.ts \
+ Languages/no/translation.ts \
+ Languages/pl/translation.ts \
+ Languages/pt/translation.ts \
+ Languages/ru/translation.ts \
+ Languages/th/translation.ts \
+ Languages/tr/translation.ts \
+ Languages/zh/translation.ts
+
+win32 {
+ RESOURCES +=
+}
+!win32 {
+ RESOURCES +=
+}
+
+!CONFIG(static) {
+RESOURCES += \
+ interfaceResources.qrc \
+ interfaceResources_unix.qrc \
+ interfaceResources_windows.qrc
+}
+
+FORMS += \
+ interface.ui \
+ themesOptions.ui
diff --git a/plugins-alternative/Themes/Supercopier/interface.ui b/plugins-alternative/Themes/Supercopier/interface.ui
new file mode 100644
index 0000000..e5b84a5
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/interface.ui
@@ -0,0 +1,845 @@
+<?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>508</width>
+ <height>448</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string notr="true">Supercopier</string>
+ </property>
+ <property name="windowIcon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Supercopier/resources/main.png</normaloff>:/Themes/Supercopier/resources/main.png</iconset>
+ </property>
+ <layout class="QVBoxLayout">
+ <property name="spacing">
+ <number>2</number>
+ </property>
+ <property name="margin">
+ <number>1</number>
+ </property>
+ <item>
+ <layout class="QHBoxLayout">
+ <property name="spacing">
+ <number>2</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="from_label">
+ <property name="text">
+ <string>From:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="from">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::PlainText</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="ad_ultimate">
+ <property name="openExternalLinks">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout">
+ <property name="spacing">
+ <number>5</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="to_label">
+ <property name="text">
+ <string>To:</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="to">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::PlainText</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
+ <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>
+ <item>
+ <widget class="QLabel" name="labelTimeRemaining">
+ <property name="textFormat">
+ <enum>Qt::RichText</enum>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="shutdown">
+ <property name="maximumSize">
+ <size>
+ <width>20</width>
+ <height>20</height>
+ </size>
+ </property>
+ <property name="toolTip">
+ <string>Close at the end of the transfers</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Supercopier/resources/SystemTrayIcon/exit.png</normaloff>:/Themes/Supercopier/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="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>
+ <widget class="QLabel" name="current_file">
+ <property name="text">
+ <string notr="true">File Name, 0KB</string>
+ </property>
+ <property name="textFormat">
+ <enum>Qt::PlainText</enum>
+ </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">
+ <property name="spacing">
+ <number>4</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="currentSpeed">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>60</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="text">
+ <string notr="true">0KB/sec</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBarCurrentSpeed">
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>16</height>
+ </size>
+ </property>
+ <property name="maximum">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>0</number>
+ </property>
+ <property name="format">
+ <string notr="true">0KB/sec</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="moreButton">
+ <property name="text">
+ <string>&amp;More</string>
+ </property>
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Supercopier/resources/moveDown.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/player_pause.png</normaloff>:/Themes/Supercopier/resources/player_pause.png</iconset>
+ </property>
+ </widget>
+ </item>
+ <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/Supercopier/resources/player_end.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/cancel.png</normaloff>:/Themes/Supercopier/resources/cancel.png</iconset>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </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/Supercopier/resources/putOnTop.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/moveUp.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/moveDown.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/putOnBottom.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/add.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/remove.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/search.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/export-transfer-list.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/import-transfer-list.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/remove.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/export-transfer-list.png</normaloff>:/Themes/Supercopier/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="margin">
+ <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>492</width>
+ <height>243</height>
+ </rect>
+ </property>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </widget>
+ </item>
+ </layout>
+ <action name="actionAddFile">
+ <property name="icon">
+ <iconset resource="interfaceResources.qrc">
+ <normaloff>:/Themes/Supercopier/resources/add.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/add.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/add.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/add.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/add.png</normaloff>:/Themes/Supercopier/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/Supercopier/resources/add.png</normaloff>:/Themes/Supercopier/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-alternative/Themes/Supercopier/interfaceResources.qrc b/plugins-alternative/Themes/Supercopier/interfaceResources.qrc
new file mode 100644
index 0000000..d8990aa
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/interfaceResources.qrc
@@ -0,0 +1,24 @@
+<RCC>
+ <qresource prefix="/Themes/Supercopier">
+ <file>resources/add.png</file>
+ <file>resources/cancel.png</file>
+ <file>resources/main.png</file>
+ <file>resources/moveDown.png</file>
+ <file>resources/moveUp.png</file>
+ <file>resources/player_end.png</file>
+ <file>resources/player_pause.png</file>
+ <file>resources/player_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/progressbarleft.png</file>
+ <file>resources/progressbarright.png</file>
+ </qresource>
+</RCC>
diff --git a/plugins-alternative/Themes/Supercopier/interfaceResources_unix.qrc b/plugins-alternative/Themes/Supercopier/interfaceResources_unix.qrc
new file mode 100644
index 0000000..52bc325
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/interfaceResources_unix.qrc
@@ -0,0 +1,9 @@
+<RCC>
+ <qresource prefix="/Themes/Supercopier">
+ <file>resources/SystemTrayIcon/systray_Caught_Unix.png</file>
+ <file>resources/SystemTrayIcon/systray_Semiuncaught_Unix.png</file>
+ <file>resources/SystemTrayIcon/systray_Uncaught_Unix.png</file>
+ <file>resources/SystemTrayIcon/systray_Top_Progress_Unix.png</file>
+ <file>resources/SystemTrayIcon/systray_Bottom_Progress_Unix.png</file>
+ </qresource>
+</RCC>
diff --git a/plugins-alternative/Themes/Supercopier/interfaceResources_windows.qrc b/plugins-alternative/Themes/Supercopier/interfaceResources_windows.qrc
new file mode 100644
index 0000000..aed7063
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/interfaceResources_windows.qrc
@@ -0,0 +1,9 @@
+<RCC>
+ <qresource prefix="/Themes/Supercopier">
+ <file>resources/SystemTrayIcon/systray_Caught_Windows.png</file>
+ <file>resources/SystemTrayIcon/systray_Semiuncaught_Windows.png</file>
+ <file>resources/SystemTrayIcon/systray_Uncaught_Windows.png</file>
+ <file>resources/SystemTrayIcon/systray_Top_Progress_Windows.png</file>
+ <file>resources/SystemTrayIcon/systray_Bottom_Progress_Windows.png</file>
+ </qresource>
+</RCC>
diff --git a/plugins-alternative/Themes/Supercopier/plugin.json b/plugins-alternative/Themes/Supercopier/plugin.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/plugin.json
@@ -0,0 +1 @@
+{} \ No newline at end of file
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/add.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/add.png
new file mode 100644
index 0000000..d41fce6
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/add.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/exit.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/exit.png
new file mode 100644
index 0000000..9599bba
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/exit.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/informations.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/informations.png
new file mode 100644
index 0000000..86c9ba6
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/informations.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/options.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/options.png
new file mode 100644
index 0000000..cf699d5
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/options.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Bottom_Progress_Unix.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Bottom_Progress_Unix.png
new file mode 100644
index 0000000..543aaf1
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Bottom_Progress_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Bottom_Progress_Windows.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Bottom_Progress_Windows.png
new file mode 100644
index 0000000..ff110d9
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Bottom_Progress_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Unix.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Unix.png
new file mode 100644
index 0000000..be2ba20
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Windows.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Windows.png
new file mode 100644
index 0000000..9c597af
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
new file mode 100644
index 0000000..be2ba20
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
new file mode 100644
index 0000000..9c597af
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Top_Progress_Unix.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Top_Progress_Unix.png
new file mode 100644
index 0000000..1d93cb1
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Top_Progress_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Top_Progress_Windows.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Top_Progress_Windows.png
new file mode 100644
index 0000000..2074ee8
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Top_Progress_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Unix.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Unix.png
new file mode 100644
index 0000000..4da8cc0
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Windows.png b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Windows.png
new file mode 100644
index 0000000..8bfbcf9
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/add.png b/plugins-alternative/Themes/Supercopier/resources/add.png
new file mode 100644
index 0000000..af8a401
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/add.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/cancel.png b/plugins-alternative/Themes/Supercopier/resources/cancel.png
new file mode 100644
index 0000000..1e7579c
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/cancel.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/export-transfer-list.png b/plugins-alternative/Themes/Supercopier/resources/export-transfer-list.png
new file mode 100644
index 0000000..2bcc455
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/export-transfer-list.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/import-transfer-list.png b/plugins-alternative/Themes/Supercopier/resources/import-transfer-list.png
new file mode 100644
index 0000000..d208342
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/import-transfer-list.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/main.png b/plugins-alternative/Themes/Supercopier/resources/main.png
new file mode 100644
index 0000000..9bec399
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/main.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/moveDown.png b/plugins-alternative/Themes/Supercopier/resources/moveDown.png
new file mode 100644
index 0000000..7f4ff27
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/moveDown.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/moveUp.png b/plugins-alternative/Themes/Supercopier/resources/moveUp.png
new file mode 100644
index 0000000..9397b76
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/moveUp.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/player_end.png b/plugins-alternative/Themes/Supercopier/resources/player_end.png
new file mode 100644
index 0000000..9730302
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/player_end.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/player_pause.png b/plugins-alternative/Themes/Supercopier/resources/player_pause.png
new file mode 100644
index 0000000..429ae43
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/player_pause.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/player_play.png b/plugins-alternative/Themes/Supercopier/resources/player_play.png
new file mode 100644
index 0000000..a28ac73
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/player_play.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/progressbarleft.png b/plugins-alternative/Themes/Supercopier/resources/progressbarleft.png
new file mode 100644
index 0000000..bbee9c8
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/progressbarleft.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/progressbarright.png b/plugins-alternative/Themes/Supercopier/resources/progressbarright.png
new file mode 100644
index 0000000..93e5781
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/progressbarright.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/putOnBottom.png b/plugins-alternative/Themes/Supercopier/resources/putOnBottom.png
new file mode 100644
index 0000000..9ac517c
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/putOnBottom.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/putOnTop.png b/plugins-alternative/Themes/Supercopier/resources/putOnTop.png
new file mode 100644
index 0000000..5682829
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/putOnTop.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/remove.png b/plugins-alternative/Themes/Supercopier/resources/remove.png
new file mode 100644
index 0000000..3a2a9f1
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/remove.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/resources/search.png b/plugins-alternative/Themes/Supercopier/resources/search.png
new file mode 100644
index 0000000..567f498
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/resources/search.png
Binary files differ
diff --git a/plugins-alternative/Themes/Supercopier/themesOptions.ui b/plugins-alternative/Themes/Supercopier/themesOptions.ui
new file mode 100644
index 0000000..46c7f97
--- /dev/null
+++ b/plugins-alternative/Themes/Supercopier/themesOptions.ui
@@ -0,0 +1,384 @@
+<?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>540</width>
+ <height>325</height>
+ </rect>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="margin">
+ <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>530</width>
+ <height>237</height>
+ </rect>
+ </property>
+ <attribute name="label">
+ <string>Use</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout">
+ <item row="0" column="0" colspan="2">
+ <widget class="QLabel" name="labelStartWithMoreButtonPushed">
+ <property name="text">
+ <string>Start with the &quot;more button&quot; pushed</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="2">
+ <widget class="QCheckBox" name="checkBoxStartWithMoreButtonPushed"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="labelAlwaysOnTop">
+ <property name="text">
+ <string>Always on top</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QCheckBox" name="alwaysOnTop"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label">
+ <property name="text">
+ <string>Minimize on close to systray</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QCheckBox" name="minimizeToSystray"/>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_2">
+ <property name="text">
+ <string>At the end of the copy</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" 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="4" column="0">
+ <widget class="QLabel" name="label_Slider_speed">
+ <property name="text">
+ <string>Limit copy speed to</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QSlider" name="SliderSpeed">
+ <property name="maximum">
+ <number>5</number>
+ </property>
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="2">
+ <widget class="QLabel" name="label_SpeedMaxValue">
+ <property name="text">
+ <string notr="true">Unlimited</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QCheckBox" name="checkBox_limitSpeed">
+ <property name="text">
+ <string>Limit copy speed to</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" 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="6" column="2">
+ <spacer name="verticalSpacer">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>71</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="page_3">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>241</width>
+ <height>33</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="1">
+ <spacer name="verticalSpacer_2">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>201</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
+ <widget class="QWidget" name="page_2">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>441</width>
+ <height>107</height>
+ </rect>
+ </property>
+ <attribute name="label">
+ <string>Display</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <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="2">
+ <widget class="QCheckBox" name="speedWithProgressBar"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Show progression in the title</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QCheckBox" name="showProgressionInTheTitle"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="labelDualProgression">
+ <property name="text">
+ <string>Show dual progression</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="2">
+ <widget class="QCheckBox" name="showDualProgression"/>
+ </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="2">
+ <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_3">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="margin">
+ <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="1">
+ <spacer name="verticalSpacer_3">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>127</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-alternative/Themes/Teracopy/DebugEngineMacro.h b/plugins-alternative/Themes/Teracopy/DebugEngineMacro.h
index a3dd648..4582010 100644
--- a/plugins-alternative/Themes/Teracopy/DebugEngineMacro.h
+++ b/plugins-alternative/Themes/Teracopy/DebugEngineMacro.h
@@ -1,12 +1,15 @@
/** \file DebugEngineMacro.h
\brief Define the macro for the debug
\author alpha_one_x86
-\version 0.3
-\date 2010 */
+\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__)
diff --git a/plugins-alternative/Themes/Teracopy/Environment.h b/plugins-alternative/Themes/Teracopy/Environment.h
index 94fd104..265a5a6 100644
--- a/plugins-alternative/Themes/Teracopy/Environment.h
+++ b/plugins-alternative/Themes/Teracopy/Environment.h
@@ -1,8 +1,7 @@
/** \file Environment.h
\brief Define the environment variable and global function
\author alpha_one_x86
-\version 0.3
-\date 2010 */
+\licence GPL3, see the file COPYING */
#include "Variable.h"
/// \brief The global include
diff --git a/plugins-alternative/Themes/Teracopy/Languages/ar/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/ar/translation.ts
index 33cd084..b76694c 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/ar/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/ar/translation.ts
@@ -2,19 +2,19 @@
<!DOCTYPE TS>
<TS version="2.0">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/de/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/de/translation.ts
index 237dc4f..a2da10c 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/de/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/de/translation.ts
@@ -2,19 +2,19 @@
<!DOCTYPE TS>
<TS version="2.0" language="de" sourcelanguage="en">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation>Total: %1 von %2</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation>%1 von %2</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
<translation>%1% erledigt</translation>
</message>
@@ -24,27 +24,27 @@
<message>
<location filename="../../interface.ui" line="159"/>
<source>&amp;More</source>
- <translation>Mehr</translation>
+ <translation>&amp;Mehr</translation>
</message>
<message>
<location filename="../../interface.ui" line="172"/>
<source>...</source>
- <translation></translation>
+ <translation>...</translation>
</message>
<message>
<location filename="../../interface.ui" line="210"/>
<source>&amp;Pause</source>
- <translation></translation>
+ <translation>&amp;Pause</translation>
</message>
<message>
<location filename="../../interface.ui" line="232"/>
<source>&amp;Skip</source>
- <translation>überspringen</translation>
+ <translation>überspringen (&amp;S)</translation>
</message>
<message>
<location filename="../../interface.ui" line="251"/>
<source>&amp;Cancel</source>
- <translation>Stornieren</translation>
+ <translation>Abbrechen (&amp;C)</translation>
</message>
<message>
<location filename="../../interface.ui" line="281"/>
@@ -72,22 +72,22 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../interface.ui" line="326"/>
<source>Move file(s)</source>
- <translation>Bewegen Sie Datei (en)</translation>
+ <translation>Datei (en) verschieben</translation>
</message>
<message>
<location filename="../../interface.ui" line="335"/>
<source>Move folder</source>
- <translation>bewegen Sie Ordner</translation>
+ <translation>Ordner verschieben</translation>
</message>
<message>
<location filename="../../interface.ui" line="344"/>
<source>Copy file(s)</source>
- <translation>Kopieren Sie die Datei (en)</translation>
+ <translation>Datei (en) kopieren</translation>
</message>
<message>
<location filename="../../interface.ui" line="353"/>
<source>Copy folder</source>
- <translation>kopieren Sie das Verzeichnis</translation>
+ <translation>Verzeichnis kopieren</translation>
</message>
</context>
</TS>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/el/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/el/translation.ts
index 33cd084..b76694c 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/el/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/el/translation.ts
@@ -2,19 +2,19 @@
<!DOCTYPE TS>
<TS version="2.0">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/en/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/en/translation.ts
new file mode 100644
index 0000000..d9fb1d6
--- /dev/null
+++ b/plugins-alternative/Themes/Teracopy/Languages/en/translation.ts
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="95"/>
+ <source>Total: %1 of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="96"/>
+ <source>%1 of %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="250"/>
+ <source>%1% done</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="159"/>
+ <source>&amp;More</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="172"/>
+ <source>...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="210"/>
+ <source>&amp;Pause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>&amp;Skip</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="251"/>
+ <source>&amp;Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="281"/>
+ <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;http://ultracopier.first-world.info/&quot;&gt;&lt;span style=&quot; font-size:8pt; text-decoration: underline; color:#0057ae;&quot;&gt;Support Ultracopier&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="308"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="317"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="335"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="344"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="353"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/es/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/es/translation.ts
index fe526da..5081c0f 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/es/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/es/translation.ts
@@ -2,21 +2,21 @@
<!DOCTYPE TS>
<TS version="2.0" language="es" sourcelanguage="en">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
- <translation>Total: %1 de %2</translation>
+ <translation type="unfinished">Total: %1 de %2</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
- <translation>%1 de %2</translation>
+ <translation type="unfinished">%1 de %2</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
- <translation>%1% hecho</translation>
+ <translation type="unfinished">%1% hecho</translation>
</message>
</context>
<context>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/fr/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/fr/translation.ts
index 42ac61d..fd6eaa1 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/fr/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/fr/translation.ts
@@ -2,20 +2,21 @@
<!DOCTYPE TS>
<TS version="2.0" language="fr" sourcelanguage="en">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation>Total: %1 sur %2</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation>%1 sur %2</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
+ <translatorcomment>Exemple: 90% fait</translatorcomment>
<translation>%1% fait</translation>
</message>
</context>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/hi/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/hi/translation.ts
index 33cd084..b76694c 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/hi/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/hi/translation.ts
@@ -2,19 +2,19 @@
<!DOCTYPE TS>
<TS version="2.0">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/hu/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/hu/translation.ts
new file mode 100644
index 0000000..3d940b4
--- /dev/null
+++ b/plugins-alternative/Themes/Teracopy/Languages/hu/translation.ts
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="hu">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="95"/>
+ <source>Total: %1 of %2</source>
+ <translation>Összesen: %1 / %2</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="96"/>
+ <source>%1 of %2</source>
+ <translation>%1 / %2</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="250"/>
+ <source>%1% done</source>
+ <translation>%1% kész</translation>
+ </message>
+</context>
+<context>
+ <name>interfaceCopy</name>
+ <message>
+ <location filename="../../interface.ui" line="159"/>
+ <source>&amp;More</source>
+ <translation>&amp;Több</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="172"/>
+ <source>...</source>
+ <translation>...</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="210"/>
+ <source>&amp;Pause</source>
+ <translation>&amp;Szünet</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="232"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;Kihagy</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="251"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;Mégse</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="281"/>
+ <source>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;http://ultracopier.first-world.info/&quot;&gt;&lt;span style=&quot; font-size:8pt; text-decoration: underline; color:#0057ae;&quot;&gt;Support Ultracopier&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
+&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
+p, li { white-space: pre-wrap; }
+&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;http://ultracopier.first-world.info/&quot;&gt;&lt;span style=&quot; font-size:8pt; text-decoration: underline; color:#0057ae;&quot;&gt;Támogasd az Ultracopier-t&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="308"/>
+ <source>Add file</source>
+ <translation>Fájl hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="317"/>
+ <source>Add folder</source>
+ <translation>Mappa hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="326"/>
+ <source>Move file(s)</source>
+ <translation>Fájl(ok) mozgatása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="335"/>
+ <source>Move folder</source>
+ <translation>Mappa mozgatása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="344"/>
+ <source>Copy file(s)</source>
+ <translation>Fájl(ok) másolása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="353"/>
+ <source>Copy folder</source>
+ <translation>Mappa másolása</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/id/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/id/translation.ts
index 33cd084..b76694c 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/id/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/id/translation.ts
@@ -2,19 +2,19 @@
<!DOCTYPE TS>
<TS version="2.0">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/it/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/it/translation.ts
index 746b8a6..31d775e 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/it/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/it/translation.ts
@@ -2,19 +2,19 @@
<!DOCTYPE TS>
<TS version="2.0" language="it" sourcelanguage="en">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation>Totale: %1 di %2</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation>%1 di %2</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
<translation>%1% fatto</translation>
</message>
@@ -24,27 +24,27 @@
<message>
<location filename="../../interface.ui" line="159"/>
<source>&amp;More</source>
- <translation>Di più</translation>
+ <translation>Alt&amp;o</translation>
</message>
<message>
<location filename="../../interface.ui" line="172"/>
<source>...</source>
- <translation></translation>
+ <translation>...</translation>
</message>
<message>
<location filename="../../interface.ui" line="210"/>
<source>&amp;Pause</source>
- <translation>Pausa</translation>
+ <translation>&amp;Pausa</translation>
</message>
<message>
<location filename="../../interface.ui" line="232"/>
<source>&amp;Skip</source>
- <translation>Saltare</translation>
+ <translation>&amp;Salta</translation>
</message>
<message>
<location filename="../../interface.ui" line="251"/>
<source>&amp;Cancel</source>
- <translation>Annullare</translation>
+ <translation>&amp;Annulla</translation>
</message>
<message>
<location filename="../../interface.ui" line="281"/>
@@ -57,7 +57,7 @@ p, li { white-space: pre-wrap; }
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:&apos;Sans Serif&apos;; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
-&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;http://ultracopier.first-world.info/&quot;&gt;&lt;span style=&quot; font-size:8pt; text-decoration: underline; color:#0057ae;&quot;&gt;Sostenere Ultracopier&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
+&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;a href=&quot;http://ultracopier.first-world.info/&quot;&gt;&lt;span style=&quot; font-size:8pt; text-decoration: underline; color:#0057ae;&quot;&gt;Supporto Ultracopier&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../interface.ui" line="308"/>
@@ -72,17 +72,17 @@ p, li { white-space: pre-wrap; }
<message>
<location filename="../../interface.ui" line="326"/>
<source>Move file(s)</source>
- <translation>Spostare file(s)</translation>
+ <translation>Sposta file</translation>
</message>
<message>
<location filename="../../interface.ui" line="335"/>
<source>Move folder</source>
- <translation>Spostare la cartella</translation>
+ <translation>Sposta la cartella</translation>
</message>
<message>
<location filename="../../interface.ui" line="344"/>
<source>Copy file(s)</source>
- <translation>Copiare il file(s)</translation>
+ <translation>Copia file</translation>
</message>
<message>
<location filename="../../interface.ui" line="353"/>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/ja/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/ja/translation.ts
index 33cd084..b76694c 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/ja/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/ja/translation.ts
@@ -2,19 +2,19 @@
<!DOCTYPE TS>
<TS version="2.0">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/ko/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/ko/translation.ts
index 6c66c5a..06946e9 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/ko/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/ko/translation.ts
@@ -2,9 +2,9 @@
<!DOCTYPE TS>
<TS version="2.0" language="ko_KR">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="+76"/>
+ <location filename="../../interface.cpp" line="+95"/>
<source>Total: %1 of %2</source>
<translation type="unfinished">전체: %3 / %2 {1 ?}</translation>
</message>
@@ -14,7 +14,7 @@
<translation type="unfinished">%1 / %2</translation>
</message>
<message>
- <location line="+135"/>
+ <location line="+154"/>
<source>%1% done</source>
<translation type="unfinished">%1% 완료</translation>
</message>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/nl/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/nl/translation.ts
index 33cd084..b76694c 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/nl/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/nl/translation.ts
@@ -2,19 +2,19 @@
<!DOCTYPE TS>
<TS version="2.0">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/no/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/no/translation.ts
index 33cd084..b76694c 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/no/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/no/translation.ts
@@ -2,19 +2,19 @@
<!DOCTYPE TS>
<TS version="2.0">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/pl/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/pl/translation.ts
index 33cd084..b76694c 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/pl/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/pl/translation.ts
@@ -2,19 +2,19 @@
<!DOCTYPE TS>
<TS version="2.0">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/ru/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/ru/translation.ts
index 1219c56..db1059e 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/ru/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/ru/translation.ts
@@ -2,21 +2,21 @@
<!DOCTYPE TS>
<TS version="2.0" language="ru" sourcelanguage="et">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
- <translation>Всего: %1 из %2</translation>
+ <translation type="unfinished">Всего: %1 из %2</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
- <translation>%1 из %2</translation>
+ <translation type="unfinished">%1 из %2</translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
- <translation>%1% сделанный</translation>
+ <translation type="unfinished">%1% сделанный</translation>
</message>
</context>
<context>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/th/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/th/translation.ts
index 33cd084..b76694c 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/th/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/th/translation.ts
@@ -2,19 +2,19 @@
<!DOCTYPE TS>
<TS version="2.0">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/tr/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/tr/translation.ts
index 33cd084..b76694c 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/tr/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/tr/translation.ts
@@ -2,19 +2,19 @@
<!DOCTYPE TS>
<TS version="2.0">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins-alternative/Themes/Teracopy/Languages/zh/translation.ts b/plugins-alternative/Themes/Teracopy/Languages/zh/translation.ts
index 33cd084..b76694c 100644
--- a/plugins-alternative/Themes/Teracopy/Languages/zh/translation.ts
+++ b/plugins-alternative/Themes/Teracopy/Languages/zh/translation.ts
@@ -2,19 +2,19 @@
<!DOCTYPE TS>
<TS version="2.0">
<context>
- <name>InterfacePlugin</name>
+ <name>Themes</name>
<message>
- <location filename="../../interface.cpp" line="76"/>
+ <location filename="../../interface.cpp" line="95"/>
<source>Total: %1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="77"/>
+ <location filename="../../interface.cpp" line="96"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../interface.cpp" line="212"/>
+ <location filename="../../interface.cpp" line="250"/>
<source>%1% done</source>
<translation type="unfinished"></translation>
</message>
diff --git a/plugins-alternative/Themes/Teracopy/TransferModel.cpp b/plugins-alternative/Themes/Teracopy/TransferModel.cpp
index 569d31c..24812a0 100644
--- a/plugins-alternative/Themes/Teracopy/TransferModel.cpp
+++ b/plugins-alternative/Themes/Teracopy/TransferModel.cpp
@@ -6,145 +6,146 @@
TransferModel::TransferModel()
{
- iconStart=QIcon(":/resources/player_play.png");
- iconPause=QIcon(":/resources/player_pause.png");
- iconStop=QIcon(":/resources/checkbox.png");
- currentIndexSearch=0;
- haveSearchItem=false;
+ iconStart=QIcon(":/Themes/Teracopy/resources/player_play.png");
+ iconPause=QIcon(":/Themes/Teracopy/resources/player_pause.png");
+ iconStop=QIcon(":/Themes/Teracopy/resources/checkbox.png");
+ currentIndexSearch=0;
+ haveSearchItem=false;
+ facilityEngine=NULL;
}
int TransferModel::columnCount( const QModelIndex& parent ) const
{
- return parent == QModelIndex() ? COLUMN_COUNT : 0;
+ 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 || row >= transfertItemList.count() || column < 0 || column >= COLUMN_COUNT)
- return QVariant();
+ int row,column;
+ row=index.row();
+ column=index.column();
+ if(index.parent()!=QModelIndex() || row < 0 || row >= transfertItemList.count() || column < 0 || column >= COLUMN_COUNT)
+ return QVariant();
- const transfertItem& item = transfertItemList[row];
- if(role==Qt::UserRole)
- return item.id;
- else if(role==Qt::DisplayRole)
- {
- switch(column)
- {
- case 0:
- return item.source;
- break;
- case 1:
- return item.size;
- break;
- case 2:
- return item.destination;
- break;
- default:
- return QVariant();
- }
- }
- else if(role==Qt::DecorationRole)
- {
- switch(column)
- {
- case 0:
- /*if(item.done)
- return iconStop;
- else */if(stopId.contains(item.id))
- return iconPause;
- else if(startId.contains(item.id))
- return iconStart;
- else
- return QVariant();
- break;
- default:
- return QVariant();
- }
- }
- else if(role==Qt::BackgroundRole)
- {
- if(!search_text.isEmpty() && (item.source.indexOf(search_text,0,Qt::CaseInsensitive)!=-1 || item.destination.indexOf(search_text,0,Qt::CaseInsensitive)!=-1))
- {
- if(haveSearchItem && searchId==item.id)
- return QColor(255,150,150,100);
- else
- return QColor(255,255,0,100);
- }
- else
- return QVariant();
- }
- return QVariant();
+ const transfertItem& item = transfertItemList[row];
+ if(role==Qt::UserRole)
+ return item.id;
+ else if(role==Qt::DisplayRole)
+ {
+ switch(column)
+ {
+ case 0:
+ return item.source;
+ break;
+ case 1:
+ return item.size;
+ break;
+ case 2:
+ return item.destination;
+ break;
+ default:
+ return QVariant();
+ }
+ }
+ else if(role==Qt::DecorationRole)
+ {
+ switch(column)
+ {
+ case 0:
+ /*if(item.done)
+ return iconStop;
+ else */if(stopId.contains(item.id))
+ return iconPause;
+ else if(startId.contains(item.id))
+ return iconStart;
+ else
+ return QVariant();
+ break;
+ default:
+ return QVariant();
+ }
+ }
+ else if(role==Qt::BackgroundRole)
+ {
+ if(!search_text.isEmpty() && (item.source.indexOf(search_text,0,Qt::CaseInsensitive)!=-1 || item.destination.indexOf(search_text,0,Qt::CaseInsensitive)!=-1))
+ {
+ 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.count() : 0;
+ return parent == QModelIndex() ? transfertItemList.count() : 0;
}
quint64 TransferModel::firstId()
{
- if(transfertItemList.count()>0)
- return transfertItemList[0].id;
- else
- return 0;
+ if(transfertItemList.count()>0)
+ return transfertItemList[0].id;
+ else
+ return 0;
}
QVariant TransferModel::headerData( int section, Qt::Orientation orientation, int role ) const
{
- if ( role == Qt::DisplayRole && orientation == Qt::Horizontal && section >= 0 && section < COLUMN_COUNT ) {
- switch ( section ) {
- case 0:
- return facilityEngine->translateText("Source");
- case 1:
- return facilityEngine->translateText("Size");
- case 2:
- return facilityEngine->translateText("Destination");
- }
- }
+ if ( role == Qt::DisplayRole && orientation == Qt::Horizontal && section >= 0 && section < COLUMN_COUNT ) {
+ switch ( section ) {
+ case 0:
+ return facilityEngine->translateText("Source");
+ case 1:
+ return facilityEngine->translateText("Size");
+ case 2:
+ return facilityEngine->translateText("Destination");
+ }
+ }
- return QAbstractTableModel::headerData( section, orientation, role );
+ 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 || row >= transfertItemList.count() || column < 0 || column >= COLUMN_COUNT)
- return false;
+ row=index.row();
+ column=index.column();
+ if(index.parent()!=QModelIndex() || row < 0 || row >= transfertItemList.count() || 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();
- emit dataChanged(index,index);
- return true;
- break;
- case 1:
- item.size=value.toString();
- emit dataChanged(index,index);
- return true;
- break;
- case 2:
- item.destination=value.toString();
- emit dataChanged(index,index);
- return true;
- break;
- default:
- return false;
- }
- }
- 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();
+ emit dataChanged(index,index);
+ return true;
+ break;
+ case 1:
+ item.size=value.toString();
+ emit dataChanged(index,index);
+ return true;
+ break;
+ case 2:
+ item.destination=value.toString();
+ emit dataChanged(index,index);
+ return true;
+ break;
+ default:
+ return false;
+ }
+ }
+ return false;
}
/*
@@ -152,290 +153,376 @@ bool TransferModel::setData( const QModelIndex& index, const QVariant& value, in
Return[1]: totalSize
Return[2]: currentFile
*/
-QList<quint64> TransferModel::synchronizeItems(const QList<returnActionOnCopyList>& returnActions)
+QList<quint64> TransferModel::synchronizeItems(const QList<Ultracopier::ReturnActionOnCopyList>& returnActions)
{
- loop_size=returnActions.size();
- index_for_loop=0;
- totalFile=0;
- totalSize=0;
- currentFile=0;
- emit layoutAboutToBeChanged();
- while(index_for_loop<loop_size)
- {
- const returnActionOnCopyList& action=returnActions.at(index_for_loop);
- switch(action.type)
- {
- case 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;
+ loop_size=returnActions.size();
+ index_for_loop=0;
+ 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;
// newItem.done=false;
- transfertItemList<<newItem;
- totalFile++;
- totalSize+=action.addAction.size;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("id: %1, size: %2, name: %3").arg(action.addAction.id).arg(action.addAction.size).arg(action.addAction.sourceFullPath));
- }
- break;
- case MoveItem:
- {
- //bool current_entry=
- if(action.userAction.position<0)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position));
- break;
- }
- if(action.userAction.position>(transfertItemList.size()-1))
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position));
- break;
- }
- if(action.userAction.moveAt<0)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position));
- break;
- }
- if(action.userAction.moveAt>(transfertItemList.size()-1))
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position));
- break;
- }
- transfertItemList.move(action.userAction.position,action.userAction.moveAt);
- }
- break;
- case RemoveItem:
- {
- if(currentIndexSearch>0 && action.userAction.position<=currentIndexSearch)
- currentIndexSearch--;
- if(action.userAction.position<0)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position));
- break;
- }
- if(action.userAction.position>(transfertItemList.size()-1))
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position));
- break;
- }
- transfertItemList.removeAt(action.userAction.position);
- currentFile++;
- startId.remove(action.addAction.id);
- stopId.remove(action.addAction.id);
- }
- break;
- case PreOperation:
- {
- ItemOfCopyListWithMoreInformations tempItem;
- tempItem.currentProgression=0;
- tempItem.generalData=action.addAction;
- tempItem.actionType=action.type;
- internalRunningOperation[action.addAction.id]=tempItem;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("set for file %1: actionType: PreOperation").arg(action.addAction.id));
- }
- break;
- case Transfer:
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("found entry for file %1: actionType: Transfer").arg(action.addAction.id));
- if(!startId.contains(action.addAction.id))
- startId << action.addAction.id;
- stopId.remove(action.addAction.id);
- if(internalRunningOperation.contains(action.addAction.id))
- internalRunningOperation[action.addAction.id].actionType=action.type;
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("unable to found entry for file %1: actionType: Transfer").arg(action.addAction.id));
- }
- break;
- case PostOperation:
- {
- if(!stopId.contains(action.addAction.id))
- stopId << action.addAction.id;
- startId.remove(action.addAction.id);
- internalRunningOperation.remove(action.addAction.id);
- }
- break;
- case CustomOperation:
- {
- bool custom_with_progression=(action.addAction.size==1);
- //without progression
- if(custom_with_progression)
- {
- if(startId.remove(action.addAction.id))
- if(!stopId.contains(action.addAction.id))
- stopId << action.addAction.id;
- }
- //with progression
- else
- {
- stopId.remove(action.addAction.id);
- if(!startId.contains(action.addAction.id))
- startId << action.addAction.id;
- }
- if(internalRunningOperation.contains(action.addAction.id))
- {
- ItemOfCopyListWithMoreInformations &item=internalRunningOperation[action.addAction.id];
- item.actionType=action.type;
- item.custom_with_progression=custom_with_progression;
- item.currentProgression=0;
- }
- }
- break;
- default:
- //unknow code, ignore it
- break;
- }
- index_for_loop++;
- }
- emit layoutChanged();
- return QList<quint64>() << totalFile << totalSize << currentFile;
+ transfertItemList<<newItem;
+ totalFile++;
+ totalSize+=action.addAction.size;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("id: %1, size: %2, name: %3").arg(action.addAction.id).arg(action.addAction.size).arg(action.addAction.sourceFullPath));
+ }
+ break;
+ case Ultracopier::MoveItem:
+ {
+ //bool current_entry=
+ 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));
+ break;
+ }
+ if(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));
+ break;
+ }
+ if(action.userAction.moveAt<0)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position));
+ break;
+ }
+ if(action.userAction.moveAt>(transfertItemList.size()-1))
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("id: %1, position is wrong: %3").arg(action.addAction.id).arg(action.userAction.position));
+ break;
+ }
+ transfertItemList.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));
+ break;
+ }
+ if(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));
+ break;
+ }
+ transfertItemList.removeAt(action.userAction.position);
+ currentFile++;
+ startId.remove(action.addAction.id);
+ stopId.remove(action.addAction.id);
+ internalRunningOperation.remove(action.addAction.id);
+ }
+ 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;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("set for file %1: actionType: PreOperation").arg(action.addAction.id));
+ }
+ break;
+ case Ultracopier::Transfer:
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("found entry for file %1: actionType: Transfer").arg(action.addAction.id));
+ if(!startId.contains(action.addAction.id))
+ startId << action.addAction.id;
+ stopId.remove(action.addAction.id);
+ if(internalRunningOperation.contains(action.addAction.id))
+ 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));
+ }
+ break;
+ case Ultracopier::PostOperation:
+ {
+ if(!stopId.contains(action.addAction.id))
+ stopId << action.addAction.id;
+ startId.remove(action.addAction.id);
+ }
+ break;
+ case Ultracopier::CustomOperation:
+ {
+ bool custom_with_progression=(action.addAction.size==1);
+ //without progression
+ if(custom_with_progression)
+ {
+ if(startId.remove(action.addAction.id))
+ if(!stopId.contains(action.addAction.id))
+ stopId << action.addAction.id;
+ }
+ //with progression
+ else
+ {
+ stopId.remove(action.addAction.id);
+ if(!startId.contains(action.addAction.id))
+ startId << action.addAction.id;
+ }
+ if(internalRunningOperation.contains(action.addAction.id))
+ {
+ 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++;
+ }
+ emit layoutChanged();
+ return QList<quint64>() << totalFile << totalSize << currentFile;
}
void TransferModel::setFacilityEngine(FacilityInterface * facilityEngine)
{
- this->facilityEngine=facilityEngine;
+ this->facilityEngine=facilityEngine;
}
int TransferModel::search(const QString &text,bool searchNext)
{
- emit layoutAboutToBeChanged();
- search_text=text;
- emit layoutChanged();
- if(transfertItemList.size()==0)
- return -1;
- if(text.isEmpty())
- 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)
- {
- if(transfertItemList.at(currentIndexSearch).source.indexOf(search_text,0,Qt::CaseInsensitive)!=-1 || transfertItemList.at(currentIndexSearch).destination.indexOf(search_text,0,Qt::CaseInsensitive)!=-1)
- {
- haveSearchItem=true;
- searchId=transfertItemList.at(currentIndexSearch).id;
- return currentIndexSearch;
- }
- currentIndexSearch++;
- if(currentIndexSearch>=loop_size)
- currentIndexSearch=0;
- index_for_loop++;
- }
- haveSearchItem=false;
- return -1;
+ emit layoutAboutToBeChanged();
+ search_text=text;
+ emit layoutChanged();
+ if(transfertItemList.size()==0)
+ return -1;
+ if(text.isEmpty())
+ 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)
+ {
+ if(transfertItemList.at(currentIndexSearch).source.indexOf(search_text,0,Qt::CaseInsensitive)!=-1 || transfertItemList.at(currentIndexSearch).destination.indexOf(search_text,0,Qt::CaseInsensitive)!=-1)
+ {
+ 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 QString &text)
{
- emit layoutAboutToBeChanged();
- search_text=text;
- emit layoutChanged();
- if(transfertItemList.size()==0)
- return -1;
- if(text.isEmpty())
- 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)
- {
- if(transfertItemList.at(currentIndexSearch).source.indexOf(search_text,0,Qt::CaseInsensitive)!=-1 || transfertItemList.at(currentIndexSearch).destination.indexOf(search_text,0,Qt::CaseInsensitive)!=-1)
- {
- 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;
+ emit layoutAboutToBeChanged();
+ search_text=text;
+ emit layoutChanged();
+ if(transfertItemList.size()==0)
+ return -1;
+ if(text.isEmpty())
+ 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)
+ {
+ if(transfertItemList.at(currentIndexSearch).source.indexOf(search_text,0,Qt::CaseInsensitive)!=-1 || transfertItemList.at(currentIndexSearch).destination.indexOf(search_text,0,Qt::CaseInsensitive)!=-1)
+ {
+ 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(QList<ProgressionItem> &progressionList)
+void TransferModel::setFileProgression(QList<Ultracopier::ProgressionItem> &progressionList)
{
- loop_size=progressionList.size();
- index_for_loop=0;
- while(index_for_loop<loop_size)
- {
- if(internalRunningOperation.contains(progressionList.at(index_for_loop).id))
- {
- internalRunningOperation[progressionList.at(index_for_loop).id].generalData.size=progressionList.at(index_for_loop).total;
- internalRunningOperation[progressionList.at(index_for_loop).id].currentProgression=progressionList.at(index_for_loop).current;
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- progressionList.removeAt(index_for_loop);
- #endif
- }
- index_for_loop++;
- }
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- if(progressionList.size()>0)
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"progression remaning items");
- #endif
+ loop_size=progressionList.size();
+ index_for_loop=0;
+ while(index_for_loop<loop_size)
+ {
+ if(internalRunningOperation.contains(progressionList.at(index_for_loop).id))
+ {
+ 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.removeAt(index_for_loop);
+ index_for_loop--;
+ loop_size--;
+ #endif
+ }
+ index_for_loop++;
+ }
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(progressionList.size()>0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"progression remaning items");
+ #endif
}
TransferModel::currentTransfertItem TransferModel::getCurrentTransfertItem()
{
- currentTransfertItem returnItem;
- returnItem.haveItem=startId.size()>0;
- if(returnItem.haveItem)
- {
- if(!internalRunningOperation.contains(*startId.constBegin()))
- {
- returnItem.haveItem=false;
- return returnItem;
- }
- const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation[*startId.constBegin()];
- returnItem.from=itemTransfer.generalData.sourceFullPath;
- returnItem.to=itemTransfer.generalData.destinationFullPath;
- returnItem.current_file=itemTransfer.generalData.destinationFileName+", "+facilityEngine->sizeToString(itemTransfer.generalData.size);
- switch(itemTransfer.actionType)
- {
- case CustomOperation:
- if(!itemTransfer.custom_with_progression)
- returnItem.progressBar_file=-1;
- else
- {
- if(itemTransfer.generalData.size>0)
- returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
- else
- returnItem.progressBar_file=-1;
- }
- break;
- case Transfer:
- if(itemTransfer.generalData.size>0)
- returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
- else
- returnItem.progressBar_file=0;
- break;
- //should never pass here
- case PostOperation:
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType));
- returnItem.progressBar_file=65535;
- break;
- //should never pass here
- case PreOperation:
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("wrong action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType));
- returnItem.progressBar_file=0;
- break;
- default:
- returnItem.progressBar_file=0;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Warning,QString("unknow action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType));
- break;
- }
- }
-/* else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("No have running item"));*/
- return returnItem;
+ currentTransfertItem returnItem;
+ returnItem.progressBar_read=-1;
+ returnItem.progressBar_write=0;
+ returnItem.haveItem=startId.size()>0;
+ if(returnItem.haveItem)
+ {
+ if(!internalRunningOperation.contains(*startId.constBegin()))
+ {
+ returnItem.haveItem=false;
+ return returnItem;
+ }
+ const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation[*startId.constBegin()];
+ 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));
+ 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));
+ 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));
+ break;
+ }
+ }
+ else
+ {
+ returnItem.haveItem=stopId.size()>0;
+ if(returnItem.haveItem)
+ {
+ if(!internalRunningOperation.contains(*stopId.constBegin()))
+ {
+ returnItem.haveItem=false;
+ return returnItem;
+ }
+ const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation[*stopId.constBegin()];
+ 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));
+ 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));
+ 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));
+ 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-alternative/Themes/Teracopy/TransferModel.h b/plugins-alternative/Themes/Teracopy/TransferModel.h
index 486532e..977c986 100644
--- a/plugins-alternative/Themes/Teracopy/TransferModel.h
+++ b/plugins-alternative/Themes/Teracopy/TransferModel.h
@@ -17,76 +17,76 @@
/// \brief model to store the transfer list
class TransferModel : public QAbstractTableModel
{
- Q_OBJECT
+ Q_OBJECT
public:
- /// \brief the transfer item displayed
- struct transfertItem
- {
- quint64 id;
- QString source;
- QString size;
- QString destination;
- };
- /// \brief the transfer item with progression
- struct ItemOfCopyListWithMoreInformations
- {
- quint64 currentProgression;
- ItemOfCopyList generalData;
- ActionTypeCopyList actionType;
- bool custom_with_progression;
- };
- /// \brief returned first transfer item
- struct currentTransfertItem
- {
- quint64 id;
- bool haveItem;
- QString from;
- QString to;
- QString current_file;
- int progressBar_file;
- };
+ /// \brief the transfer item displayed
+ struct transfertItem
+ {
+ quint64 id;
+ QString source;
+ QString size;
+ QString destination;
+ };
+ /// \brief the transfer item with progression
+ struct ItemOfCopyListWithMoreInformations
+ {
+ quint64 currentReadProgression,currentWriteProgression;
+ Ultracopier::ItemOfCopyList generalData;
+ Ultracopier::ActionTypeCopyList actionType;
+ bool custom_with_progression;
+ };
+ /// \brief returned first transfer item
+ struct currentTransfertItem
+ {
+ quint64 id;
+ bool haveItem;
+ QString from;
+ QString to;
+ QString current_file;
+ int progressBar_read,progressBar_write;
+ };
- TransferModel();
+ 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);
-
- QList<quint64> synchronizeItems(const QList<returnActionOnCopyList>& returnActions);
- void setFacilityEngine(FacilityInterface * facilityEngine);
+ 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);
- int search(const QString &text,bool searchNext);
- int searchPrev(const QString &text);
+ QList<quint64> synchronizeItems(const QList<Ultracopier::ReturnActionOnCopyList>& returnActions);
+ void setFacilityEngine(FacilityInterface * facilityEngine);
- void setFileProgression(QList<ProgressionItem> &progressionList);
+ int search(const QString &text,bool searchNext);
+ int searchPrev(const QString &text);
- currentTransfertItem getCurrentTransfertItem();
+ void setFileProgression(QList<Ultracopier::ProgressionItem> &progressionList);
- quint64 firstId();
+ currentTransfertItem getCurrentTransfertItem();
+
+ quint64 firstId();
protected:
- QList<transfertItem> transfertItemList;///< To have a transfer list for the user
- QList<transfertItem> transfertItemListDone;///< To have a transfer list for the user
- QSet<quint64> startId,stopId;///< To show what is started, what is stopped
- QHash<quint64,ItemOfCopyListWithMoreInformations> internalRunningOperation;///< to have progression and stat
- QIcon iconStart,iconPause,iconStop;
+ QList<transfertItem> transfertItemList;///< To have a transfer list for the user
+ QList<transfertItem> transfertItemListDone;///< To have a transfer list for the user
+ QSet<quint64> startId,stopId;///< To show what is started, what is stopped
+ QHash<quint64,ItemOfCopyListWithMoreInformations> internalRunningOperation;///< to have progression and stat
+ QIcon iconStart,iconPause,iconStop;
private:
- int loop_size,index_for_loop;
- int sub_loop_size,sub_index_for_loop;
- int row,column;
- quint64 totalFile,totalSize,currentFile;
- FacilityInterface * facilityEngine;
- QString search_text;
- /// \brief index from start the search, decresed by remove before it
- int currentIndexSearch;
- bool haveSearchItem;
- quint64 searchId;
+ int loop_size,index_for_loop;
+ int sub_loop_size,sub_index_for_loop;
+ int row,column;
+ quint64 totalFile,totalSize,currentFile;
+ FacilityInterface * facilityEngine;
+ QString search_text;
+ /// \brief index from start the search, decresed by remove before it
+ int currentIndexSearch;
+ bool haveSearchItem;
+ quint64 searchId;
signals:
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- /// \brief To debug source
- void debugInformation(DebugLevel level,QString fonction,QString text,QString file,int ligne);
- #endif
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,const QString &fonction,const QString &text,const QString &file,const int &ligne);
+ #endif
};
#endif // TRANSFERMODEL_H
diff --git a/plugins-alternative/Themes/Teracopy/Variable.h b/plugins-alternative/Themes/Teracopy/Variable.h
index 8179c93..963d0c8 100644
--- a/plugins-alternative/Themes/Teracopy/Variable.h
+++ b/plugins-alternative/Themes/Teracopy/Variable.h
@@ -1,8 +1,7 @@
/** \file Variable.h
\brief Define the environment variable
\author alpha_one_x86
-\version 0.3
-\date 2010 */
+\licence GPL3, see the file COPYING */
#ifndef VARIABLE_H
#define VARIABLE_H
diff --git a/plugins-alternative/Themes/Teracopy/documentation.dox b/plugins-alternative/Themes/Teracopy/documentation.dox
index a61692b..c1720d2 100755..100644
--- a/plugins-alternative/Themes/Teracopy/documentation.dox
+++ b/plugins-alternative/Themes/Teracopy/documentation.dox
@@ -11,12 +11,12 @@
\section mainpage_overview Overview
It's Teracopy interface, to come from Teracopy to Ultracopier.\n
- More informations on <a href="http://ultracopier-wiki.first-world.info/">the wiki of ultracopier</a>. Is part of Ultracopier 0.3 project as alternative plugin.
+ More informations on <a href="http://ultracopier-wiki.first-world.info/">the wiki of ultracopier</a>. Is part of Ultracopier project as alternative plugin.
\section mainpage_platforms Platforms
- This plugin might be usable in all environments where you find Qt 4.\n
- To be compatible with the official Ultracopier plugins, you need compil it with Gcc, Qt4.8, and same env as Ultracopier have been compiled, see the documentation.
+ 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
diff --git a/plugins-alternative/Themes/Teracopy/factory.cpp b/plugins-alternative/Themes/Teracopy/factory.cpp
index 89c3787..2b176bf 100644
--- a/plugins-alternative/Themes/Teracopy/factory.cpp
+++ b/plugins-alternative/Themes/Teracopy/factory.cpp
@@ -1,83 +1,70 @@
/** \file factory.cpp
\brief Define the factory core
\author alpha_one_x86
-\version 0.3
-\date 2010 */
-
-#include <QtCore>
+*/
#include "factory.h"
-PluginInterface_Themes * Factory::getInstance()
+PluginInterface_Themes * ThemesFactory::getInstance()
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- PluginInterface_Themes * newInterface=new InterfacePlugin(facilityEngine);
- connect(newInterface,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)),this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)));
- connect(this,SIGNAL(reloadLanguage()),newInterface,SLOT(newLanguageLoaded()));
- return newInterface;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ Themes * newInterface=new Themes(facilityEngine);
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ connect(newInterface,&Themes::debugInformation,this,&PluginInterface_ThemesFactory::debugInformation);
+ #endif
+ connect(this,&ThemesFactory::reloadLanguage,newInterface,&Themes::newLanguageLoaded);
+ return newInterface;
}
-void Factory::setResources(OptionInterface *,const QString &writePath,const QString &pluginPath,FacilityInterface * facilityEngine,bool portableVersion)
+void ThemesFactory::setResources(OptionInterface * options,const QString &writePath,const QString &pluginPath,FacilityInterface * facilityInterface,const bool &portableVersion)
{
- this->facilityEngine=facilityEngine;
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start, writePath: "+writePath+", pluginPath: "+pluginPath);
- Q_UNUSED(portableVersion);
+ Q_UNUSED(writePath);
+ Q_UNUSED(pluginPath);
+ this->facilityEngine=facilityInterface;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, writePath: "+writePath+", pluginPath: "+pluginPath);
+ Q_UNUSED(portableVersion);
+ Q_UNUSED(options);
}
-QWidget * Factory::options()
+QWidget * ThemesFactory::options()
{
- return NULL;
+ return NULL;
}
-void Factory::resetOptions()
+void ThemesFactory::resetOptions()
{
}
-QIcon Factory::getIcon(const QString &fileName)
+QIcon ThemesFactory::getIcon(const QString &fileName) const
{
- if(fileName=="SystemTrayIcon/exit.png")
- {
- QIcon tempIcon=QIcon::fromTheme("application-exit");
- if(!tempIcon.isNull())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("use substitution ionc for: %1").arg(fileName));
- return tempIcon;
- }
- }
- if(fileName=="SystemTrayIcon/add.png")
- {
- QIcon tempIcon=QIcon::fromTheme("list-add");
- if(!tempIcon.isNull())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("use substitution ionc for: %1").arg(fileName));
- return tempIcon;
- }
- }
- if(fileName=="SystemTrayIcon/informations.png")
- {
- QIcon tempIcon=QIcon::fromTheme("help-about");
- if(!tempIcon.isNull())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("use substitution ionc for: %1").arg(fileName));
- return tempIcon;
- }
- }
- if(fileName=="SystemTrayIcon/options.png")
- {
- QIcon tempIcon=QIcon::fromTheme("applications-system");
- if(!tempIcon.isNull())
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("use substitution ionc for: %1").arg(fileName));
- return tempIcon;
- }
- }
- return QIcon(":/resources/"+fileName);
+ if(fileName=="SystemTrayIcon/exit.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("application-exit");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ if(fileName=="SystemTrayIcon/add.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("list-add");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ if(fileName=="SystemTrayIcon/informations.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("help-about");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ if(fileName=="SystemTrayIcon/options.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("applications-system");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ return QIcon(":/Themes/Teracopy/resources/"+fileName);
}
-void Factory::newLanguageLoaded()
+void ThemesFactory::newLanguageLoaded()
{
- emit reloadLanguage();
+ emit reloadLanguage();
}
-
-Q_EXPORT_PLUGIN2(interface, Factory);
-
diff --git a/plugins-alternative/Themes/Teracopy/factory.h b/plugins-alternative/Themes/Teracopy/factory.h
index babac47..0b3bb3f 100644
--- a/plugins-alternative/Themes/Teracopy/factory.h
+++ b/plugins-alternative/Themes/Teracopy/factory.h
@@ -1,8 +1,7 @@
/** \file factory.h
\brief Define the factory
\author alpha_one_x86
-\version 0.3
-\date 2010 */
+\licence GPL3, see the file COPYING */
#ifndef FACTORY_H
#define FACTORY_H
@@ -17,30 +16,27 @@
#include "Environment.h"
/// \brief Define the factory, to create instance of the interface
-class Factory : public PluginInterface_ThemesFactory
+class ThemesFactory : public PluginInterface_ThemesFactory
{
- Q_OBJECT
- Q_INTERFACES(PluginInterface_ThemesFactory)
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "first-world.info.ultracopier.PluginInterface.ThemesFactory/1.0.1.0" FILE "plugin.json")
+ Q_INTERFACES(PluginInterface_ThemesFactory)
public:
- /// \brief to return the instance of the copy engine
- PluginInterface_Themes * getInstance();
- /// \brief set the resources, to store options, to have facilityInterface
- void setResources(OptionInterface * optionsEngine,const QString &writePath,const QString &pluginPath,FacilityInterface * facilityEngine,bool portableVersion);
- /// \brief to get the default options widget
- QWidget * options();
- /// \brief to get a resource icon
- QIcon getIcon(const QString &fileName);
+ /// \brief to return the instance of the copy engine
+ PluginInterface_Themes * getInstance();
+ /// \brief set the resources, to store options, to have facilityInterface
+ void setResources(OptionInterface * options,const QString &writePath,const QString &pluginPath,FacilityInterface * facilityInterface,const bool &portableVersion);
+ /// \brief to get the default options widget
+ QWidget * options();
+ /// \brief to get a resource icon
+ QIcon getIcon(const QString &fileName) const;
public slots:
- void resetOptions();
- void newLanguageLoaded();
+ void resetOptions();
+ void newLanguageLoaded();
signals:
- void reloadLanguage();
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- /// \brief To debug source
- void debugInformation(DebugLevel level,QString fonction,QString text,QString file,int ligne);
- #endif
+ void reloadLanguage();
private:
- FacilityInterface * facilityEngine;
+ FacilityInterface * facilityEngine;
};
#endif // FACTORY_H
diff --git a/plugins-alternative/Themes/Teracopy/informations.xml b/plugins-alternative/Themes/Teracopy/informations.xml
index 5fd194d..534db9a 100644
--- a/plugins-alternative/Themes/Teracopy/informations.xml
+++ b/plugins-alternative/Themes/Teracopy/informations.xml
@@ -17,11 +17,10 @@
<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>0.3.1.0</version>
+ <version>1.2.3.6</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. -->
<dependencies><![CDATA[
- >=ultracopier-0.3.1.0
]]></dependencies>
</package> \ No newline at end of file
diff --git a/plugins-alternative/Themes/Teracopy/interface.cpp b/plugins-alternative/Themes/Teracopy/interface.cpp
index a7014dd..64220d0 100644
--- a/plugins-alternative/Themes/Teracopy/interface.cpp
+++ b/plugins-alternative/Themes/Teracopy/interface.cpp
@@ -1,376 +1,431 @@
/** \file interface.cpp
\brief Define the interface core
\author alpha_one_x86
-\version 0.3
-\date 2010 */
+*/
-#include <QtCore>
#include <QMessageBox>
+#include <cmath>
#include "interface.h"
#include "ui_interface.h"
-InterfacePlugin::InterfacePlugin(FacilityInterface * facilityEngine) :
- ui(new Ui::interfaceCopy())
+// 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
+
+Themes::Themes(FacilityInterface * facilityEngine) :
+ ui(new Ui::interfaceCopy())
{
- this->facilityEngine=facilityEngine;
- ui->setupUi(this);
- ui->TransferList->setModel(&transferModel);
- transferModel.setFacilityEngine(facilityEngine);
+ this->facilityEngine=facilityEngine;
+ ui->setupUi(this);
+ transferModel.setFacilityEngine(facilityEngine);
+ ui->TransferList->setModel(&transferModel);
+
+ currentFile = 0;
+ totalFile = 0;
+ currentSize = 0;
+ totalSize = 0;
+ storeIsInPause = false;
+ modeIsForced = false;
+ haveStarted = false;
+ speedString = facilityEngine->speedToString(0);
+ ui->toolButtonMenu->setMenu(&menu);
- currentFile = 0;
- totalFile = 0;
- currentSize = 0;
- totalSize = 0;
- this->show();
- storeIsInPause = false;
- isInPause(false);
- modeIsForced = false;
- haveStarted = false;
- speedString = facilityEngine->speedToString(0);
- ui->toolButtonMenu->setMenu(&menu);
-
- connect(ui->actionAddFile,SIGNAL(triggered()),this,SLOT(forcedModeAddFile()));
- connect(ui->actionAddFileToCopy,SIGNAL(triggered()),this,SLOT(forcedModeAddFileToCopy()));
- connect(ui->actionAddFileToMove,SIGNAL(triggered()),this,SLOT(forcedModeAddFileToMove()));
- connect(ui->actionAddFolderToCopy,SIGNAL(triggered()),this,SLOT(forcedModeAddFolderToCopy()));
- connect(ui->actionAddFolderToMove,SIGNAL(triggered()),this,SLOT(forcedModeAddFolderToMove()));
- connect(ui->actionAddFolder,SIGNAL(triggered()),this,SLOT(forcedModeAddFolder()));
+ 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);
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- connect(&transferModel,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)),this,SIGNAL(debugInformation(DebugLevel,QString,QString,QString,int)));
- #endif
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ connect(&transferModel,&TransferModel::debugInformation,this,&Themes::debugInformation);
+ #endif
+
+ progressColorWrite=QApplication::palette().color(QPalette::Highlight);
+ progressColorRead=QApplication::palette().color(QPalette::AlternateBase);
+ progressColorRemaining=QApplication::palette().color(QPalette::Base);
+
+ 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())
+ );
+ show();
+ isInPause(false);
}
-InterfacePlugin::~InterfacePlugin()
+Themes::~Themes()
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
}
-QWidget * InterfacePlugin::getOptionsEngineWidget()
+QWidget * Themes::getOptionsEngineWidget()
{
- return &optionEngineWidget;
+ return &optionEngineWidget;
}
-void InterfacePlugin::getOptionsEngineEnabled(bool isEnabled)
+void Themes::getOptionsEngineEnabled(const bool &isEnabled)
{
- Q_UNUSED(isEnabled);
+ Q_UNUSED(isEnabled);
}
/// \brief set if transfer list is exportable/importable
-void InterfacePlugin::setTransferListOperation(TransferListOperation transferListOperation)
+void Themes::setTransferListOperation(const Ultracopier::TransferListOperation &transferListOperation)
+{
+ Q_UNUSED(transferListOperation);
+}
+
+void Themes::closeEvent(QCloseEvent *event)
+{
+ event->ignore();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ this->hide();
+ emit cancel();
+}
+
+void Themes::updateOverallInformation()
{
- Q_UNUSED(transferListOperation);
+ ui->overall->setText(tr("Total: %1 of %2").arg(facilityEngine->sizeToString(currentSize)).arg(facilityEngine->sizeToString(totalSize)));
+ ui->labelNumberFile->setText(tr("%1 of %2").arg(currentFile).arg(totalFile));
}
-void InterfacePlugin::closeEvent(QCloseEvent *event)
+void Themes::actionInProgess(const Ultracopier::EngineActionInProgress &action)
{
- event->ignore();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- this->hide();
- emit cancel();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"start: "+QString::number(action));
+ this->action=action;
+ ui->pauseButton->setEnabled(action!=Ultracopier::Idle);
+ switch(action)
+ {
+ case Ultracopier::Copying:
+ case Ultracopier::CopyingAndListing:
+ ui->progressBar_all->setMaximum(65535);
+ ui->progressBar_all->setMinimum(0);
+ break;
+ case Ultracopier::Listing:
+ ui->progressBar_all->setMaximum(0);
+ ui->progressBar_all->setMinimum(0);
+ break;
+ case Ultracopier::Idle:
+ if(haveStarted)
+ emit cancel();
+ break;
+ default:
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"Very wrong switch case!");
+ break;
+ }
+ switch(action)
+ {
+ case Ultracopier::Copying:
+ case Ultracopier::CopyingAndListing:
+ haveStarted=true;
+ ui->cancelButton->setText(facilityEngine->translateText("Quit"));
+ if(storeIsInPause)
+ ui->pauseButton->setText(facilityEngine->translateText("Start"));
+ else
+ ui->pauseButton->setText(facilityEngine->translateText("Pause"));
+ break;
+ case Ultracopier::Idle:
+ ui->cancelButton->setText(facilityEngine->translateText("Quit"));
+ break;
+ default:
+ break;
+ }
}
-void InterfacePlugin::updateOverallInformation()
+void Themes::newFolderListing(const QString &path)
{
- ui->overall->setText(tr("Total: %1 of %2").arg(facilityEngine->sizeToString(currentSize)).arg(facilityEngine->sizeToString(totalSize)));
- ui->labelNumberFile->setText(tr("%1 of %2").arg(currentFile).arg(totalFile));
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ if(action==Ultracopier::Listing)
+ ui->from->setText(path);
}
-void InterfacePlugin::actionInProgess(EngineActionInProgress action)
+void Themes::detectedSpeed(const quint64 &speed)//in byte per seconds
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Information,"start: "+QString::number(action));
- this->action=action;
- ui->pauseButton->setEnabled(action!=Idle);
- switch(action)
- {
- case Copying:
- case CopyingAndListing:
- ui->progressBar_all->setMaximum(65535);
- ui->progressBar_all->setMinimum(0);
- break;
- case Listing:
- ui->progressBar_all->setMaximum(0);
- ui->progressBar_all->setMinimum(0);
- break;
- case Idle:
- if(haveStarted)
- emit cancel();
- break;
- default:
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"Very wrong switch case!");
- break;
- }
- switch(action)
- {
- case Copying:
- case CopyingAndListing:
- haveStarted=true;
- break;
- case Idle:
- ui->cancelButton->setText(facilityEngine->translateText("Quit"));
- break;
- default:
- break;
- }
+ speedString=facilityEngine->speedToString(speed);
}
-void InterfacePlugin::newFolderListing(const QString &path)
+/** \brief support speed limitation */
+void Themes::setSupportSpeedLimitation(const bool &supportSpeedLimitationBool)
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- if(action==Listing)
- ui->from->setText(path);
+ Q_UNUSED(supportSpeedLimitationBool);
}
-void InterfacePlugin::detectedSpeed(const quint64 &speed)//in byte per seconds
+void Themes::remainingTime(const int &remainingSeconds)
{
- speedString=facilityEngine->speedToString(speed);
+ if(remainingSeconds==-1)
+ ui->labelTimeRemaining->setText("<html><body>&#8734;</body></html>");
+ else
+ {
+ Ultracopier::TimeDecomposition time=facilityEngine->secondsToTimeDecomposition(remainingSeconds);
+ ui->labelTimeRemaining->setText(QString::number(time.hour)+":"+QString::number(time.minute)+":"+QString::number(time.second));
+ }
}
-void InterfacePlugin::remainingTime(const int &remainingSeconds)
+void Themes::newCollisionAction(const QString &action)
{
- if(remainingSeconds==-1)
- ui->labelTimeRemaining->setText("<html><body>&#8734;</body></html>");
- else
- {
- TimeDecomposition time=facilityEngine->secondsToTimeDecomposition(remainingSeconds);
- ui->labelTimeRemaining->setText(QString::number(time.hour)+":"+QString::number(time.minute)+":"+QString::number(time.second));
- }
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ Q_UNUSED(action);
}
-void InterfacePlugin::newCollisionAction(const QString &action)
+void Themes::newErrorAction(const QString &action)
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- Q_UNUSED(action);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ Q_UNUSED(action);
}
-void InterfacePlugin::newErrorAction(const QString &action)
+void Themes::errorDetected()
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- Q_UNUSED(action);
}
-void InterfacePlugin::errorDetected()
+/// \brief new error
+void Themes::errorToRetry(const QString &source,const QString &destination,const QString &error)
{
+ Q_UNUSED(source);
+ Q_UNUSED(destination);
+ Q_UNUSED(error);
}
//speed limitation
-bool InterfacePlugin::setSpeedLimitation(const qint64 &speedLimitation)
+bool Themes::setSpeedLimitation(const qint64 &speedLimitation)
{
- if(speedLimitation>0)
- emit newSpeedLimitation(0);
- return true;
+ if(speedLimitation>0)
+ emit newSpeedLimitation(0);
+ return true;
}
//get information about the copy
-void InterfacePlugin::setGeneralProgression(const quint64 &current,const quint64 &total)
+void Themes::setGeneralProgression(const quint64 &current,const quint64 &total)
{
- currentSize=current;
- totalSize=total;
- if(total>0)
- {
- int newIndicator=((double)current/total)*65535;
- ui->progressBar_all->setValue(newIndicator);
- }
- else
- ui->progressBar_all->setValue(0);
+ currentSize=current;
+ totalSize=total;
+ if(total>0)
+ {
+ int newIndicator=((double)current/total)*65535;
+ ui->progressBar_all->setValue(newIndicator);
+ }
+ else
+ ui->progressBar_all->setValue(0);
}
-void InterfacePlugin::setCollisionAction(const QList<QPair<QString,QString> > &list)
+void Themes::setCollisionAction(const QList<QPair<QString,QString> > &list)
{
- Q_UNUSED(list);
+ Q_UNUSED(list);
}
-void InterfacePlugin::setErrorAction(const QList<QPair<QString,QString> > &list)
+void Themes::setErrorAction(const QList<QPair<QString,QString> > &list)
{
- Q_UNUSED(list);
+ Q_UNUSED(list);
}
-void InterfacePlugin::setCopyType(CopyType type)
+void Themes::setCopyType(const Ultracopier::CopyType &type)
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- this->type=type;
- updateModeAndType();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ this->type=type;
+ updateModeAndType();
}
-void InterfacePlugin::forceCopyMode(CopyMode mode)
+void Themes::forceCopyMode(const Ultracopier::CopyMode &mode)
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- modeIsForced=true;
- this->mode=mode;
- if(mode==Copy)
- this->setWindowTitle("Ultracopier - "+facilityEngine->translateText("Copy"));
- else
- this->setWindowTitle("Ultracopier - "+facilityEngine->translateText("Move"));
- updateModeAndType();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ modeIsForced=true;
+ this->mode=mode;
+ if(mode==Ultracopier::Copy)
+ this->setWindowTitle("Ultracopier - "+facilityEngine->translateText("Copy"));
+ else
+ this->setWindowTitle("Ultracopier - "+facilityEngine->translateText("Move"));
+ updateModeAndType();
}
-void InterfacePlugin::updateTitle()
+void Themes::updateTitle()
{
- QString startString;
- if(action==Copying || action==CopyingAndListing)
- startString=tr("%1% done").arg(((double)currentSize/totalSize)*100);
- else
- startString="Ultracopier";
- startString+=" - ";
- if(mode==Copy)
- this->setWindowTitle(startString+facilityEngine->translateText("Copy")+" ("+speedString+")");
- else
- this->setWindowTitle(startString+facilityEngine->translateText("Move")+" ("+speedString+")");
+ QString startString;
+ if(action==Ultracopier::Copying || action==Ultracopier::CopyingAndListing)
+ startString=tr("%1% done").arg(((double)currentSize/totalSize)*100);
+ else
+ startString="Ultracopier";
+ startString+=" - ";
+ if(mode==Ultracopier::Copy)
+ this->setWindowTitle(startString+facilityEngine->translateText("Copy")+" ("+speedString+")");
+ else
+ this->setWindowTitle(startString+facilityEngine->translateText("Move")+" ("+speedString+")");
}
-void InterfacePlugin::haveExternalOrder()
+void Themes::haveExternalOrder()
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
// ui->moreButton->toggle();
}
-void InterfacePlugin::isInPause(bool isInPause)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"isInPause: "+QString::number(isInPause));
- //resume in auto the pause
- storeIsInPause=isInPause;
- if(isInPause)
- ui->pauseButton->setText(facilityEngine->translateText("Resume"));
- else
- ui->pauseButton->setText(facilityEngine->translateText("Pause"));
-}
-
-void InterfacePlugin::updateCurrentFileInformation()
-{
- TransferModel::currentTransfertItem transfertItem=transferModel.getCurrentTransfertItem();
- if(transfertItem.haveItem)
- {
- ui->from->setText(transfertItem.from);
- //commented because not displayed on this interface
- //ui->to->setText(transfertItem.to);
- //ui->current_file->setText(transfertItem.current_file);
- if(transfertItem.progressBar_file!=-1)
- {
- ui->progressBar_file->setRange(0,65535);
- ui->progressBar_file->setValue(transfertItem.progressBar_file);
- }
- else
- ui->progressBar_file->setRange(0,0);
- }
- else
- {
- ui->from->setText("");
- //commented because not displayed on this interface
- //ui->to->setText("");
- //ui->current_file->setText("-");
- if(haveStarted && transferModel.rowCount()==0)
- ui->progressBar_file->setValue(65535);
- else if(!haveStarted)
- ui->progressBar_file->setValue(0);
- }
+void Themes::isInPause(const bool &isInPause)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"isInPause: "+QString::number(isInPause));
+ //resume in auto the pause
+ storeIsInPause=isInPause;
+ if(isInPause)
+ ui->pauseButton->setText(facilityEngine->translateText("Resume"));
+ else
+ ui->pauseButton->setText(facilityEngine->translateText("Pause"));
+}
+
+void Themes::updateCurrentFileInformation()
+{
+ TransferModel::currentTransfertItem transfertItem=transferModel.getCurrentTransfertItem();
+ if(transfertItem.haveItem)
+ {
+ ui->from->setText(transfertItem.from);
+ //commented because not displayed on this interface
+ //ui->to->setText(transfertItem.to);
+ //ui->current_file->setText(transfertItem.current_file);
+ if(transfertItem.progressBar_read!=-1)
+ {
+ ui->progressBar_file->setRange(0,65535);
+ 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())
+ );
+ ui->progressBar_file->setValue(transfertItem.progressBar_write);
+ }
+ else
+ ui->progressBar_file->setRange(0,0);
+ }
+ else
+ {
+ ui->from->setText("");
+ //commented because not displayed on this interface
+ //ui->to->setText("");
+ //ui->current_file->setText("-");
+ if(haveStarted && transferModel.rowCount()==0)
+ ui->progressBar_file->setValue(65535);
+ else if(!haveStarted)
+ ui->progressBar_file->setValue(0);
+ }
}
-void InterfacePlugin::on_cancelButton_clicked()
+void Themes::on_cancelButton_clicked()
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- this->hide();
- emit cancel();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ this->hide();
+ emit cancel();
}
-void InterfacePlugin::on_pauseButton_clicked()
+void Themes::on_pauseButton_clicked()
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- if(storeIsInPause)
- emit resume();
- else
- emit pause();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ if(storeIsInPause)
+ emit resume();
+ else
+ emit pause();
}
-void InterfacePlugin::on_skipButton_clicked()
+void Themes::on_skipButton_clicked()
{
- TransferModel::currentTransfertItem transfertItem=transferModel.getCurrentTransfertItem();
- if(transfertItem.haveItem)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("skip at running: %1").arg(transfertItem.id));
- emit skip(transfertItem.id);
- }
- else
- {
- if(transferModel.rowCount()>1)
- {
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,QString("skip at idle: %1").arg(transferModel.firstId()));
- emit skip(transferModel.firstId());
- }
- else
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Critical,"unable to skip the transfer, because no transfer running");
- }
+ TransferModel::currentTransfertItem transfertItem=transferModel.getCurrentTransfertItem();
+ if(transfertItem.haveItem)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("skip at running: %1").arg(transfertItem.id));
+ emit skip(transfertItem.id);
+ }
+ else
+ {
+ if(transferModel.rowCount()>1)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("skip at idle: %1").arg(transferModel.firstId()));
+ emit skip(transferModel.firstId());
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to skip the transfer, because no transfer running");
+ }
}
-void InterfacePlugin::updateModeAndType()
+void Themes::updateModeAndType()
{
- menu.clear();
- if(modeIsForced)
- {
- menu.addAction(ui->actionAddFile);
- if(type==FileAndFolder)
- menu.addAction(ui->actionAddFolder);
- }
- else
- {
- menu.addAction(ui->actionAddFileToCopy);
- menu.addAction(ui->actionAddFileToMove);
- if(type==FileAndFolder)
- {
- menu.addAction(ui->actionAddFolderToCopy);
- menu.addAction(ui->actionAddFolderToMove);
- }
- }
+ 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 InterfacePlugin::forcedModeAddFile()
+void Themes::forcedModeAddFile()
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- emit userAddFile(mode);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit userAddFile(mode);
}
-void InterfacePlugin::forcedModeAddFolder()
+void Themes::forcedModeAddFolder()
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- emit userAddFolder(mode);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit userAddFolder(mode);
}
-void InterfacePlugin::forcedModeAddFileToCopy()
+void Themes::forcedModeAddFileToCopy()
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- emit userAddFile(Copy);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit userAddFile(Ultracopier::Copy);
}
-void InterfacePlugin::forcedModeAddFolderToCopy()
+void Themes::forcedModeAddFolderToCopy()
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- emit userAddFolder(Copy);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit userAddFolder(Ultracopier::Copy);
}
-void InterfacePlugin::forcedModeAddFileToMove()
+void Themes::forcedModeAddFileToMove()
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- emit userAddFile(Move);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit userAddFile(Ultracopier::Move);
}
-void InterfacePlugin::forcedModeAddFolderToMove()
+void Themes::forcedModeAddFolderToMove()
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- emit userAddFolder(Move);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ emit userAddFolder(Ultracopier::Move);
}
//set the translate
-void InterfacePlugin::newLanguageLoaded()
+void Themes::newLanguageLoaded()
{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start");
- if(modeIsForced)
- forceCopyMode(mode);
- ui->retranslateUi(this);
- if(haveStarted)
- updateCurrentFileInformation();
- updateOverallInformation();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
+ if(modeIsForced)
+ forceCopyMode(mode);
+ ui->retranslateUi(this);
+ if(haveStarted)
+ updateCurrentFileInformation();
+ updateOverallInformation();
}
/*
@@ -378,68 +433,68 @@ void InterfacePlugin::newLanguageLoaded()
Return[1]: totalSize
Return[2]: currentFile
*/
-void InterfacePlugin::getActionOnList(const QList<returnActionOnCopyList>& returnActions)
-{
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"start, returnActions.size(): "+QString::number(returnActions.size()));
- QList<quint64> returnValue=transferModel.synchronizeItems(returnActions);
- totalFile+=returnValue[0];
- totalSize+=returnValue[1];
- currentFile+=returnValue[2];
- if(transferModel.rowCount()==0)
- {
- ui->skipButton->setEnabled(false);
- ui->progressBar_all->setValue(65535);
- ui->progressBar_file->setValue(65535);
- currentSize=totalSize;
- }
- else
- ui->skipButton->setEnabled(true);
- updateOverallInformation();
- ULTRACOPIER_DEBUGCONSOLE(DebugLevel_Notice,"transferModel.rowCount(): "+QString::number(transferModel.rowCount()));
-}
-
-void InterfacePlugin::setFileProgression(const QList<ProgressionItem> &progressionList)
-{
- QList<ProgressionItem> progressionListBis=progressionList;
- transferModel.setFileProgression(progressionListBis);
- updateCurrentFileInformation();
-}
-
-InterfacePlugin::currentTransfertItem InterfacePlugin::getCurrentTransfertItem()
-{
- currentTransfertItem returnItem;
- returnItem.haveItem=InternalRunningOperation.size()>0;
- if(returnItem.haveItem)
- {
- const ItemOfCopyListWithMoreInformations &itemTransfer=InternalRunningOperation.first();
- returnItem.from=itemTransfer.generalData.sourceFullPath;
- returnItem.to=itemTransfer.generalData.destinationFullPath;
- returnItem.current_file=itemTransfer.generalData.destinationFileName+", "+facilityEngine->sizeToString(itemTransfer.generalData.size);
- switch(itemTransfer.actionType)
- {
- case CustomOperation:
- if(!itemTransfer.custom_with_progression)
- returnItem.progressBar_file=0;
- else
- {
- if(itemTransfer.generalData.size>0)
- returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
- else
- returnItem.progressBar_file=0;
- }
- break;
- case Transfer:
- if(itemTransfer.generalData.size>0)
- returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
- else
- returnItem.progressBar_file=0;
- break;
- case PostOperation:
- returnItem.progressBar_file=65535;
- break;
- default:
- returnItem.progressBar_file=0;
- }
- }
- return returnItem;
+void Themes::getActionOnList(const QList<Ultracopier::ReturnActionOnCopyList>& returnActions)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start, returnActions.size(): "+QString::number(returnActions.size()));
+ QList<quint64> returnValue=transferModel.synchronizeItems(returnActions);
+ totalFile+=returnValue[0];
+ totalSize+=returnValue[1];
+ currentFile+=returnValue[2];
+ if(transferModel.rowCount()==0)
+ {
+ ui->skipButton->setEnabled(false);
+ ui->progressBar_all->setValue(65535);
+ ui->progressBar_file->setValue(65535);
+ currentSize=totalSize;
+ }
+ else
+ ui->skipButton->setEnabled(true);
+ updateOverallInformation();
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"transferModel.rowCount(): "+QString::number(transferModel.rowCount()));
+}
+
+void Themes::setFileProgression(const QList<Ultracopier::ProgressionItem> &progressionList)
+{
+ QList<Ultracopier::ProgressionItem> progressionListBis=progressionList;
+ transferModel.setFileProgression(progressionListBis);
+ updateCurrentFileInformation();
+}
+
+Themes::currentTransfertItem Themes::getCurrentTransfertItem()
+{
+ currentTransfertItem returnItem;
+ returnItem.haveItem=InternalRunningOperation.size()>0;
+ if(returnItem.haveItem)
+ {
+ const ItemOfCopyListWithMoreInformations &itemTransfer=InternalRunningOperation.first();
+ returnItem.from=itemTransfer.generalData.sourceFullPath;
+ returnItem.to=itemTransfer.generalData.destinationFullPath;
+ returnItem.current_file=itemTransfer.generalData.destinationFileName+", "+facilityEngine->sizeToString(itemTransfer.generalData.size);
+ switch(itemTransfer.actionType)
+ {
+ case Ultracopier::CustomOperation:
+ if(!itemTransfer.custom_with_progression)
+ returnItem.progressBar_file=0;
+ else
+ {
+ if(itemTransfer.generalData.size>0)
+ returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
+ else
+ returnItem.progressBar_file=0;
+ }
+ break;
+ case Ultracopier::Transfer:
+ if(itemTransfer.generalData.size>0)
+ returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
+ else
+ returnItem.progressBar_file=0;
+ break;
+ case Ultracopier::PostOperation:
+ returnItem.progressBar_file=65535;
+ break;
+ default:
+ returnItem.progressBar_file=0;
+ }
+ }
+ return returnItem;
}
diff --git a/plugins-alternative/Themes/Teracopy/interface.h b/plugins-alternative/Themes/Teracopy/interface.h
index 899a03b..b2f6a70 100644
--- a/plugins-alternative/Themes/Teracopy/interface.h
+++ b/plugins-alternative/Themes/Teracopy/interface.h
@@ -1,16 +1,16 @@
/** \file interface.h
\brief Define the interface test
\author alpha_one_x86
-\version 0.3
-\date 2010 */
+\licence GPL3, see the file COPYING */
-#ifndef INTERFACE_TEST_H
-#define INTERFACE_TEST_H
+#ifndef INTERFACE_H
+#define INTERFACE_H
#include <QObject>
#include <QWidget>
#include <QCloseEvent>
#include <QMenu>
+#include <QColor>
#include "../../../interface/PluginInterface_Themes.h"
@@ -19,151 +19,158 @@
#include "TransferModel.h"
namespace Ui {
- class interfaceCopy;
+ class interfaceCopy;
}
/// \brief Define the interface
-class InterfacePlugin : public PluginInterface_Themes
+class Themes : public PluginInterface_Themes
{
- Q_OBJECT
+ Q_OBJECT
private:
- struct ItemOfCopyListWithMoreInformations
- {
- quint64 currentProgression;
- ItemOfCopyList generalData;
- ActionTypeCopyList actionType;
- bool custom_with_progression;
- };
- struct currentTransfertItem
- {
- quint64 id;
- bool haveItem;
- QString from;
- QString to;
- QString current_file;
- int progressBar_file;
- };
- Ui::interfaceCopy *ui;
- quint64 currentFile;
- quint64 totalFile;
- quint64 currentSize;
- quint64 totalSize;
- void updateOverallInformation();
- void updateCurrentFileInformation();
- EngineActionInProgress action;
- void closeEvent(QCloseEvent *event);
- QList<ItemOfCopyListWithMoreInformations> currentProgressList;
- QString speedString;
- bool storeIsInPause;
- bool modeIsForced;
- CopyType type;
- CopyMode mode;
- void updateModeAndType();
- bool haveStarted;
- QWidget optionEngineWidget;
- void updateTitle();
- QMenu menu;
- FacilityInterface * facilityEngine;
- int loop_size,loop_sub_size,indexAction,index;
- int index_for_loop,sub_loop_size,sub_index_for_loop;
- currentTransfertItem getCurrentTransfertItem();
- QList<quint64> startId,stopId;///< To show what is started, what is stopped
- QList<ItemOfCopyListWithMoreInformations> InternalRunningOperation;///< to have progression and stat
- /// \brief the custom transfer model
- TransferModel transferModel;
+ struct ItemOfCopyListWithMoreInformations
+ {
+ quint64 currentProgression;
+ Ultracopier::ItemOfCopyList generalData;
+ Ultracopier::ActionTypeCopyList actionType;
+ bool custom_with_progression;
+ };
+ struct currentTransfertItem
+ {
+ quint64 id;
+ bool haveItem;
+ QString from;
+ QString to;
+ QString current_file;
+ int progressBar_file;
+ };
+ Ui::interfaceCopy *ui;
+ quint64 currentFile;
+ quint64 totalFile;
+ quint64 currentSize;
+ quint64 totalSize;
+ void updateOverallInformation();
+ void updateCurrentFileInformation();
+ Ultracopier::EngineActionInProgress action;
+ void closeEvent(QCloseEvent *event);
+ QList<ItemOfCopyListWithMoreInformations> currentProgressList;
+ QString speedString;
+ bool storeIsInPause;
+ bool modeIsForced;
+ Ultracopier::CopyType type;
+ Ultracopier::CopyMode mode;
+ void updateModeAndType();
+ bool haveStarted;
+ QWidget optionEngineWidget;
+ void updateTitle();
+ QMenu menu;
+ FacilityInterface * facilityEngine;
+ int loop_size,loop_sub_size,indexAction,index;
+ int index_for_loop,sub_loop_size,sub_index_for_loop;
+ currentTransfertItem getCurrentTransfertItem();
+ QList<quint64> startId,stopId;///< To show what is started, what is stopped
+ QList<ItemOfCopyListWithMoreInformations> InternalRunningOperation;///< to have progression and stat
+ /// \brief the custom transfer model
+ TransferModel transferModel;
+ QColor progressColorWrite;
+ QColor progressColorRead;
+ QColor progressColorRemaining;
public:
- //send information about the copy
- /// \brief to set the action in progress
- void actionInProgess(EngineActionInProgress);
- /// \brief new transfer have started
- void newTransferStart(const ItemOfCopyList &item);
- /** \brief one transfer have been stopped
- * is stopped, example: because error have occurred, and try later, don't remove the item! */
- void newTransferStop(const quint64 &id);
- /// \brief the new folder is listing
- void newFolderListing(const QString &path);
- /** \brief show the detected speed
- * in byte per seconds */
- void detectedSpeed(const quint64 &speed);
- /** \brief show the remaining time
- * time in seconds */
- void remainingTime(const int &remainingSeconds);
- /// \brief set the current collision action
- void newCollisionAction(const QString &action);
- /// \brief set the current error action
- void newErrorAction(const QString &action);
- /// \brief set one error is detected
- void errorDetected();
- //speed limitation
- /** \brief the max speed used
- * in byte per seconds, -1 if not able, 0 if disabled */
- bool setSpeedLimitation(const qint64 &speedLimitation);
- InterfacePlugin(FacilityInterface * facilityEngine);
- ~InterfacePlugin();
- //get information about the copy
- /// \brief show the general progression
- void setGeneralProgression(const quint64 &current,const quint64 &total);
- /// \brief show the file progression
- void setFileProgression(const QList<ProgressionItem> &progressionList);
- /// \brief set collision action
- void setCollisionAction(const QList<QPair<QString,QString> > &);
- /// \brief set error action
- void setErrorAction(const QList<QPair<QString,QString> > &);
- /// \brief set the copyType -> file or folder
- void setCopyType(CopyType);
- /// \brief set the copyMove -> copy or move, to force in copy or move, else support both
- void forceCopyMode(CopyMode);
- /// \brief set if transfer list is exportable/importable
- void setTransferListOperation(TransferListOperation transferListOperation);
- /** \brief set if the order is external (like file manager copy)
- * to notify the interface, which can hide add folder/filer button */
- void haveExternalOrder();
- /// \brief set if is in pause
- void isInPause(bool);
- /// \brief get the widget for the copy engine
- QWidget * getOptionsEngineWidget();
- /// \brief to set if the copy engine is found
- void getOptionsEngineEnabled(bool isEnabled);
+ //send information about the copy
+ /// \brief to set the action in progress
+ void actionInProgess(const Ultracopier::EngineActionInProgress &);
+ /// \brief new transfer have started
+ void newTransferStart(const Ultracopier::ItemOfCopyList &item);
+ /** \brief one transfer have been stopped
+ * is stopped, example: because error have occurred, and try later, don't remove the item! */
+ void newTransferStop(const quint64 &id);
+ /// \brief the new folder is listing
+ void newFolderListing(const QString &path);
+ /** \brief show the detected speed
+ * in byte per seconds */
+ void detectedSpeed(const quint64 &speed);
+ /** \brief support speed limitation */
+ void setSupportSpeedLimitation(const bool &supportSpeedLimitationBool);
+ /** \brief show the remaining time
+ * time in seconds */
+ void remainingTime(const int &remainingSeconds);
+ /// \brief set the current collision action
+ void newCollisionAction(const QString &action);
+ /// \brief set the current error action
+ void newErrorAction(const QString &action);
+ /// \brief set one error is detected
+ void errorDetected();
+ /// \brief new error
+ void errorToRetry(const QString &source,const QString &destination,const QString &error);
+ //speed limitation
+ /** \brief the max speed used
+ * in byte per seconds, -1 if not able, 0 if disabled */
+ bool setSpeedLimitation(const qint64 &speedLimitation);
+ Themes(FacilityInterface * facilityEngine);
+ ~Themes();
+ //get information about the copy
+ /// \brief show the general progression
+ void setGeneralProgression(const quint64 &current,const quint64 &total);
+ /// \brief show the file progression
+ void setFileProgression(const QList<Ultracopier::ProgressionItem> &progressionList);
+ /// \brief set collision action
+ void setCollisionAction(const QList<QPair<QString,QString> > &);
+ /// \brief set error action
+ void setErrorAction(const QList<QPair<QString,QString> > &);
+ /// \brief set the copyType -> file or folder
+ void setCopyType(const Ultracopier::CopyType &);
+ /// \brief set the copyMove -> copy or move, to force in copy or move, else support both
+ void forceCopyMode(const Ultracopier::CopyMode &);
+ /// \brief set if transfer list is exportable/importable
+ void setTransferListOperation(const Ultracopier::TransferListOperation &transferListOperation);
+ /** \brief set if the order is external (like file manager copy)
+ * to notify the interface, which can hide add folder/filer button */
+ void haveExternalOrder();
+ /// \brief set if is in pause
+ void isInPause(const bool &);
+ /// \brief get the widget for the copy engine
+ QWidget * getOptionsEngineWidget();
+ /// \brief to set if the copy engine is found
+ void getOptionsEngineEnabled(const bool &isEnabled);
private slots:
- void on_cancelButton_clicked();
- void on_pauseButton_clicked();
- void on_skipButton_clicked();
- void forcedModeAddFile();
- void forcedModeAddFolder();
- void forcedModeAddFileToCopy();
- void forcedModeAddFolderToCopy();
- void forcedModeAddFileToMove();
- void forcedModeAddFolderToMove();
+ void on_cancelButton_clicked();
+ void on_pauseButton_clicked();
+ void on_skipButton_clicked();
+ void forcedModeAddFile();
+ void forcedModeAddFolder();
+ void forcedModeAddFileToCopy();
+ void forcedModeAddFolderToCopy();
+ void forcedModeAddFileToMove();
+ void forcedModeAddFolderToMove();
signals:
- #ifdef ULTRACOPIER_PLUGIN_DEBUG
- /// \brief To debug source
- void debugInformation(DebugLevel level,QString fonction,QString text,QString file,int ligne);
- #endif
- //set the transfer list
- void removeItems(QList<int> ids);
- void moveItemsOnTop(QList<int> ids);
- void moveItemsUp(QList<int> ids);
- void moveItemsDown(QList<int> ids);
- void moveItemsOnBottom(QList<int> ids);
- void exportTransferList();
- void importTransferList();
- //user ask ask to add folder (add it with interface ask source/destination)
- void userAddFolder(CopyMode);
- void userAddFile(CopyMode);
- void urlDropped(QList<QUrl> urls);
- //action on the copy
- void pause();
- void resume();
- void skip(quint64 id);
- void cancel();
- //edit the action
- void sendCollisionAction(QString action);
- void sendErrorAction(QString action);
- void newSpeedLimitation(qint64);
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,const QString &fonction,const QString &text,const QString &file,const int &ligne);
+ #endif
+ //set the transfer list
+ /*void removeItems(QList<int> ids);
+ void moveItemsOnTop(QList<int> ids);
+ void moveItemsUp(QList<int> ids);
+ void moveItemsDown(QList<int> ids);
+ void moveItemsOnBottom(QList<int> ids);
+ void exportTransferList();
+ void importTransferList();
+ //user ask ask to add folder (add it with interface ask source/destination)
+ void userAddFolder(Ultracopier::CopyMode);
+ void userAddFile(Ultracopier::CopyMode);
+ void urlDropped(QList<QUrl> urls);
+ //action on the copy
+ void pause();
+ void resume();
+ void skip(quint64 id);
+ void cancel();
+ //edit the action
+ void sendCollisionAction(QString action);
+ void sendErrorAction(QString action);
+ void newSpeedLimitation(qint64);*/
public slots:
- //set the translate
- void newLanguageLoaded();
- void getActionOnList(const QList<returnActionOnCopyList>& returnActions);
+ //set the translate
+ void newLanguageLoaded();
+ void getActionOnList(const QList<Ultracopier::ReturnActionOnCopyList>& returnActions);
};
-#endif // INTERFACE_TEST_H
+#endif // INTERFACE_H
diff --git a/plugins-alternative/Themes/Teracopy/interface.pro b/plugins-alternative/Themes/Teracopy/interface.pro
index 4cecacb..5049e19 100644
--- a/plugins-alternative/Themes/Teracopy/interface.pro
+++ b/plugins-alternative/Themes/Teracopy/interface.pro
@@ -1,8 +1,12 @@
+CONFIG += c++11
+QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
+mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
+
+QT += widgets
TEMPLATE = lib
CONFIG += plugin
HEADERS = interface.h \
- interface/PluginInterface_Themes.h \
- StructEnumDefinition.h \
+ StructEnumDefinition.h \
factory.h \
DebugEngineMacro.h \
Environment.h \
@@ -13,24 +17,25 @@ SOURCES = interface.cpp \
factory.cpp \
TransferModel.cpp
TARGET = $$qtLibraryTarget(interface)
-TRANSLATIONS += Languages/fr/translation.ts \
- Languages/ar/translation.ts \
- Languages/zh/translation.ts \
- Languages/es/translation.ts \
+TRANSLATIONS += Languages/ar/translation.ts \
Languages/de/translation.ts \
Languages/el/translation.ts \
+ Languages/en/translation.ts \
+ Languages/es/translation.ts \
+ Languages/fr/translation.ts \
+ Languages/hi/translation.ts \
+ Languages/hu/translation.ts \
+ Languages/id/translation.ts \
Languages/it/translation.ts \
Languages/ja/translation.ts \
- Languages/id/translation.ts \
+ Languages/ko/translation.ts \
+ Languages/nl/translation.ts \
+ Languages/no/translation.ts \
Languages/pl/translation.ts \
Languages/ru/translation.ts \
- Languages/tr/translation.ts \
Languages/th/translation.ts \
- Languages/hi/translation.ts \
- Languages/nl/translation.ts \
- Languages/no/translation.ts \
- Languages/pt/translation.ts \
- Languages/ko/translation.ts
+ Languages/tr/translation.ts \
+ Languages/zh/translation.ts
RESOURCES += resources.qrc
diff --git a/plugins-alternative/Themes/Teracopy/interface.ui b/plugins-alternative/Themes/Teracopy/interface.ui
index 1bccf44..a5274b3 100644
--- a/plugins-alternative/Themes/Teracopy/interface.ui
+++ b/plugins-alternative/Themes/Teracopy/interface.ui
@@ -27,7 +27,7 @@
</property>
<property name="windowIcon">
<iconset resource="resources.qrc">
- <normaloff>:/resources/main.png</normaloff>:/resources/main.png</iconset>
+ <normaloff>:/Themes/Teracopy/resources/main.png</normaloff>:/Themes/Teracopy/resources/main.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
@@ -302,7 +302,7 @@ p, li { white-space: pre-wrap; }
<action name="actionAddFile">
<property name="icon">
<iconset>
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
+ <normaloff>:/Themes/Teracopy/resources/add.png</normaloff>:/Themes/Teracopy/resources/add.png</iconset>
</property>
<property name="text">
<string>Add file</string>
@@ -311,7 +311,7 @@ p, li { white-space: pre-wrap; }
<action name="actionAddFolder">
<property name="icon">
<iconset>
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
+ <normaloff>:/Themes/Teracopy/resources/add.png</normaloff>:/Themes/Teracopy/resources/add.png</iconset>
</property>
<property name="text">
<string>Add folder</string>
@@ -320,7 +320,7 @@ p, li { white-space: pre-wrap; }
<action name="actionAddFileToMove">
<property name="icon">
<iconset>
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
+ <normaloff>:/Themes/Teracopy/resources/add.png</normaloff>:/Themes/Teracopy/resources/add.png</iconset>
</property>
<property name="text">
<string>Move file(s)</string>
@@ -329,7 +329,7 @@ p, li { white-space: pre-wrap; }
<action name="actionAddFolderToMove">
<property name="icon">
<iconset>
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
+ <normaloff>:/Themes/Teracopy/resources/add.png</normaloff>:/Themes/Teracopy/resources/add.png</iconset>
</property>
<property name="text">
<string>Move folder</string>
@@ -338,7 +338,7 @@ p, li { white-space: pre-wrap; }
<action name="actionAddFileToCopy">
<property name="icon">
<iconset>
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
+ <normaloff>:/Themes/Teracopy/resources/add.png</normaloff>:/Themes/Teracopy/resources/add.png</iconset>
</property>
<property name="text">
<string>Copy file(s)</string>
@@ -347,7 +347,7 @@ p, li { white-space: pre-wrap; }
<action name="actionAddFolderToCopy">
<property name="icon">
<iconset>
- <normaloff>:/resources/add.png</normaloff>:/resources/add.png</iconset>
+ <normaloff>:/Themes/Teracopy/resources/add.png</normaloff>:/Themes/Teracopy/resources/add.png</iconset>
</property>
<property name="text">
<string>Copy folder</string>
diff --git a/plugins-alternative/Themes/Teracopy/plugin.json b/plugins-alternative/Themes/Teracopy/plugin.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/plugins-alternative/Themes/Teracopy/plugin.json
@@ -0,0 +1 @@
+{} \ No newline at end of file
diff --git a/plugins-alternative/Themes/Teracopy/resources.qrc b/plugins-alternative/Themes/Teracopy/resources.qrc
index 7f9a82c..39105a8 100644
--- a/plugins-alternative/Themes/Teracopy/resources.qrc
+++ b/plugins-alternative/Themes/Teracopy/resources.qrc
@@ -1,5 +1,5 @@
<RCC>
- <qresource prefix="/">
+ <qresource prefix="/Themes/Teracopy">
<file>resources/SystemTrayIcon/add.png</file>
<file>resources/SystemTrayIcon/exit.png</file>
<file>resources/SystemTrayIcon/informations.png</file>
diff --git a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/add.png b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/add.png
index 1e03be9..7932127 100644
--- a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/add.png
+++ b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/add.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/exit.png b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/exit.png
index 201353e..ae3c4e8 100644
--- a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/exit.png
+++ b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/exit.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/informations.png b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/informations.png
index e1eb797..5b7b255 100644
--- a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/informations.png
+++ b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/informations.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/options.png b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/options.png
index d35365c..23ec531 100644
--- a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/options.png
+++ b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/options.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Caught_Unix.png b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Caught_Unix.png
index a81e70d..6f5d1cf 100644
--- a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Caught_Unix.png
+++ b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Caught_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Caught_Windows.png b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Caught_Windows.png
index 8072aea..5464856 100644
--- a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Caught_Windows.png
+++ b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Caught_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
index f40ea82..3961215 100644
--- a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
+++ b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
index 8d673e4..45d6315 100644
--- a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
+++ b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Uncaught_Unix.png b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Uncaught_Unix.png
index 9ce4779..ac4299a 100644
--- a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Uncaught_Unix.png
+++ b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Uncaught_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Uncaught_Windows.png b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Uncaught_Windows.png
index d0fca1b..6e6bae7 100644
--- a/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Uncaught_Windows.png
+++ b/plugins-alternative/Themes/Teracopy/resources/SystemTrayIcon/systray_Uncaught_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources/checkbox.png b/plugins-alternative/Themes/Teracopy/resources/checkbox.png
index 1c311e2..f7f4388 100644
--- a/plugins-alternative/Themes/Teracopy/resources/checkbox.png
+++ b/plugins-alternative/Themes/Teracopy/resources/checkbox.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources/main.png b/plugins-alternative/Themes/Teracopy/resources/main.png
index 8072aea..5464856 100644
--- a/plugins-alternative/Themes/Teracopy/resources/main.png
+++ b/plugins-alternative/Themes/Teracopy/resources/main.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources/player_pause.png b/plugins-alternative/Themes/Teracopy/resources/player_pause.png
index a9b3113..68ee21f 100644
--- a/plugins-alternative/Themes/Teracopy/resources/player_pause.png
+++ b/plugins-alternative/Themes/Teracopy/resources/player_pause.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources/player_play.png b/plugins-alternative/Themes/Teracopy/resources/player_play.png
index 80ff3a1..a1c5b83 100644
--- a/plugins-alternative/Themes/Teracopy/resources/player_play.png
+++ b/plugins-alternative/Themes/Teracopy/resources/player_play.png
Binary files differ
diff --git a/plugins-alternative/Themes/Teracopy/resources_unix.qrc b/plugins-alternative/Themes/Teracopy/resources_unix.qrc
index ae3894b..46e3020 100644
--- a/plugins-alternative/Themes/Teracopy/resources_unix.qrc
+++ b/plugins-alternative/Themes/Teracopy/resources_unix.qrc
@@ -1,6 +1,6 @@
<RCC>
- <qresource prefix="/">
- <file>resources/SystemTrayIcon/systray_Caught_Unix.png</file>
+ <qresource prefix="/Themes/Teracopy">
+ <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>
diff --git a/plugins-alternative/Themes/Teracopy/resources_windows.qrc b/plugins-alternative/Themes/Teracopy/resources_windows.qrc
index 99829b3..165123a 100644
--- a/plugins-alternative/Themes/Teracopy/resources_windows.qrc
+++ b/plugins-alternative/Themes/Teracopy/resources_windows.qrc
@@ -1,5 +1,5 @@
<RCC>
- <qresource prefix="/">
+ <qresource prefix="/Themes/Teracopy">
<file>resources/SystemTrayIcon/systray_Caught_Windows.png</file>
<file>resources/SystemTrayIcon/systray_Semiuncaught_Windows.png</file>
<file>resources/SystemTrayIcon/systray_Uncaught_Windows.png</file>
diff --git a/plugins-alternative/Themes/Windows/DebugEngineMacro.h b/plugins-alternative/Themes/Windows/DebugEngineMacro.h
new file mode 100644
index 0000000..4582010
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/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-alternative/Themes/Windows/Environment.h b/plugins-alternative/Themes/Windows/Environment.h
new file mode 100644
index 0000000..265a5a6
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/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-alternative/Themes/Windows/Languages/ar/translation.ts b/plugins-alternative/Themes/Windows/Languages/ar/translation.ts
new file mode 100644
index 0000000..fe6d20c
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/ar/translation.ts
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/de/translation.ts b/plugins-alternative/Themes/Windows/Languages/de/translation.ts
new file mode 100644
index 0000000..7657f03
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/de/translation.ts
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="de" sourcelanguage="en">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation>Verbleibende Zeit unbekannt</translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation>
+ <numerusform>Übertrage %n Element (%2)</numerusform>
+ <numerusform>Übertrage %n Elemente (%2)</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation>
+ <numerusform>Kopiere %n Element (%2)</numerusform>
+ <numerusform>Kopiere %n Elemente (%2)</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation>
+ <numerusform>Verschiebe %n Element (%2)</numerusform>
+ <numerusform>Verschiebe %n Elemente (%2)</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation>von &lt;b&gt;%1&lt;/b&gt; (%2) bis &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation>Warten...</translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation>Name:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation>Von:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation>Nach:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation>verbleibende Zeit:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation>verbleibende Elemente:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation>Geschwindigkeit:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation>Mehr Informationen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation>Abbrechen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation>Datei hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation>Ordner hinzufügen</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation>Datei (en) verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation>Ordner verschieben</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation>Datei (en) kopieren</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation>Ordner kopieren</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/el/translation.ts b/plugins-alternative/Themes/Windows/Languages/el/translation.ts
new file mode 100644
index 0000000..fe6d20c
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/el/translation.ts
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/en/translation.ts b/plugins-alternative/Themes/Windows/Languages/en/translation.ts
new file mode 100644
index 0000000..27cfd09
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/en/translation.ts
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation>
+ <numerusform>Transferring %n item (%2)</numerusform>
+ <numerusform>Transferring %n items (%2)</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation>
+ <numerusform>Copying %n item (%2)</numerusform>
+ <numerusform>Copying %n items (%2)</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation>
+ <numerusform>Moving %n item (%2)</numerusform>
+ <numerusform>Moving %n items (%2)</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/es/translation.ts b/plugins-alternative/Themes/Windows/Languages/es/translation.ts
new file mode 100644
index 0000000..cc4de8a
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/es/translation.ts
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="es" sourcelanguage="en">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished">desde &lt;b&gt;%1&lt;/b&gt; (%2) hasta &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished">En espera</translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation>Nombre:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation>Desde:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation>Hasta:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation>Tiempo restante:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation>Items restantes:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation>Velocidad:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation>Más información</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation>Cancelar</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation>Añadir archivo</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation>Añadir carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation>Mover archivo(s)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation>Mueva la carpeta</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation>Copia el archivo(s)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation>Copia la carpeta</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/fr/translation.ts b/plugins-alternative/Themes/Windows/Languages/fr/translation.ts
new file mode 100644
index 0000000..7f99e83
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/fr/translation.ts
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr" sourcelanguage="en">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation>Temps restant inconnu</translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation>
+ <numerusform>Transfert de %n élément (%2)</numerusform>
+ <numerusform>Transfert de %n éléments (%2)</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation>
+ <numerusform>Copie de %n élément (%2)</numerusform>
+ <numerusform>Copie de %n éléments (%2)</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation>
+ <numerusform>Déplacement de %n élément (%2)</numerusform>
+ <numerusform>Déplacement de %n éléments (%2)</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation>depuis &lt;b&gt;%1&lt;/b&gt; (%2) vers &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation>En attente</translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation>Déplacer des fichiers</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation>Déplacer un dossier</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation>Copier des fichiers</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation>Copier un dossier</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation>Ajouter un dossier</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation>Nom:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation>Depuis:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation>Vers:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation>Temps restant:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation>Éléments restants:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation>Vitesse:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation>Plus d&apos;information</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation>Annuler</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation>Ajout de fichier</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/hi/translation.ts b/plugins-alternative/Themes/Windows/Languages/hi/translation.ts
new file mode 100644
index 0000000..fe6d20c
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/hi/translation.ts
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/hu/translation.ts b/plugins-alternative/Themes/Windows/Languages/hu/translation.ts
new file mode 100644
index 0000000..ef4bf6d
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/hu/translation.ts
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="hu">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation>Ismeretlen hátralévő idő</translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation>
+ <numerusform>%n elem áthelyezése(%2)</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation>
+ <numerusform>%n elem átmásolása(%2)</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation>
+ <numerusform>%n elem mozgatása(%2)</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation>&lt;b&gt;%1&lt;/b&gt; (%2) helyről-&gt; &lt;b&gt;%3&lt;/b&gt; (%4) helyre&lt;br /&gt;%5</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation>Várakozik</translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation>Név:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation>Forrás:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation>Cél:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation>Hátralévő idő:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation>Hátralévő elemek:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation>Sebesség:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation>Több információ</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation>Mégse</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation>Fájl hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation>Mappa hozzáadása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation>Fájl(ok) mozgatása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation>Mappa mozgatása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation>Fájl(ok) másolása</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation>Mappa másolása</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/id/translation.ts b/plugins-alternative/Themes/Windows/Languages/id/translation.ts
new file mode 100644
index 0000000..fe6d20c
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/id/translation.ts
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/it/translation.ts b/plugins-alternative/Themes/Windows/Languages/it/translation.ts
new file mode 100644
index 0000000..c3d5a73
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/it/translation.ts
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="it" sourcelanguage="en">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation>Tempo rediduo indeterminato</translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation>
+ <numerusform>Trasferimento di %n elemento (%2)</numerusform>
+ <numerusform>Trasferimento di %n elementi (%2)</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation>
+ <numerusform>Copia di %n elemento (%2)</numerusform>
+ <numerusform>Copia di %n elementi (%2)</numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation>
+ <numerusform>Spostamento di %n elemento (%2)</numerusform>
+ <numerusform>Spostamento di %n elementi (%2)</numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translatorcomment>Per esempio: da &lt;b&gt;Cartella di origine&lt;/b&gt; (e: precedente origine) to &lt;b&gt;Cartella di destinazione&lt;/b&gt; (d: destinazione desktop)&lt;br /&gt;Circa 5 ore rimanenti</translatorcomment>
+ <translation>da &lt;b&gt;%1&lt;/b&gt; (%2) a &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation>In attesa</translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation>Nome:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation>Da:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation>A:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation>Tempo residuo:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation>Elementi rimanenti:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation>Velocità:</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation>Maggiori informazioni</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation>Annulla</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation>Aggiungi file</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation>Aggiungi cartella</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation>Sposta file</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation>Sposta la cartella</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation>Copia file</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation>Copia la cartella</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/ja/translation.ts b/plugins-alternative/Themes/Windows/Languages/ja/translation.ts
new file mode 100644
index 0000000..fe6d20c
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/ja/translation.ts
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/ko/translation.ts b/plugins-alternative/Themes/Windows/Languages/ko/translation.ts
new file mode 100644
index 0000000..4d682a3
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/ko/translation.ts
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ko_KR">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="+204"/>
+ <location line="+188"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location line="-55"/>
+ <location line="+2"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location line="+7"/>
+ <location line="+2"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location line="+5"/>
+ <location line="+2"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location line="+48"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+9"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="+176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+10"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+65"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+40"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location line="+14"/>
+ <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>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/nl/translation.ts b/plugins-alternative/Themes/Windows/Languages/nl/translation.ts
new file mode 100644
index 0000000..fe6d20c
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/nl/translation.ts
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/no/translation.ts b/plugins-alternative/Themes/Windows/Languages/no/translation.ts
new file mode 100644
index 0000000..fe6d20c
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/no/translation.ts
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/pl/translation.ts b/plugins-alternative/Themes/Windows/Languages/pl/translation.ts
new file mode 100644
index 0000000..fe6d20c
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/pl/translation.ts
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/ru/translation.ts b/plugins-alternative/Themes/Windows/Languages/ru/translation.ts
new file mode 100644
index 0000000..02e9260
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/ru/translation.ts
@@ -0,0 +1,127 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ru" sourcelanguage="en">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation>Добавить файл</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation>Добавить папку</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation>Перемещение файла (ов)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation>Перемещение папки</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation>Копировать файл (ы)</translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation>Копировать папку</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/th/translation.ts b/plugins-alternative/Themes/Windows/Languages/th/translation.ts
new file mode 100644
index 0000000..fe6d20c
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/th/translation.ts
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/tr/translation.ts b/plugins-alternative/Themes/Windows/Languages/tr/translation.ts
new file mode 100644
index 0000000..fe6d20c
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/tr/translation.ts
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/Languages/zh/translation.ts b/plugins-alternative/Themes/Windows/Languages/zh/translation.ts
new file mode 100644
index 0000000..fe6d20c
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Languages/zh/translation.ts
@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0">
+<context>
+ <name>Themes</name>
+ <message>
+ <location filename="../../interface.cpp" line="204"/>
+ <location filename="../../interface.cpp" line="392"/>
+ <source>Unknown remaining time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="337"/>
+ <location filename="../../interface.cpp" line="339"/>
+ <source>Transferring %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="346"/>
+ <location filename="../../interface.cpp" line="348"/>
+ <source>Copying %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message numerus="yes">
+ <location filename="../../interface.cpp" line="353"/>
+ <location filename="../../interface.cpp" line="355"/>
+ <source>Moving %n item(s) (%2)</source>
+ <translation type="unfinished">
+ <numerusform></numerusform>
+ </translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="403"/>
+ <source>from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;%5</source>
+ <extracomment>Sample: from &lt;b&gt;sources&lt;/b&gt; (e:<byte value="xc"/>oldersource) to &lt;b&gt;destination&lt;/b&gt; (d:desktopdestination)&lt;br /&gt;About 5 Hours remaining</extracomment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.cpp" line="412"/>
+ <source>In waiting</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>interface</name>
+ <message>
+ <location filename="../../interface.ui" line="176"/>
+ <source>Name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="186"/>
+ <source>From:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="196"/>
+ <source>To:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="206"/>
+ <source>Time remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="216"/>
+ <source>Items remaining:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="226"/>
+ <source>Speed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="291"/>
+ <source>More information</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="331"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="345"/>
+ <source>Add file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="354"/>
+ <source>Add folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="363"/>
+ <source>Move file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="372"/>
+ <source>Move folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="381"/>
+ <source>Copy file(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../interface.ui" line="390"/>
+ <source>Copy folder</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins-alternative/Themes/Windows/StructEnumDefinition.h b/plugins-alternative/Themes/Windows/StructEnumDefinition.h
new file mode 100644
index 0000000..c1758f4
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/StructEnumDefinition.h
@@ -0,0 +1 @@
+#include "../../../StructEnumDefinition.h"
diff --git a/plugins-alternative/Themes/Windows/TransferModel.cpp b/plugins-alternative/Themes/Windows/TransferModel.cpp
new file mode 100644
index 0000000..7743266
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/TransferModel.cpp
@@ -0,0 +1,286 @@
+#include "TransferModel.h"
+
+#define COLUMN_COUNT 3
+
+// Model
+
+TransferModel::TransferModel()
+{
+ iconStart=QIcon(":/Themes/Windows/resources/player_play.png");
+ iconPause=QIcon(":/Themes/Windows/resources/player_pause.png");
+ iconStop=QIcon(":/Themes/Windows/resources/checkbox.png");
+ currentIndexSearch=0;
+ currentFile = 0;
+ totalFile = 0;
+ currentSize = 0;
+ totalSize = 0;
+ haveSearchItem=false;
+}
+
+int TransferModel::columnCount( const QModelIndex& parent ) const
+{
+ return parent == QModelIndex() ? COLUMN_COUNT : 0;
+}
+
+QVariant TransferModel::data( const QModelIndex& index, int role ) const
+{
+ Q_UNUSED(role);
+ Q_UNUSED(index);
+ return QVariant();
+}
+
+int TransferModel::rowCount( const QModelIndex& parent ) const
+{
+ Q_UNUSED(parent);
+ return 0;
+}
+
+QVariant TransferModel::headerData( int section, Qt::Orientation orientation, int role ) const
+{
+ if ( role == Qt::DisplayRole && orientation == Qt::Horizontal && section >= 0 && section < COLUMN_COUNT ) {
+ switch ( section ) {
+ case 0:
+ return facilityEngine->translateText("Source");
+ case 1:
+ return facilityEngine->translateText("Size");
+ case 2:
+ return facilityEngine->translateText("Destination");
+ }
+ }
+
+ return QAbstractTableModel::headerData( section, orientation, role );
+}
+
+bool TransferModel::setData( const QModelIndex& index, const QVariant& value, int role )
+{
+ Q_UNUSED(index);
+ Q_UNUSED(value);
+ Q_UNUSED(role);
+ return true;
+}
+
+/*
+ Return[0]: totalFile
+ Return[1]: totalSize
+ Return[2]: currentFile
+ */
+QList<quint64> TransferModel::synchronizeItems(const QList<Ultracopier::ReturnActionOnCopyList>& returnActions)
+{
+ loop_size=returnActions.size();
+ index_for_loop=0;
+ emit layoutAboutToBeChanged();
+ while(index_for_loop<loop_size)
+ {
+ const Ultracopier::ReturnActionOnCopyList& action=returnActions.at(index_for_loop);
+ switch(action.type)
+ {
+ case Ultracopier::AddingItem:
+ {
+ this->totalFile++;
+ this->totalSize+=action.addAction.size;
+ }
+ break;
+ case Ultracopier::RemoveItem:
+ internalRunningOperation.remove(action.addAction.id);
+ startId.remove(action.addAction.id);
+ stopId.remove(action.addAction.id);
+ this->currentFile++;
+ break;
+ case Ultracopier::PreOperation:
+ {
+ ItemOfCopyListWithMoreInformations tempItem;
+ tempItem.currentProgression=0;
+ tempItem.generalData=action.addAction;
+ tempItem.generalData.destinationFullPath.remove(tempItem.generalData.destinationFullPath.size()-tempItem.generalData.destinationFileName.size(),tempItem.generalData.destinationFileName.size());
+ tempItem.generalData.sourceFullPath.remove(tempItem.generalData.sourceFullPath.size()-tempItem.generalData.sourceFileName.size(),tempItem.generalData.sourceFileName.size());
+ tempItem.actionType=action.type;
+ internalRunningOperation[action.addAction.id]=tempItem;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("set for file %1: actionType: PreOperation").arg(action.addAction.id));
+ }
+ break;
+ case Ultracopier::Transfer:
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("found entry for file %1: actionType: Transfer").arg(action.addAction.id));
+ if(!startId.contains(action.addAction.id))
+ startId << action.addAction.id;
+ stopId.remove(action.addAction.id);
+ if(internalRunningOperation.contains(action.addAction.id))
+ 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));
+ }
+ break;
+ case Ultracopier::PostOperation:
+ {
+ if(!stopId.contains(action.addAction.id))
+ stopId << action.addAction.id;
+ startId.remove(action.addAction.id);
+ }
+ break;
+ case Ultracopier::CustomOperation:
+ {
+ bool custom_with_progression=(action.addAction.size==1);
+ //without progression
+ if(custom_with_progression)
+ {
+ if(startId.remove(action.addAction.id))
+ if(!stopId.contains(action.addAction.id))
+ stopId << action.addAction.id;
+ }
+ //with progression
+ else
+ {
+ stopId.remove(action.addAction.id);
+ if(!startId.contains(action.addAction.id))
+ startId << action.addAction.id;
+ }
+ if(internalRunningOperation.contains(action.addAction.id))
+ {
+ ItemOfCopyListWithMoreInformations &item=internalRunningOperation[action.addAction.id];
+ item.actionType=action.type;
+ item.custom_with_progression=custom_with_progression;
+ item.currentProgression=0;
+ }
+ }
+ break;
+ default:
+ //unknow code, ignore it
+ break;
+ }
+ index_for_loop++;
+ }
+ emit layoutChanged();
+ return QList<quint64>() << totalFile << totalSize << currentFile;
+}
+
+void TransferModel::setFacilityEngine(FacilityInterface * facilityEngine)
+{
+ this->facilityEngine=facilityEngine;
+}
+
+void TransferModel::setFileProgression(QList<Ultracopier::ProgressionItem> &progressionList)
+{
+ loop_size=progressionList.size();
+ index_for_loop=0;
+ while(index_for_loop<loop_size)
+ {
+ if(internalRunningOperation.contains(progressionList.at(index_for_loop).id))
+ {
+ internalRunningOperation[progressionList.at(index_for_loop).id].generalData.size=progressionList.at(index_for_loop).total;
+ internalRunningOperation[progressionList.at(index_for_loop).id].currentProgression=(progressionList.at(index_for_loop).currentRead+progressionList.at(index_for_loop).currentWrite)/2;
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ progressionList.removeAt(index_for_loop);
+ index_for_loop--;
+ loop_size--;
+ #endif
+ }
+ index_for_loop++;
+ }
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ if(progressionList.size()>0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"progression remaning items");
+ #endif
+}
+
+TransferModel::currentTransfertItem TransferModel::getCurrentTransfertItem()
+{
+ currentTransfertItem returnItem;
+ returnItem.haveItem=startId.size()>0;
+ if(returnItem.haveItem)
+ {
+ if(!internalRunningOperation.contains(*startId.constBegin()))
+ {
+ returnItem.haveItem=false;
+ return returnItem;
+ }
+ const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation[*startId.constBegin()];
+ returnItem.from=itemTransfer.generalData.sourceFullPath;
+ returnItem.to=itemTransfer.generalData.destinationFullPath;
+ returnItem.current_file=itemTransfer.generalData.destinationFileName;
+ returnItem.size=facilityEngine->sizeToString(itemTransfer.generalData.size);
+ switch(itemTransfer.actionType)
+ {
+ case Ultracopier::CustomOperation:
+ if(!itemTransfer.custom_with_progression)
+ returnItem.progressBar_file=-1;
+ else
+ {
+ if(itemTransfer.generalData.size>0)
+ returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
+ else
+ returnItem.progressBar_file=-1;
+ }
+ break;
+ case Ultracopier::Transfer:
+ if(itemTransfer.generalData.size>0)
+ returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
+ else
+ returnItem.progressBar_file=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));
+ returnItem.progressBar_file=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));
+ returnItem.progressBar_file=0;
+ break;
+ default:
+ returnItem.progressBar_file=0;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unknow action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType));
+ break;
+ }
+ }
+ else
+ {
+ if(!internalRunningOperation.contains(*stopId.constBegin()))
+ {
+ returnItem.haveItem=false;
+ return returnItem;
+ }
+ else
+ returnItem.haveItem=true;
+ const ItemOfCopyListWithMoreInformations &itemTransfer=internalRunningOperation[*stopId.constBegin()];
+ returnItem.from=itemTransfer.generalData.sourceFullPath;
+ returnItem.to=itemTransfer.generalData.destinationFullPath;
+ returnItem.current_file=itemTransfer.generalData.destinationFileName;
+ returnItem.size=facilityEngine->sizeToString(itemTransfer.generalData.size);
+ switch(itemTransfer.actionType)
+ {
+ case Ultracopier::CustomOperation:
+ if(!itemTransfer.custom_with_progression)
+ returnItem.progressBar_file=-1;
+ else
+ {
+ if(itemTransfer.generalData.size>0)
+ returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
+ else
+ returnItem.progressBar_file=-1;
+ }
+ break;
+ case Ultracopier::Transfer:
+ if(itemTransfer.generalData.size>0)
+ returnItem.progressBar_file=((double)itemTransfer.currentProgression/itemTransfer.generalData.size)*65535;
+ else
+ returnItem.progressBar_file=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));
+ returnItem.progressBar_file=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));
+ returnItem.progressBar_file=0;
+ break;
+ default:
+ returnItem.progressBar_file=65535;
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,QStringLiteral("unknow action type for file %1: actionType: %2").arg(itemTransfer.generalData.id).arg(itemTransfer.actionType));
+ break;
+ }
+ }
+ return returnItem;
+}
diff --git a/plugins-alternative/Themes/Windows/TransferModel.h b/plugins-alternative/Themes/Windows/TransferModel.h
new file mode 100644
index 0000000..c2d89aa
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/TransferModel.h
@@ -0,0 +1,90 @@
+#ifndef TRANSFERMODEL_H
+#define TRANSFERMODEL_H
+
+#include <QAbstractTableModel>
+#include <QModelIndex>
+#include <QVariant>
+#include <QList>
+#include <QSet>
+#include <QIcon>
+#include <QString>
+
+#include "StructEnumDefinition.h"
+#include "Environment.h"
+
+#include "../../../interface/FacilityInterface.h"
+
+/// \brief model to store the transfer list
+class TransferModel : public QAbstractTableModel
+{
+ Q_OBJECT
+public:
+ /// \brief the transfer item displayed
+ struct transfertItem
+ {
+ quint64 id;
+ QString source;
+ QString size;
+ QString destination;
+ };
+ /// \brief the transfer item with progression
+ struct ItemOfCopyListWithMoreInformations
+ {
+ quint64 currentProgression;
+ Ultracopier::ItemOfCopyList generalData;
+ Ultracopier::ActionTypeCopyList actionType;
+ bool custom_with_progression;
+ };
+ /// \brief returned first transfer item
+ struct currentTransfertItem
+ {
+ quint64 id;
+ bool haveItem;
+ QString from;
+ QString to;
+ QString current_file;
+ QString size;
+ int progressBar_file;
+ };
+
+ 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);
+
+ QList<quint64> synchronizeItems(const QList<Ultracopier::ReturnActionOnCopyList>& returnActions);
+ void setFacilityEngine(FacilityInterface * facilityEngine);
+
+ void setFileProgression(QList<Ultracopier::ProgressionItem> &progressionList);
+
+ currentTransfertItem getCurrentTransfertItem();
+
+ quint64 currentFile;
+ quint64 totalFile;
+ quint64 currentSize;
+ quint64 totalSize;
+protected:
+ QSet<quint64> startId,stopId;///< To show what is started, what is stopped
+ QHash<quint64,ItemOfCopyListWithMoreInformations> internalRunningOperation;///< to have progression and stat
+ QIcon iconStart,iconPause,iconStop;
+private:
+ int loop_size,index_for_loop;
+ int sub_loop_size,sub_index_for_loop;
+ int row,column;
+ FacilityInterface * facilityEngine;
+ QString search_text;
+ /// \brief index from start the search, decresed by remove before it
+ int currentIndexSearch;
+ bool haveSearchItem;
+ quint64 searchId;
+signals:
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,const QString &fonction,const QString &text,const QString &file,const int &ligne);
+ #endif
+};
+
+#endif // TRANSFERMODEL_H
diff --git a/plugins-alternative/Themes/Windows/Variable.h b/plugins-alternative/Themes/Windows/Variable.h
new file mode 100644
index 0000000..963d0c8
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/Variable.h
@@ -0,0 +1,15 @@
+/** \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
+#define ULTRACOPIER_PLUGIN_DEBUG
+
+#endif // VARIABLE_H
+
+
+
diff --git a/plugins-alternative/Themes/Windows/documentation.dox b/plugins-alternative/Themes/Windows/documentation.dox
new file mode 100644
index 0000000..df43161
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/documentation.dox
@@ -0,0 +1,29 @@
+/* -*- mode: C++ ; c-file-style: "stroustrup" -*- **/
+
+/*
+ This file contains NO source code, just some documentation for doxygen to
+ parse.
+*/
+
+/*!
+ \mainpage Windows
+
+ \section mainpage_overview Overview
+
+ It's interface to have interface like windows for Ultracopier.\n
+ More informations on <a href="http://ultracopier-wiki.first-world.info/">the wiki of ultracopier</a>. Is part of Ultracopier project as alternative plugin.
+
+ \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 found link on <a href="http://ultracopier.first-world.info/">Ultracopier (Supercopier/Teracopy)</a> project page, via git, snapshot sources, ...
+
+ \section license GPL Version 3
+ The code source is under GPL3.
+
+*/
+
diff --git a/plugins-alternative/Themes/Windows/factory.cpp b/plugins-alternative/Themes/Windows/factory.cpp
new file mode 100644
index 0000000..dbce51a
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/factory.cpp
@@ -0,0 +1,74 @@
+/** \file factory.cpp
+\brief Define the factory core
+\author alpha_one_x86
+*/
+
+#include "factory.h"
+
+QRegularExpression ThemesFactory::slashEnd;
+QRegularExpression ThemesFactory::isolateName;
+
+ThemesFactory::ThemesFactory()
+{
+ slashEnd=QRegularExpression("/$");
+ isolateName=QRegularExpression("^.*/([^/]+)$");
+}
+
+PluginInterface_Themes * ThemesFactory::getInstance()
+{
+ Themes * newInterface=new Themes(facilityEngine);
+ connect(this,&ThemesFactory::reloadLanguage,newInterface,&Themes::newLanguageLoaded);
+ return newInterface;
+}
+
+void ThemesFactory::setResources(OptionInterface * options,const QString &writePath,const QString &pluginPath,FacilityInterface * facilityEngine,const bool &portableVersion)
+{
+ Q_UNUSED(options)
+ Q_UNUSED(writePath)
+ Q_UNUSED(pluginPath)
+ this->facilityEngine=facilityEngine;
+ Q_UNUSED(portableVersion)
+}
+
+QWidget * ThemesFactory::options()
+{
+ return NULL;
+}
+
+QIcon ThemesFactory::getIcon(const QString &fileName) const
+{
+ if(fileName=="SystemTrayIcon/exit.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("application-exit");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ if(fileName=="SystemTrayIcon/add.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("list-add");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ if(fileName=="SystemTrayIcon/informations.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("help-about");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ if(fileName=="SystemTrayIcon/options.png")
+ {
+ QIcon tempIcon=QIcon::fromTheme("applications-system");
+ if(!tempIcon.isNull())
+ return tempIcon;
+ }
+ return QIcon(":/Themes/Windows/resources/"+fileName);
+}
+
+void ThemesFactory::resetOptions()
+{
+}
+
+void ThemesFactory::newLanguageLoaded()
+{
+ emit reloadLanguage();
+}
diff --git a/plugins-alternative/Themes/Windows/factory.h b/plugins-alternative/Themes/Windows/factory.h
new file mode 100644
index 0000000..32ea9f1
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/factory.h
@@ -0,0 +1,45 @@
+/** \file factory.h
+\brief Define the factory, to create instance of the interface
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef FACTORY_H
+#define FACTORY_H
+
+#include <QObject>
+#include <QWidget>
+#include <QIcon>
+#include <QRegularExpression>
+
+#include "interface.h"
+#include "../../../interface/PluginInterface_Themes.h"
+
+/// \brief Define the factory, to create instance of the interface
+class ThemesFactory : public PluginInterface_ThemesFactory
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "first-world.info.ultracopier.PluginInterface.ThemesFactory/1.0.1.0" FILE "plugin.json")
+ Q_INTERFACES(PluginInterface_ThemesFactory)
+ public:
+ ThemesFactory();
+ /// \brief to return the instance of the copy engine
+ PluginInterface_Themes * getInstance();
+ /// \brief set the resources, to store options, to have facilityInterface
+ void setResources(OptionInterface * optionsEngine,const QString &writePath,const QString &pluginPath,FacilityInterface * facilityEngine,const bool &portableVersion);
+ /// \brief to get the default options widget
+ QWidget * options();
+ /// \brief to get a resource icon
+ QIcon getIcon(const QString &fileName) const;
+ //regex
+ static QRegularExpression slashEnd;
+ static QRegularExpression isolateName;
+ signals:
+ void reloadLanguage();
+ public slots:
+ void resetOptions();
+ void newLanguageLoaded();
+ private:
+ FacilityInterface * facilityEngine;
+};
+
+#endif // FACTORY_H
diff --git a/plugins-alternative/Themes/Windows/informations.xml b/plugins-alternative/Themes/Windows/informations.xml
new file mode 100644
index 0000000..b0d6f22
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/informations.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package>
+ <title xml:lang="en"><![CDATA[Windows dialog for Ultracopier]]></title><!-- english is required -->
+ <title xml:lang="fr"><![CDATA[Dialogue de Windows 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 RFC822 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[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.2.3.6</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. -->
+ <dependencies><![CDATA[
+ ]]></dependencies>
+</package> \ No newline at end of file
diff --git a/plugins-alternative/Themes/Windows/interface.cpp b/plugins-alternative/Themes/Windows/interface.cpp
new file mode 100644
index 0000000..e358f9c
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/interface.cpp
@@ -0,0 +1,414 @@
+/** \file interface.cpp
+\brief Define the interface core
+\author alpha_one_x86
+*/
+
+#include "interface.h"
+#include "factory.h"
+#include "ui_interface.h"
+
+Themes::Themes(FacilityInterface * facilityEngine) :
+ ui(new Ui::interface())
+{
+ ui->setupUi(this);
+ remainingSeconds= 0;
+ speed = 0;
+ progression_current=0;
+ progression_total=0;
+ modeIsForced = false;
+ haveStarted = false;
+ this->facilityEngine = facilityEngine;
+ transferModel.setFacilityEngine(facilityEngine);
+ menu=new QMenu(this);
+ ui->toolButton->setMenu(menu);
+ updateModeAndType();
+
+ 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);
+
+ updateDetails();
+
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ connect(&transferModel,&TransferModel::debugInformation,this,&Themes::debugInformation);
+ #endif
+ #ifndef Q_OS_WIN32
+ ui->widget_bottom->setStyleSheet("background-color: rgb(237, 237, 237);");
+ #endif
+ show();
+}
+
+Themes::~Themes()
+{
+ delete menu;
+}
+
+void Themes::forcedModeAddFile()
+{
+ emit userAddFile(mode);
+}
+
+void Themes::forcedModeAddFolder()
+{
+ emit userAddFolder(mode);
+}
+
+void Themes::forcedModeAddFileToCopy()
+{
+ emit userAddFile(Ultracopier::Copy);
+}
+
+void Themes::forcedModeAddFolderToCopy()
+{
+ emit userAddFolder(Ultracopier::Copy);
+}
+
+void Themes::forcedModeAddFileToMove()
+{
+ emit userAddFile(Ultracopier::Move);
+}
+
+void Themes::forcedModeAddFolderToMove()
+{
+ emit userAddFolder(Ultracopier::Move);
+}
+
+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::closeEvent(QCloseEvent *event)
+{
+ event->ignore();
+ this->hide();
+ emit cancel();
+}
+
+void Themes::detectedSpeed(const quint64 &speed)
+{
+ this->speed=speed;
+ if(ui->more->isChecked())
+ ui->label_speed->setText(facilityEngine->speedToString(speed));
+}
+
+void Themes::setSupportSpeedLimitation(const bool &supportSpeedLimitationBool)
+{
+ Q_UNUSED(supportSpeedLimitationBool);
+}
+
+QWidget * Themes::getOptionsEngineWidget()
+{
+ return NULL;
+}
+
+void Themes::getOptionsEngineEnabled(const bool &isEnabled)
+{
+ Q_UNUSED(isEnabled)
+}
+
+void Themes::setCopyType(const Ultracopier::CopyType &type)
+{
+ this->type=type;
+ updateModeAndType();
+}
+
+void Themes::forceCopyMode(const Ultracopier::CopyMode &mode)
+{
+ modeIsForced=true;
+ this->mode=mode;
+ updateModeAndType();
+ updateInformations();
+}
+
+void Themes::updateTitle()
+{
+ remainingTime(remainingSeconds);
+}
+
+void Themes::actionInProgess(const Ultracopier::EngineActionInProgress &action)
+{
+ this->action=action;
+ switch(action)
+ {
+ case Ultracopier::Copying:
+ case Ultracopier::CopyingAndListing:
+ ui->progressBar->setMaximum(65535);
+ ui->progressBar->setMinimum(0);
+ break;
+ case Ultracopier::Listing:
+ ui->progressBar->setMaximum(0);
+ ui->progressBar->setMinimum(0);
+ break;
+ case Ultracopier::Idle:
+ if(haveStarted)
+ emit cancel();
+ break;
+ default:
+ break;
+ }
+ switch(action)
+ {
+ case Ultracopier::Copying:
+ case Ultracopier::CopyingAndListing:
+ haveStarted=true;
+ break;
+ default:
+ break;
+ }
+}
+
+void Themes::newTransferStart(const Ultracopier::ItemOfCopyList &item)
+{
+ ui->text->setText(item.sourceFullPath);
+}
+
+void Themes::newTransferStop(const quint64 &id)
+{
+ Q_UNUSED(id)
+}
+
+void Themes::newFolderListing(const QString &path)
+{
+ if(action==Ultracopier::Listing)
+ ui->text->setText(path);
+}
+
+void Themes::remainingTime(const int &remainingSeconds)
+{
+ this->remainingSeconds=remainingSeconds;
+
+ QString remainingTime;
+ if(remainingSeconds>=0)
+ remainingTime=facilityEngine->simplifiedRemainingTime(remainingSeconds);
+ else
+ remainingTime=facilityEngine->translateText(tr("Unknown remaining time"));
+
+ this->setWindowTitle(remainingTime);
+
+ if(ui->more->isChecked())
+ ui->label_remaining_time->setText(remainingTime);
+ else
+ updateInformations();
+}
+
+void Themes::newCollisionAction(const QString &action)
+{
+ Q_UNUSED(action)
+}
+
+void Themes::newErrorAction(const QString &action)
+{
+ Q_UNUSED(action)
+}
+
+void Themes::errorDetected()
+{
+}
+
+/// \brief new error
+void Themes::errorToRetry(const QString &source,const QString &destination,const QString &error)
+{
+ Q_UNUSED(source);
+ Q_UNUSED(destination);
+ Q_UNUSED(error);
+}
+
+void Themes::setTransferListOperation(const Ultracopier::TransferListOperation &transferListOperation)
+{
+ Q_UNUSED(transferListOperation)
+}
+
+//speed limitation
+bool Themes::setSpeedLimitation(const qint64 &speedLimitation)
+{
+ Q_UNUSED(speedLimitation)
+ return false;
+}
+
+//get information about the copy
+void Themes::setGeneralProgression(const quint64 &current,const quint64 &total)
+{
+ progression_current=current;
+ progression_total=total;
+ ui->progressBar->setValue(((double)current/total)*65535);
+}
+
+void Themes::setCollisionAction(const QList<QPair<QString,QString> > &list)
+{
+ Q_UNUSED(list)
+}
+
+void Themes::setErrorAction(const QList<QPair<QString,QString> > &list)
+{
+ Q_UNUSED(list)
+}
+
+//edit the transfer list
+void Themes::getActionOnList(const QList<Ultracopier::ReturnActionOnCopyList> &returnActions)
+{
+ transferModel.synchronizeItems(returnActions);
+ updateInformations();
+}
+
+void Themes::haveExternalOrder()
+{
+ ui->toolButton->hide();
+}
+
+void Themes::isInPause(const bool &isInPause)
+{
+ //resume in auto the pause
+ if(isInPause)
+ emit resume();
+}
+
+void Themes::newLanguageLoaded()
+{
+ ui->retranslateUi(this);
+ updateTitle();
+ updateInformations();
+}
+
+void Themes::setFileProgression(const QList<Ultracopier::ProgressionItem> &progressionList)
+{
+ QList<Ultracopier::ProgressionItem> progressionListBis=progressionList;
+ transferModel.setFileProgression(progressionListBis);
+ updateInformations();
+}
+
+void Themes::on_more_toggled(bool checked)
+{
+ Q_UNUSED(checked);
+ updateDetails();
+ updateInformations();
+}
+
+void Themes::updateDetails()
+{
+ ui->text->setHidden(ui->more->isChecked());
+ ui->details->setHidden(!ui->more->isChecked());
+ if(ui->more->isChecked())
+ {
+ this->setMinimumHeight(242);
+ this->setMaximumHeight(242);
+ ui->more->setIcon(QIcon(":/Themes/Windows/resources/arrow-up.png"));
+ }
+ else
+ {
+ this->setMinimumHeight(168);
+ this->setMaximumHeight(168);
+ ui->more->setIcon(QIcon(":/Themes/Windows/resources/arrow-down.png"));
+ }
+
+ // usefull under windows
+ this->updateGeometry();
+ this->update();
+ this->adjustSize();
+
+ updateInformations();
+}
+
+void Themes::updateInformations()
+{
+ TransferModel::currentTransfertItem transfertItem=transferModel.getCurrentTransfertItem();
+ if(!modeIsForced)
+ {
+ if(transferModel.totalFile>1)
+ ui->label_main->setText(tr("Transferring %n item(s) (%2)","",transferModel.totalFile).arg(facilityEngine->sizeToString(progression_total)));
+ else
+ ui->label_main->setText(tr("Transferring %n item(s) (%2)","",transferModel.totalFile).arg(facilityEngine->sizeToString(progression_total)));
+ }
+ else
+ {
+ if(mode==Ultracopier::Copy)
+ {
+ if(transferModel.totalFile>1)
+ ui->label_main->setText(tr("Copying %n item(s) (%2)","",transferModel.totalFile).arg(facilityEngine->sizeToString(progression_total)));
+ else
+ ui->label_main->setText(tr("Copying %n item(s) (%2)","",transferModel.totalFile).arg(facilityEngine->sizeToString(progression_total)));
+ }
+ else
+ {
+ if(transferModel.totalFile>1)
+ ui->label_main->setText(tr("Moving %n item(s) (%2)","",transferModel.totalFile).arg(facilityEngine->sizeToString(progression_total)));
+ else
+ ui->label_main->setText(tr("Moving %n item(s) (%2)","",transferModel.totalFile).arg(facilityEngine->sizeToString(progression_total)));
+ }
+ }
+
+ if(ui->more->isChecked())
+ {
+ if(transfertItem.haveItem)
+ {
+ QString simplifiedFrom=transfertItem.from;
+ QString simplifiedTo=transfertItem.to;
+ simplifiedFrom.remove(ThemesFactory::slashEnd);
+ simplifiedTo.remove(ThemesFactory::slashEnd);
+ simplifiedFrom.replace('\\','/');
+ simplifiedTo.replace('\\','/');
+ simplifiedFrom.replace(ThemesFactory::isolateName, "\\1");
+ simplifiedTo.replace(ThemesFactory::isolateName, "\\1");
+ ui->label_file->setText(transfertItem.current_file);
+ ui->label_from->setText(QStringLiteral("<b>%1</b> (%2)").arg(simplifiedFrom).arg(transfertItem.from));
+ ui->label_to->setText(QStringLiteral("<b>%1</b> (%2)").arg(simplifiedTo).arg(transfertItem.to));
+ ui->label_items->setText(QStringLiteral("%1 (%2)").arg(transferModel.totalFile-transferModel.currentFile).arg(facilityEngine->sizeToString(progression_total-progression_current)));
+ }
+ else
+ {
+ ui->label_file->setText("");
+ ui->label_from->setText("");
+ ui->label_to->setText("");
+ ui->label_items->setText(QStringLiteral("%1 (%2)").arg(transferModel.totalFile-transferModel.currentFile).arg(facilityEngine->sizeToString(progression_total-progression_current)));
+ }
+ }
+ else
+ {
+ if(transfertItem.haveItem)
+ {
+ QString remainingTime;
+ if(remainingSeconds>=0)
+ remainingTime=facilityEngine->simplifiedRemainingTime(remainingSeconds);
+ else
+ remainingTime=facilityEngine->translateText(tr("Unknown remaining time"));
+ QString simplifiedFrom=transfertItem.from;
+ QString simplifiedTo=transfertItem.to;
+ simplifiedFrom.remove(ThemesFactory::slashEnd);
+ simplifiedTo.remove(ThemesFactory::slashEnd);
+ simplifiedFrom.replace('\\','/');
+ simplifiedTo.replace('\\','/');
+ simplifiedFrom.replace(ThemesFactory::isolateName, "\\1");
+ simplifiedTo.replace(ThemesFactory::isolateName, "\\1");
+ ui->text->setText(
+ //: Sample: from <b>sources</b> (e:\folder\source) to <b>destination</b> (d:\desktop\destination)<br />About 5 Hours remaining
+ tr("from <b>%1</b> (%2) to <b>%3</b> (%4)<br />%5")
+ .arg(simplifiedFrom)
+ .arg(transfertItem.from)
+ .arg(simplifiedTo)
+ .arg(transfertItem.to)
+ .arg(remainingTime)
+ );
+ }
+ else
+ ui->text->setText(tr("In waiting"));
+ }
+}
diff --git a/plugins-alternative/Themes/Windows/interface.h b/plugins-alternative/Themes/Windows/interface.h
new file mode 100644
index 0000000..5de55e6
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/interface.h
@@ -0,0 +1,165 @@
+/** \file interface.h
+\brief Define the interface
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#ifndef INTERFACE_TEST_H
+#define INTERFACE_TEST_H
+
+#include <QObject>
+#include <QWidget>
+#include <QMenu>
+#include <QCloseEvent>
+
+#include "../../../interface/PluginInterface_Themes.h"
+#include "TransferModel.h"
+
+namespace Ui {
+ class interface;
+}
+
+/// \brief Define the interface
+class Themes : public PluginInterface_Themes
+{
+ Q_OBJECT
+public slots:
+ //send information about the copy
+ /// \brief to set the action in progress
+ void actionInProgess(const Ultracopier::EngineActionInProgress &);
+ /// \brief new transfer have started
+ void newTransferStart(const Ultracopier::ItemOfCopyList &item);
+ /** \brief one transfer have been stopped
+ * is stopped, example: because error have occurred, and try later, don't remove the item! */
+ void newTransferStop(const quint64 &id);
+ /// \brief the new folder is listing
+ void newFolderListing(const QString &path);
+ /** \brief show the detected speed
+ * in byte per seconds */
+ void detectedSpeed(const quint64 &speed);
+ /** \brief support speed limitation */
+ void setSupportSpeedLimitation(const bool &supportSpeedLimitationBool);
+ /** \brief show the remaining time
+ * time in seconds */
+ void remainingTime(const int &remainingSeconds);
+ /// \brief set the current collision action
+ void newCollisionAction(const QString &action);
+ /// \brief set the current error action
+ void newErrorAction(const QString &action);
+ /// \brief set one error is detected
+ void errorDetected();
+ /// \brief new error
+ void errorToRetry(const QString &source,const QString &destination,const QString &error);
+ //speed limitation
+ /** \brief the max speed used
+ * in byte per seconds, -1 if not able, 0 if disabled */
+ bool setSpeedLimitation(const qint64 &speedLimitation);
+ //set the translate
+ void newLanguageLoaded();
+public:
+ /// \brief the transfer item with progression
+ struct ItemOfCopyListWithMoreInformations
+ {
+ quint64 currentProgression;
+ Ultracopier::ItemOfCopyList generalData;
+ Ultracopier::ActionTypeCopyList actionType;
+ bool custom_with_progression;
+ };
+ /// \brief returned first transfer item
+ struct currentTransfertItem
+ {
+ quint64 id;
+ bool haveItem;
+ QString from;
+ QString to;
+ QString current_file;
+ int progressBar_file;
+ };
+ /// \brief get the widget for the copy engine
+ QWidget * getOptionsEngineWidget();
+ /// \brief to set if the copy engine is found
+ void getOptionsEngineEnabled(const bool &isEnabled);
+ /// \brief get action on the transfer list (add/move/remove)
+ void getActionOnList(const QList<Ultracopier::ReturnActionOnCopyList> &returnActions);
+ //get information about the copy
+ /// \brief show the general progression
+ void setGeneralProgression(const quint64 &current,const quint64 &total);
+ /// \brief show the file progression
+ void setFileProgression(const QList<Ultracopier::ProgressionItem> &progressionList);
+ /// \brief set collision action
+ void setCollisionAction(const QList<QPair<QString,QString> > &);
+ /// \brief set error action
+ void setErrorAction(const QList<QPair<QString,QString> > &);
+ /// \brief set the copyType -> file or folder
+ void setCopyType(const Ultracopier::CopyType &);
+ /// \brief set the copyMove -> copy or move, to force in copy or move, else support both
+ void forceCopyMode(const Ultracopier::CopyMode &);
+ /// \brief set if transfer list is exportable/importable
+ void setTransferListOperation(const Ultracopier::TransferListOperation &transferListOperation);
+ /** \brief set if the order is external (like file manager copy)
+ * to notify the interface, which can hide add folder/filer button */
+ void haveExternalOrder();
+ /// \brief set if is in pause
+ void isInPause(const bool &);
+signals:
+ #ifdef ULTRACOPIER_PLUGIN_DEBUG
+ /// \brief To debug source
+ void debugInformation(const Ultracopier::DebugLevel &level,const QString &fonction,const QString &text,const QString &file,const int &ligne);
+ #endif
+/* //set the transfer list
+ void removeItems(QList<int> ids);
+ void moveItemsOnTop(QList<int> ids);
+ void moveItemsUp(QList<int> ids);
+ void moveItemsDown(QList<int> ids);
+ void moveItemsOnBottom(QList<int> ids);
+ void exportTransferList();
+ void importTransferList();
+ //user ask ask to add folder (add it with interface ask source/destination)
+ void userAddFolder(CopyMode);
+ void userAddFile(CopyMode);
+ void urlDropped(QList<QUrl> urls);
+ //action on the copy
+ void pause();
+ void resume();
+ void skip(quint64 id);
+ void cancel();
+ //edit the action
+ void sendCollisionAction(QString action);
+ void sendErrorAction(QString action);
+ void newSpeedLimitation(qint64);*/
+public:
+ //constructor and destructor
+ Themes(FacilityInterface * facilityEngine);
+ ~Themes();
+private:
+ Ui::interface *ui;
+ TransferModel transferModel;
+ void updateTitle();
+ QMenu *menu;
+ Ultracopier::EngineActionInProgress action;
+ void closeEvent(QCloseEvent *event);
+ void updateModeAndType();
+ bool modeIsForced;
+ Ultracopier::CopyType type;
+ Ultracopier::CopyMode mode;
+ bool haveStarted;
+ QList<ItemOfCopyListWithMoreInformations> InternalRunningOperation;
+ int loop_size,index_for_loop;
+ int sub_loop_size,sub_index_for_loop;
+ FacilityInterface * facilityEngine;
+ void updateDetails();
+ void updateInformations();
+ int remainingSeconds;
+ quint64 progression_current;
+ quint64 progression_total;
+ quint64 speed;
+private slots:
+ void forcedModeAddFile();
+ void forcedModeAddFolder();
+ void forcedModeAddFileToCopy();
+ void forcedModeAddFolderToCopy();
+ void forcedModeAddFileToMove();
+ void forcedModeAddFolderToMove();
+ void on_more_toggled(bool checked);
+};
+
+#endif // INTERFACE_TEST_H
diff --git a/plugins-alternative/Themes/Windows/interface.pro b/plugins-alternative/Themes/Windows/interface.pro
new file mode 100644
index 0000000..9a82f6a
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/interface.pro
@@ -0,0 +1,48 @@
+CONFIG += c++11
+QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
+mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
+
+QT += widgets
+TEMPLATE = lib
+CONFIG += plugin
+HEADERS = interface.h \
+ StructEnumDefinition.h \
+ factory.h \
+ ../../../interface/PluginInterface_Themes.h \
+ TransferModel.h
+SOURCES = interface.cpp \
+ factory.cpp \
+ TransferModel.cpp
+TARGET = $$qtLibraryTarget(interface)
+TRANSLATIONS += Languages/ar/translation.ts \
+ Languages/de/translation.ts \
+ Languages/el/translation.ts \
+ Languages/en/translation.ts \
+ Languages/es/translation.ts \
+ Languages/fr/translation.ts \
+ Languages/hi/translation.ts \
+ Languages/hu/translation.ts \
+ Languages/id/translation.ts \
+ Languages/it/translation.ts \
+ Languages/ja/translation.ts \
+ Languages/ko/translation.ts \
+ Languages/nl/translation.ts \
+ Languages/no/translation.ts \
+ Languages/pl/translation.ts \
+ Languages/ru/translation.ts \
+ Languages/th/translation.ts \
+ Languages/tr/translation.ts \
+ Languages/zh/translation.ts
+
+FORMS += \
+ interface.ui
+
+RESOURCES += \
+ resources.qrc
+
+win32 {
+ RESOURCES += resources_windows.qrc
+}
+!win32 {
+ RESOURCES += resources_unix.qrc
+}
diff --git a/plugins-alternative/Themes/Windows/interface.ui b/plugins-alternative/Themes/Windows/interface.ui
new file mode 100644
index 0000000..f255562
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/interface.ui
@@ -0,0 +1,415 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>interface</class>
+ <widget class="QWidget" name="interface">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>420</width>
+ <height>284</height>
+ </rect>
+ </property>
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>420</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>420</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string notr="true">Ultracopier</string>
+ </property>
+ <property name="windowIcon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/Themes/Windows/resources/icon.png</normaloff>:/Themes/Windows/resources/icon.png</iconset>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <property name="spacing">
+ <number>0</number>
+ </property>
+ <property name="margin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QWidget" name="widget" native="true">
+ <property name="minimumSize">
+ <size>
+ <width>420</width>
+ <height>42</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>420</width>
+ <height>42</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-color: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(230, 240, 255, 255), stop:0.5 rgba(166, 199, 230, 255), stop:1 rgba(3, 40, 84, 255));</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_3">
+ <property name="leftMargin">
+ <number>20</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>20</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="label_main">
+ <property name="styleSheet">
+ <string notr="true">background-color: rgba(255, 0, 0, 0);
+font: 12pt &quot;Sans Serif&quot;;</string>
+ </property>
+ <property name="text">
+ <string notr="true">Copying 0 item (0KB)</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QLabel" name="label_2">
+ <property name="minimumSize">
+ <size>
+ <width>51</width>
+ <height>40</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>51</width>
+ <height>40</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-color: rgba(255, 0, 0, 0);</string>
+ </property>
+ <property name="pixmap">
+ <pixmap resource="resources.qrc">:/Themes/Windows/resources/icon-top.png</pixmap>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QWidget" name="widget_2" native="true">
+ <property name="minimumSize">
+ <size>
+ <width>420</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>420</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="styleSheet">
+ <string notr="true">background-color: rgb(255, 255, 255);</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <property name="spacing">
+ <number>14</number>
+ </property>
+ <property name="leftMargin">
+ <number>20</number>
+ </property>
+ <property name="topMargin">
+ <number>14</number>
+ </property>
+ <property name="rightMargin">
+ <number>20</number>
+ </property>
+ <property name="bottomMargin">
+ <number>14</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="text">
+ <property name="sizePolicy">
+ <sizepolicy hsizetype="Minimum" vsizetype="Minimum">
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>28</height>
+ </size>
+ </property>
+ <property name="text">
+ <string notr="true">from &lt;b&gt;%1&lt;/b&gt; (%2) to &lt;b&gt;%3&lt;/b&gt; (%4)&lt;br /&gt;
+%5</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QWidget" name="details" native="true">
+ <layout class="QFormLayout" name="formLayout">
+ <property name="labelAlignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set>
+ </property>
+ <property name="verticalSpacing">
+ <number>2</number>
+ </property>
+ <item row="0" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Name:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="1">
+ <widget class="QLabel" name="label_file"/>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_5">
+ <property name="text">
+ <string>From:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="1">
+ <widget class="QLabel" name="label_from"/>
+ </item>
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_6">
+ <property name="text">
+ <string>To:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="QLabel" name="label_to"/>
+ </item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="label_7">
+ <property name="text">
+ <string>Time remaining:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="QLabel" name="label_remaining_time"/>
+ </item>
+ <item row="4" column="0">
+ <widget class="QLabel" name="label_8">
+ <property name="text">
+ <string>Items remaining:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="1">
+ <widget class="QLabel" name="label_items"/>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="label_9">
+ <property name="text">
+ <string>Speed:</string>
+ </property>
+ </widget>
+ </item>
+ <item row="5" column="1">
+ <widget class="QLabel" name="label_speed"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QProgressBar" name="progressBar">
+ <property name="minimumSize">
+ <size>
+ <width>0</width>
+ <height>14</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>16777215</width>
+ <height>14</height>
+ </size>
+ </property>
+ <property name="maximum">
+ <number>65535</number>
+ </property>
+ <property name="textVisible">
+ <bool>false</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QWidget" name="widget_bottom" native="true">
+ <property name="minimumSize">
+ <size>
+ <width>420</width>
+ <height>42</height>
+ </size>
+ </property>
+ <property name="maximumSize">
+ <size>
+ <width>420</width>
+ <height>42</height>
+ </size>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <property name="leftMargin">
+ <number>20</number>
+ </property>
+ <property name="topMargin">
+ <number>0</number>
+ </property>
+ <property name="rightMargin">
+ <number>20</number>
+ </property>
+ <property name="bottomMargin">
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QToolButton" name="more">
+ <property name="text">
+ <string>More information</string>
+ </property>
+ <property name="icon">
+ <iconset resource="resources.qrc">
+ <normaloff>:/Themes/Windows/resources/arrow-down.png</normaloff>:/Themes/Windows/resources/arrow-down.png</iconset>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="toolButtonStyle">
+ <enum>Qt::ToolButtonTextBesideIcon</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="horizontalSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>123</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ <item>
+ <widget class="QToolButton" name="toolButton">
+ <property name="text">
+ <string notr="true">...</string>
+ </property>
+ <property name="popupMode">
+ <enum>QToolButton::InstantPopup</enum>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QPushButton" name="Cancel">
+ <property name="text">
+ <string>Cancel</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ </layout>
+ <action name="actionAddFile">
+ <property name="icon">
+ <iconset>
+ <normaloff>:/Themes/Windows/resources/add.png</normaloff>:/Themes/Windows/resources/add.png</iconset>
+ </property>
+ <property name="text">
+ <string>Add file</string>
+ </property>
+ </action>
+ <action name="actionAddFolder">
+ <property name="icon">
+ <iconset>
+ <normaloff>:/Themes/Windows/resources/add.png</normaloff>:/Themes/Windows/resources/add.png</iconset>
+ </property>
+ <property name="text">
+ <string>Add folder</string>
+ </property>
+ </action>
+ <action name="actionAddFileToMove">
+ <property name="icon">
+ <iconset>
+ <normaloff>:/Themes/Windows/resources/add.png</normaloff>:/Themes/Windows/resources/add.png</iconset>
+ </property>
+ <property name="text">
+ <string>Move file(s)</string>
+ </property>
+ </action>
+ <action name="actionAddFolderToMove">
+ <property name="icon">
+ <iconset>
+ <normaloff>:/Themes/Windows/resources/add.png</normaloff>:/Themes/Windows/resources/add.png</iconset>
+ </property>
+ <property name="text">
+ <string>Move folder</string>
+ </property>
+ </action>
+ <action name="actionAddFileToCopy">
+ <property name="icon">
+ <iconset>
+ <normaloff>:/Themes/Windows/resources/add.png</normaloff>:/Themes/Windows/resources/add.png</iconset>
+ </property>
+ <property name="text">
+ <string>Copy file(s)</string>
+ </property>
+ </action>
+ <action name="actionAddFolderToCopy">
+ <property name="icon">
+ <iconset>
+ <normaloff>:/Themes/Windows/resources/add.png</normaloff>:/Themes/Windows/resources/add.png</iconset>
+ </property>
+ <property name="text">
+ <string>Copy folder</string>
+ </property>
+ </action>
+ </widget>
+ <resources>
+ <include location="resources.qrc"/>
+ </resources>
+ <connections>
+ <connection>
+ <sender>Cancel</sender>
+ <signal>clicked()</signal>
+ <receiver>interface</receiver>
+ <slot>close()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>388</x>
+ <y>349</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>523</x>
+ <y>498</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/plugins-alternative/Themes/Windows/plugin.json b/plugins-alternative/Themes/Windows/plugin.json
new file mode 100644
index 0000000..9e26dfe
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/plugin.json
@@ -0,0 +1 @@
+{} \ No newline at end of file
diff --git a/plugins-alternative/Themes/Windows/resources.qrc b/plugins-alternative/Themes/Windows/resources.qrc
new file mode 100644
index 0000000..f7ffc64
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources.qrc
@@ -0,0 +1,10 @@
+<RCC>
+ <qresource prefix="/Themes/Windows">
+ <file>resources/icon.png</file>
+ <file>resources/arrow-down.png</file>
+ <file>resources/arrow-up.png</file>
+ <file>resources/SystemTrayIcon/informations.png</file>
+ <file>resources/icon-top.png</file>
+ <file>resources/empty.png</file>
+ </qresource>
+</RCC>
diff --git a/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/informations.png b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/informations.png
new file mode 100644
index 0000000..5b7b255
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/informations.png
Binary files differ
diff --git a/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Caught_Unix.png b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Caught_Unix.png
new file mode 100644
index 0000000..6f5d1cf
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Caught_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Caught_Windows.png b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Caught_Windows.png
new file mode 100644
index 0000000..5464856
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Caught_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
new file mode 100644
index 0000000..3961215
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Semiuncaught_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
new file mode 100644
index 0000000..45d6315
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Semiuncaught_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Uncaught_Unix.png b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Uncaught_Unix.png
new file mode 100644
index 0000000..ac4299a
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Uncaught_Unix.png
Binary files differ
diff --git a/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Uncaught_Windows.png b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Uncaught_Windows.png
new file mode 100644
index 0000000..6e6bae7
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources/SystemTrayIcon/systray_Uncaught_Windows.png
Binary files differ
diff --git a/plugins-alternative/Themes/Windows/resources/arrow-down.png b/plugins-alternative/Themes/Windows/resources/arrow-down.png
new file mode 100644
index 0000000..39b5c37
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources/arrow-down.png
Binary files differ
diff --git a/plugins-alternative/Themes/Windows/resources/arrow-up.png b/plugins-alternative/Themes/Windows/resources/arrow-up.png
new file mode 100644
index 0000000..5c824fb
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources/arrow-up.png
Binary files differ
diff --git a/plugins-alternative/Themes/Windows/resources/empty.png b/plugins-alternative/Themes/Windows/resources/empty.png
new file mode 100644
index 0000000..846d96d
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources/empty.png
Binary files differ
diff --git a/plugins-alternative/Themes/Windows/resources/icon-top.png b/plugins-alternative/Themes/Windows/resources/icon-top.png
new file mode 100644
index 0000000..64b7992
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources/icon-top.png
Binary files differ
diff --git a/plugins-alternative/Themes/Windows/resources/icon-top.xcf b/plugins-alternative/Themes/Windows/resources/icon-top.xcf
new file mode 100644
index 0000000..9a775e2
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources/icon-top.xcf
Binary files differ
diff --git a/plugins-alternative/Themes/Windows/resources/icon.png b/plugins-alternative/Themes/Windows/resources/icon.png
new file mode 100644
index 0000000..eccfbc5
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources/icon.png
Binary files differ
diff --git a/plugins-alternative/Themes/Windows/resources_unix.qrc b/plugins-alternative/Themes/Windows/resources_unix.qrc
new file mode 100644
index 0000000..3904f69
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources_unix.qrc
@@ -0,0 +1,7 @@
+<RCC>
+ <qresource prefix="/Themes/Windows">
+ <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-alternative/Themes/Windows/resources_windows.qrc b/plugins-alternative/Themes/Windows/resources_windows.qrc
new file mode 100644
index 0000000..28666fc
--- /dev/null
+++ b/plugins-alternative/Themes/Windows/resources_windows.qrc
@@ -0,0 +1,7 @@
+<RCC>
+ <qresource prefix="/Themes/Windows">
+ <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-alternative/static-plugins-supercopier.qrc b/plugins-alternative/static-plugins-supercopier.qrc
new file mode 100644
index 0000000..d3ae224
--- /dev/null
+++ b/plugins-alternative/static-plugins-supercopier.qrc
@@ -0,0 +1,6 @@
+<RCC>
+ <qresource prefix="/">
+ <file>Themes/Supercopier/informations.xml</file>
+ <file>Themes/Supercopier/Languages/fr/translation.qm</file>
+ </qresource>
+</RCC>