summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
authorThomas Preud'homme <robotux@celest.fr>2020-08-11 22:35:12 +0100
committerThomas Preud'homme <robotux@celest.fr>2020-08-11 22:35:12 +0100
commit3ac113857071fc1f225b2e1b42547269e568c6b7 (patch)
tree8b28dd9c44a0d3c7ab8187cd8d8f19d47591d813 /plugins
parent9b10c21f5cad0e2ec27d23c59e65af7141a226f3 (diff)
New upstream version 2.2.4.4
Diffstat (limited to 'plugins')
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/README.md0
-rwxr-xr-xplugins/CopyEngine/Random/CopyEngine.cpp253
-rwxr-xr-xplugins/CopyEngine/Random/CopyEngine.h128
-rwxr-xr-xplugins/CopyEngine/Random/CopyEngine.pro26
-rwxr-xr-xplugins/CopyEngine/Random/CopyEngineFactory.cpp78
-rwxr-xr-xplugins/CopyEngine/Random/CopyEngineFactory.h58
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Random/README.md (renamed from plugins/CopyEngine/Ultracopier/README.md)0
-rwxr-xr-xplugins/CopyEngine/Random/informations.xml24
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Random/plugin.json (renamed from plugins/CopyEngine/Ultracopier/plugin.json)0
-rwxr-xr-xplugins/CopyEngine/Rsync/CopyEngine.pro2
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Rsync/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Rsync/Rsync.pro0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Rsync/informations.xml2
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/CallBackEventLoop.h15
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/CompilerInfo.h (renamed from plugins/CopyEngine/Ultracopier/CompilerInfo.h)0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/CopyEngine-collision-and-error.cpp (renamed from plugins/CopyEngine/Ultracopier/CopyEngine-collision-and-error.cpp)219
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp (renamed from plugins/CopyEngine/Ultracopier/CopyEngine.cpp)452
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/CopyEngine.h (renamed from plugins/CopyEngine/Ultracopier/CopyEngine.h)148
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/CopyEngine.pro (renamed from plugins/CopyEngine/Ultracopier/CopyEngine.pro)39
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp (renamed from plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp)319
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.h (renamed from plugins/CopyEngine/Ultracopier/CopyEngineFactory.h)44
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/CopyEngineUltracopier-SpecVariable.h (renamed from plugins/CopyEngine/Ultracopier/Variable.h)12
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/DebugDialog.cpp (renamed from plugins/CopyEngine/Ultracopier/DebugDialog.cpp)9
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/DebugDialog.h (renamed from plugins/CopyEngine/Ultracopier/DebugDialog.h)9
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/DebugEngineMacro.h (renamed from plugins/CopyEngine/Ultracopier/DebugEngineMacro.h)0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/DiskSpace.cpp (renamed from plugins/CopyEngine/Ultracopier/DiskSpace.cpp)0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/DiskSpace.h (renamed from plugins/CopyEngine/Ultracopier/DiskSpace.h)0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/DiskSpace.ui (renamed from plugins/CopyEngine/Ultracopier/DiskSpace.ui)2
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/DriveManagement.cpp180
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/DriveManagement.h (renamed from plugins/CopyEngine/Ultracopier/DriveManagement.h)8
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Environment.h (renamed from plugins/CopyEngine/Ultracopier/Environment.h)2
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/EventLoop.cpp71
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/EventLoop.h30
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp (renamed from plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp)84
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.h (renamed from plugins/CopyEngine/Ultracopier/FileErrorDialog.h)11
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp (renamed from plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp)149
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.h (renamed from plugins/CopyEngine/Ultracopier/FileExistsDialog.h)16
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp (renamed from plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp)92
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.h (renamed from plugins/CopyEngine/Ultracopier/FileIsSameDialog.h)14
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/FilterRules.cpp (renamed from plugins/CopyEngine/Ultracopier/FilterRules.cpp)16
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/FilterRules.h (renamed from plugins/CopyEngine/Ultracopier/FilterRules.h)1
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui (renamed from plugins/CopyEngine/Ultracopier/FilterRules.ui)0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Filters.cpp (renamed from plugins/CopyEngine/Ultracopier/Filters.cpp)12
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Filters.h (renamed from plugins/CopyEngine/Ultracopier/Filters.h)2
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Filters.ui (renamed from plugins/CopyEngine/Ultracopier/Filters.ui)63
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp (renamed from plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp)98
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.h (renamed from plugins/CopyEngine/Ultracopier/FolderExistsDialog.h)17
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.qmbin0 -> 20287 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.qmbin0 -> 19546 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/de/translation.ts)685
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/id/translation.ts)598
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.qmbin0 -> 334 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/en/translation.ts)594
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.qmbin0 -> 23560 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/es/translation.ts)674
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.qmbin0 -> 23074 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/fr/translation.ts)679
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/hi/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Languages/hi/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/el/translation.ts)598
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/hu/translation.qmbin0 -> 15971 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Languages/hu/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/hu/translation.ts)648
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/id/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Languages/id/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/ar/translation.ts)598
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/it/translation.qmbin0 -> 23932 bytes
-rw-r--r--plugins/CopyEngine/Ultracopier-Spec/Languages/it/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/it/translation.ts)871
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/ja/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Languages/ja/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/hi/translation.ts)632
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/ko/translation.qmbin0 -> 2785 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Languages/ko/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/ko/translation.ts)600
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/nl/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/nl/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/no/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/no/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/pl/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/pl/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/pt/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/pt/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/ru/translation.qmbin0 -> 6529 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/Languages/ru/translation.ts (renamed from plugins/CopyEngine/Ultracopier/Languages/ru/translation.ts)622
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/th/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/th/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/tr/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/tr/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/zh/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/Languages/zh/translation.ts1147
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThread.cpp1235
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/ListThread.h (renamed from plugins/CopyEngine/Ultracopier/ListThread.h)153
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadActions.cpp129
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadListChange.cpp423
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadMedia.cpp169
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadNew.cpp104
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadOptions.cpp296
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadScan.cpp97
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThreadStat.cpp184
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ListThread_InodeAction.cpp91
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/MkPath.cpp676
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/MkPath.h (renamed from plugins/CopyEngine/Ultracopier/MkPath.h)48
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/README.md3
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/RenamingRules.cpp (renamed from plugins/CopyEngine/Ultracopier/RenamingRules.cpp)19
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/RenamingRules.h (renamed from plugins/CopyEngine/Ultracopier/RenamingRules.h)0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/RenamingRules.ui (renamed from plugins/CopyEngine/Ultracopier/RenamingRules.ui)0
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.cpp953
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/ScanFileOrFolder.h (renamed from plugins/CopyEngine/Ultracopier/ScanFileOrFolder.h)52
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition.h (renamed from plugins/CopyEngine/Ultracopier/StructEnumDefinition.h)0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/StructEnumDefinition_CopyEngine.h (renamed from plugins/CopyEngine/Ultracopier/StructEnumDefinition_CopyEngine.h)20
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/TransferThread.cpp1547
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/TransferThread.h265
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.cpp (renamed from plugins/CopyEngine/Ultracopier/ReadThread.cpp)536
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/async/ReadThread.h (renamed from plugins/CopyEngine/Ultracopier/ReadThread.h)50
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.cpp1442
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/async/TransferThreadAsync.h153
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/async/WriteThread.cpp1164
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/async/WriteThread.h (renamed from plugins/CopyEngine/Ultracopier/WriteThread.h)77
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/copyEngineOptions.ui (renamed from plugins/CopyEngine/Ultracopier/copyEngineOptions.ui)437
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/copyEngineResources.qrc (renamed from plugins/CopyEngine/Ultracopier/copyEngineResources.qrc)2
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/debugDialog.ui (renamed from plugins/CopyEngine/Ultracopier/debugDialog.ui)34
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/documentation.dox (renamed from plugins/CopyEngine/Ultracopier/documentation.dox)0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/fileErrorDialog.ui (renamed from plugins/CopyEngine/Ultracopier/fileErrorDialog.ui)0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/fileExistsDialog.ui (renamed from plugins/CopyEngine/Ultracopier/fileExistsDialog.ui)20
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/fileIsSameDialog.ui (renamed from plugins/CopyEngine/Ultracopier/fileIsSameDialog.ui)0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/folderExistsDialog.ui (renamed from plugins/CopyEngine/Ultracopier/folderExistsDialog.ui)0
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/informations.xml (renamed from plugins/CopyEngine/Ultracopier/informations.xml)14
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/plugin.json1
-rwxr-xr-xplugins/CopyEngine/Ultracopier-Spec/ports.h6
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/resources/add.png (renamed from plugins/CopyEngine/Ultracopier/resources/add.png)bin552 -> 552 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/resources/edit.png (renamed from plugins/CopyEngine/Ultracopier/resources/edit.png)bin623 -> 623 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/resources/filter.png (renamed from plugins/CopyEngine/Ultracopier/resources/filter.png)bin685 -> 685 bytes
-rwxr-xr-x[-rw-r--r--]plugins/CopyEngine/Ultracopier-Spec/resources/remove.png (renamed from plugins/CopyEngine/Ultracopier/resources/remove.png)bin683 -> 683 bytes
-rw-r--r--plugins/CopyEngine/Ultracopier/AvancedQFile.cpp208
-rw-r--r--plugins/CopyEngine/Ultracopier/AvancedQFile.h45
-rw-r--r--plugins/CopyEngine/Ultracopier/DriveManagement.cpp105
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/ja/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/nl/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/no/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/pl/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/pt/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/th/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/tr/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/Languages/zh/translation.ts1291
-rw-r--r--plugins/CopyEngine/Ultracopier/ListThread.cpp2429
-rw-r--r--plugins/CopyEngine/Ultracopier/ListThread_InodeAction.cpp64
-rw-r--r--plugins/CopyEngine/Ultracopier/MkPath.cpp517
-rw-r--r--plugins/CopyEngine/Ultracopier/ScanFileOrFolder.cpp680
-rw-r--r--plugins/CopyEngine/Ultracopier/TransferThread.cpp2101
-rw-r--r--plugins/CopyEngine/Ultracopier/TransferThread.h292
-rw-r--r--plugins/CopyEngine/Ultracopier/WriteThread.cpp976
-rwxr-xr-x[-rw-r--r--]plugins/Languages/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ar/flag.pngbin585 -> 585 bytes
-rw-r--r--plugins/Languages/ar/informations.xml6
-rwxr-xr-xplugins/Languages/ar/translation.qmbin0 -> 28595 bytes
-rw-r--r--plugins/Languages/ar/translation.ts1853
-rw-r--r--plugins/Languages/de/informations.xml2
-rwxr-xr-xplugins/Languages/de/translation.qmbin0 -> 30785 bytes
-rw-r--r--plugins/Languages/de/translation.ts1444
-rwxr-xr-x[-rw-r--r--]plugins/Languages/el/flag.pngbin726 -> 726 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/el/informations.xml2
-rwxr-xr-xplugins/Languages/el/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/el/translation.ts1287
-rwxr-xr-xplugins/Languages/en/translation.qm1
-rwxr-xr-x[-rw-r--r--]plugins/Languages/es/flag.pngbin726 -> 726 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/es/informations.xml2
-rwxr-xr-xplugins/Languages/es/translation.qmbin0 -> 31962 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/es/translation.ts1343
-rwxr-xr-x[-rw-r--r--]plugins/Languages/fr/flag.pngbin699 -> 699 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/fr/informations.xml2
-rwxr-xr-xplugins/Languages/fr/translation.qmbin0 -> 32564 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/fr/translation.ts1299
-rwxr-xr-x[-rw-r--r--]plugins/Languages/hi/flag.pngbin728 -> 728 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/hi/informations.xml2
-rwxr-xr-xplugins/Languages/hi/translation.qmbin0 -> 334 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/hi/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/hu/flag.pngbin810 -> 810 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/hu/informations.xml2
-rwxr-xr-xplugins/Languages/hu/translation.qmbin0 -> 23508 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/hu/translation.ts1292
-rwxr-xr-x[-rw-r--r--]plugins/Languages/id/flag.pngbin691 -> 691 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/id/informations.xml2
-rwxr-xr-xplugins/Languages/id/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/id/translation.ts1287
-rw-r--r--plugins/Languages/it/informations.xml2
-rwxr-xr-xplugins/Languages/it/translation.qmbin0 -> 32517 bytes
-rw-r--r--plugins/Languages/it/translation.ts1574
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ja/flag.pngbin595 -> 595 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ja/informations.xml2
-rwxr-xr-xplugins/Languages/ja/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ja/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ko/flag.pngbin650 -> 650 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ko/informations.xml2
-rwxr-xr-xplugins/Languages/ko/translation.qmbin0 -> 8248 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ko/translation.ts1289
-rwxr-xr-x[-rw-r--r--]plugins/Languages/nl/flag.pngbin709 -> 709 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/nl/informations.xml2
-rwxr-xr-xplugins/Languages/nl/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/nl/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/no/flag.pngbin715 -> 715 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/no/informations.xml2
-rwxr-xr-xplugins/Languages/no/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/no/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/pl/flag.pngbin586 -> 586 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/pl/informations.xml2
-rwxr-xr-xplugins/Languages/pl/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/pl/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/pt/flag.pngbin686 -> 686 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/pt/informations.xml2
-rwxr-xr-xplugins/Languages/pt/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/pt/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ru/flag.pngbin721 -> 721 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ru/informations.xml2
-rwxr-xr-xplugins/Languages/ru/translation.qmbin0 -> 15940 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/ru/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/th/flag.pngbin731 -> 731 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/th/informations.xml2
-rwxr-xr-xplugins/Languages/th/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/th/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/tr/flag.pngbin634 -> 634 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/tr/informations.xml2
-rwxr-xr-xplugins/Languages/tr/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/tr/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Languages/zh/flag.pngbin538 -> 538 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/zh/informations.xml2
-rwxr-xr-xplugins/Languages/zh/translation.qmbin0 -> 412 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/zh/translation.ts1424
-rwxr-xr-x[-rw-r--r--]plugins/Languages/zh_TW/flag.pngbin616 -> 616 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/zh_TW/informations.xml2
-rwxr-xr-xplugins/Languages/zh_TW/translation.qmbin0 -> 2444 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Languages/zh_TW/translation.ts1287
-rwxr-xr-x[-rw-r--r--]plugins/Listener/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/DebugEngineMacro.h0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/Environment.h2
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/Listenercatchcopy-v0002Variable.h (renamed from plugins/SessionLoader/Windows/Variable.h)2
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/StructEnumDefinition.h0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ClientCatchcopy.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ClientCatchcopy.h0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ExtraSocketCatchcopy.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ExtraSocketCatchcopy.h0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ServerCatchcopy.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/ServerCatchcopy.h0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/catchcopy-api-0002/VariablesCatchcopy.h0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/documentation.dox0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/informations.xml2
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/listener.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/listener.h18
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/listener.pro2
-rwxr-xr-x[-rw-r--r--]plugins/Listener/catchcopy-v0002/plugin.json0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/DebugEngineMacro.h0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Environment.h2
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/ar/translation.qmbin0 -> 1059 bytes
-rw-r--r--plugins/PluginLoader/catchcopy-v0002/Languages/ar/translation.ts8
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/de/translation.qmbin0 -> 1136 bytes
-rw-r--r--plugins/PluginLoader/catchcopy-v0002/Languages/de/translation.ts4
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/el/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/el/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/en/translation.qmbin0 -> 334 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/en/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/es/translation.qmbin0 -> 487 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/es/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/fr/translation.qmbin0 -> 1246 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/fr/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/hi/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/hi/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/hu/translation.qmbin0 -> 989 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/hu/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/id/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/id/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/it/translation.qmbin0 -> 1300 bytes
-rw-r--r--plugins/PluginLoader/catchcopy-v0002/Languages/it/translation.ts6
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/ja/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/ja/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/ko/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/ko/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/nl/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/nl/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/no/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/no/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/pl/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/pl/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/pt/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/pt/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/ru/translation.qmbin0 -> 498 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/ru/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/th/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/th/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/tr/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/tr/translation.ts0
-rwxr-xr-xplugins/PluginLoader/catchcopy-v0002/Languages/zh/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/Languages/zh/translation.ts0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/OptionsWidget.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/OptionsWidget.h0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/OptionsWidget.ui0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/PlatformMacro.h0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/PluginLoadercatchcopy-v0002Variable.h (renamed from plugins/PluginLoader/catchcopy-v0002/Variable.h)2
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/StructEnumDefinition.h0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/documentation.dox0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/informations.xml2
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/plugin.json0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/pluginLoader.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/pluginLoader.h8
-rwxr-xr-x[-rw-r--r--]plugins/PluginLoader/catchcopy-v0002/pluginLoader.pro2
-rwxr-xr-x[-rw-r--r--]plugins/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/DebugEngineMacro.h0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/Environment.h2
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/SessionLoaderWindowsVariable.h (renamed from plugins/Listener/catchcopy-v0002/Variable.h)2
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/StructEnumDefinition.h0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/documentation.dox0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/informations.xml2
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/plugin.json0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/sessionLoader.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/sessionLoader.h0
-rwxr-xr-x[-rw-r--r--]plugins/SessionLoader/Windows/sessionLoader.pro2
-rwxr-xr-xplugins/SessionLoader/Windows/sessionLoader.pro.user.4.8-pre1333
-rwxr-xr-xplugins/SessionLoader/Windows/sessionLoader.pro.user.74ab603.4.8-pre1333
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/DebugEngineMacro.h0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Environment.h2
-rwxr-xr-xplugins/Themes/Oxygen/Languages/ar/translation.qmbin0 -> 5785 bytes
-rw-r--r--plugins/Themes/Oxygen/Languages/ar/translation.ts166
-rwxr-xr-xplugins/Themes/Oxygen/Languages/de/translation.qmbin0 -> 6711 bytes
-rw-r--r--plugins/Themes/Oxygen/Languages/de/translation.ts50
-rwxr-xr-xplugins/Themes/Oxygen/Languages/el/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/el/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/en/translation.qmbin0 -> 334 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/en/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/es/translation.qmbin0 -> 6167 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/es/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/fr/translation.qmbin0 -> 6346 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/fr/translation.ts16
-rwxr-xr-xplugins/Themes/Oxygen/Languages/hi/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/hi/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/hu/translation.qmbin0 -> 5951 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/hu/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/id/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/id/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/it/translation.qmbin0 -> 6445 bytes
-rw-r--r--plugins/Themes/Oxygen/Languages/it/translation.ts128
-rwxr-xr-xplugins/Themes/Oxygen/Languages/ja/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/ja/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/ko/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/ko/translation.ts16
-rwxr-xr-xplugins/Themes/Oxygen/Languages/nl/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/nl/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/no/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/no/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/pl/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/pl/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/pt/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/pt/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/ru/translation.qmbin0 -> 1630 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/ru/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/th/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/th/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/tr/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/tr/translation.ts40
-rwxr-xr-xplugins/Themes/Oxygen/Languages/zh/translation.qmbin0 -> 327 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/Languages/zh/translation.ts40
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/OxygenVariable.h (renamed from plugins/Themes/Oxygen/Variable.h)2
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/StructEnumDefinition.h0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/ThemesFactory.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/ThemesFactory.h0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/TransferModel.cpp0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/TransferModel.h0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/documentation.dox0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/informations.xml2
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interface.cpp48
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interface.h5
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interface.pro2
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interface.ui0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interfaceInclude.pri4
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interfaceResources.qrc0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interfaceResources_unix.qrc0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/interfaceResources_windows.qrc0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/options.ui0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/plugin.json0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/add.pngbin552 -> 552 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/exit.pngbin874 -> 874 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/informations.pngbin841 -> 841 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/options.pngbin624 -> 624 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Unix.pngbin1093 -> 1093 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Caught_Windows.pngbin623 -> 623 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Semiuncaught_Unix.pngbin1174 -> 1174 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Semiuncaught_Windows.pngbin677 -> 677 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Uncaught_Unix.pngbin665 -> 665 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/SystemTrayIcon/systray_Uncaught_Windows.pngbin439 -> 439 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/add.pngbin552 -> 552 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/cancel.pngbin874 -> 874 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/export-transfer-list.pngbin455 -> 455 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/import-transfer-list.pngbin454 -> 454 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/main.pngbin623 -> 623 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/moveDown.pngbin466 -> 466 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/moveUp.pngbin466 -> 466 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/player_end.pngbin696 -> 696 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/player_pause.pngbin640 -> 640 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/player_play.pngbin673 -> 673 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/putOnBottom.pngbin676 -> 676 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/putOnTop.pngbin681 -> 681 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/remove.pngbin683 -> 683 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/resources/search.pngbin781 -> 781 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Oxygen/themesOptions.ui0
-rwxr-xr-xplugins/Themes/Oxygen2/DarkButton.cpp99
-rwxr-xr-xplugins/Themes/Oxygen2/DarkButton.h22
-rwxr-xr-xplugins/Themes/Oxygen2/DebugEngineMacro.h28
-rwxr-xr-xplugins/Themes/Oxygen2/Environment.h10
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ar/translation.qmbin0 -> 6338 bytes
-rw-r--r--plugins/Themes/Oxygen2/Languages/ar/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/de/translation.qmbin0 -> 7079 bytes
-rw-r--r--plugins/Themes/Oxygen2/Languages/de/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/el/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/el/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/en/translation.qmbin0 -> 334 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/en/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/es/translation.qmbin0 -> 6112 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/es/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/fr/translation.qmbin0 -> 6702 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/fr/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/hi/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/hi/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/hu/translation.qmbin0 -> 5898 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/hu/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/id/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/id/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/it/translation.qmbin0 -> 7360 bytes
-rw-r--r--plugins/Themes/Oxygen2/Languages/it/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ja/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ja/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ko/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ko/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/nl/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/nl/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/no/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/no/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/pl/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/pl/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/pt/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/pt/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ru/translation.qmbin0 -> 1581 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/ru/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/th/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/th/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/tr/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/tr/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/zh/translation.qmbin0 -> 327 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/Languages/zh/translation.ts382
-rwxr-xr-xplugins/Themes/Oxygen2/Oxygen2Environment.h10
-rwxr-xr-xplugins/Themes/Oxygen2/Oxygen2Variable.h18
-rwxr-xr-xplugins/Themes/Oxygen2/ProgressBarDark.cpp69
-rwxr-xr-xplugins/Themes/Oxygen2/ProgressBarDark.h17
-rwxr-xr-xplugins/Themes/Oxygen2/README.md4
-rwxr-xr-xplugins/Themes/Oxygen2/StructEnumDefinition.h1
-rwxr-xr-xplugins/Themes/Oxygen2/ThemesFactory.cpp573
-rwxr-xr-xplugins/Themes/Oxygen2/ThemesFactory.h89
-rwxr-xr-xplugins/Themes/Oxygen2/TransferModel.cpp755
-rwxr-xr-xplugins/Themes/Oxygen2/TransferModel.h106
-rwxr-xr-xplugins/Themes/Oxygen2/VerticalLabel.cpp44
-rwxr-xr-xplugins/Themes/Oxygen2/VerticalLabel.h21
-rwxr-xr-xplugins/Themes/Oxygen2/chartarea.cpp117
-rwxr-xr-xplugins/Themes/Oxygen2/chartarea.h31
-rwxr-xr-xplugins/Themes/Oxygen2/documentation.dox31
-rwxr-xr-xplugins/Themes/Oxygen2/fileTree.cpp149
-rwxr-xr-xplugins/Themes/Oxygen2/fileTree.h133
-rwxr-xr-xplugins/Themes/Oxygen2/informations.xml26
-rwxr-xr-xplugins/Themes/Oxygen2/interface.cpp1995
-rwxr-xr-xplugins/Themes/Oxygen2/interface.h259
-rwxr-xr-xplugins/Themes/Oxygen2/interface.pro8
-rwxr-xr-xplugins/Themes/Oxygen2/interface.ui1098
-rwxr-xr-xplugins/Themes/Oxygen2/interfaceInclude.pri73
-rwxr-xr-xplugins/Themes/Oxygen2/interfaceResources.qrc36
-rwxr-xr-xplugins/Themes/Oxygen2/interfaceResources_unix.qrc7
-rwxr-xr-xplugins/Themes/Oxygen2/interfaceResources_windows.qrc7
-rwxr-xr-xplugins/Themes/Oxygen2/options.ui280
-rwxr-xr-xplugins/Themes/Oxygen2/plugin.json1
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/labels.cpp338
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/map.cpp421
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/map.h85
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/radialMap.h109
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/widget.cpp211
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/widget.h118
-rwxr-xr-xplugins/Themes/Oxygen2/radialMap/widgetEvents.cpp254
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/add.pngbin0 -> 552 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/exit.pngbin0 -> 874 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/informations.pngbin0 -> 841 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/options.pngbin0 -> 624 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Unix.pngbin0 -> 1093 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Caught_Windows.pngbin0 -> 623 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Unix.pngbin0 -> 1174 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Semiuncaught_Windows.pngbin0 -> 677 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Unix.pngbin0 -> 665 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/SystemTrayIcon/systray_Uncaught_Windows.pngbin0 -> 439 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/add.pngbin0 -> 552 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/cancel.pngbin0 -> 874 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/cancelDarkD.pngbin0 -> 151 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/cancelDarkE.pngbin0 -> 473 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/click.opusbin0 -> 632 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkButton.pngbin0 -> 3632 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkButtonOver.pngbin0 -> 4286 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkButtonPushed.pngbin0 -> 3541 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkmoveDown.pngbin0 -> 1349 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkmoveUp.pngbin0 -> 1530 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkplayer_end.pngbin0 -> 1153 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkplayer_pause.pngbin0 -> 1059 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/darkplayer_play.pngbin0 -> 1166 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/export-transfer-list.pngbin0 -> 455 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/import-transfer-list.pngbin0 -> 454 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/main.pngbin0 -> 623 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/moveDown.pngbin0 -> 466 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/moveUp.pngbin0 -> 466 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/over.opusbin0 -> 527 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/player_end.pngbin0 -> 696 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/player_pause.pngbin0 -> 640 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/player_play.pngbin0 -> 673 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/progressBarin.pngbin0 -> 4487 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/progressBarout.pngbin0 -> 1287 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/putOnBottom.pngbin0 -> 676 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/putOnTop.pngbin0 -> 681 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/remove.pngbin0 -> 683 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/resources/search.pngbin0 -> 781 bytes
-rwxr-xr-xplugins/Themes/Oxygen2/themesOptions.ui466
-rwxr-xr-x[-rw-r--r--]plugins/Themes/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/README.md0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/informations.xml2
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/interface.pro2
-rwxr-xr-xplugins/Themes/Supercopier/interface.pro.user.4.8-pre1328
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/interfaceResources.qrc0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/interfaceResources_unix.qrc0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/interfaceResources_windows.qrc0
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/add.pngbin246 -> 246 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/exit.pngbin545 -> 545 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/informations.pngbin281 -> 281 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/options.pngbin275 -> 275 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Unix.pngbin147 -> 147 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Caught_Windows.pngbin148 -> 148 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Unix.pngbin147 -> 147 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Semiuncaught_Windows.pngbin148 -> 148 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Unix.pngbin141 -> 141 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/SystemTrayIcon/systray_Uncaught_Windows.pngbin139 -> 139 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/add.pngbin240 -> 240 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/cancel.pngbin284 -> 284 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/export-transfer-list.pngbin264 -> 264 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/import-transfer-list.pngbin316 -> 316 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/main.pngbin148 -> 148 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/moveDown.pngbin191 -> 191 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/moveUp.pngbin190 -> 190 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/player_end.pngbin226 -> 226 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/player_pause.pngbin207 -> 207 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/player_play.pngbin208 -> 208 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/progressbarleft.pngbin133 -> 133 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/progressbarright.pngbin132 -> 132 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/putOnBottom.pngbin206 -> 206 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/putOnTop.pngbin208 -> 208 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/remove.pngbin254 -> 254 bytes
-rwxr-xr-x[-rw-r--r--]plugins/Themes/Supercopier/resources/search.pngbin237 -> 237 bytes
-rwxr-xr-x[-rw-r--r--]plugins/static-plugins-oxygen.qrc3
-rwxr-xr-x[-rw-r--r--]plugins/static-plugins-windows.qrc1
-rwxr-xr-x[-rw-r--r--]plugins/static-plugins.qrc9
559 files changed, 53191 insertions, 39520 deletions
diff --git a/plugins/CopyEngine/README.md b/plugins/CopyEngine/README.md
index 317a7e4..317a7e4 100644..100755
--- a/plugins/CopyEngine/README.md
+++ b/plugins/CopyEngine/README.md
diff --git a/plugins/CopyEngine/Random/CopyEngine.cpp b/plugins/CopyEngine/Random/CopyEngine.cpp
new file mode 100755
index 0000000..662fb5b
--- /dev/null
+++ b/plugins/CopyEngine/Random/CopyEngine.cpp
@@ -0,0 +1,253 @@
+/** \file copyEngine.cpp
+\brief Define the copy engine
+\author alpha_one_x86 */
+
+#include "CopyEngine.h"
+#include "../../../interface/PluginInterface_CopyEngine.h"
+#include <QCoreApplication>
+
+CopyEngine::CopyEngine()
+{
+ timer=new QTimer();
+ connect(timer,&QTimer::timeout,this,&CopyEngine::timerSlot);
+ timer->start(1000);
+ send=false;
+}
+
+CopyEngine::~CopyEngine()
+{
+}
+
+//to send the options panel
+bool CopyEngine::getOptionsEngine(QWidget * tempWidget)
+{
+ (void)tempWidget;
+ return true;
+}
+
+//to have interface widget to do modal dialog
+void CopyEngine::setInterfacePointer(QWidget * uiinterface)
+{
+ (void)uiinterface;
+ syncTransferList();
+}
+
+bool CopyEngine::haveSameSource(const std::vector<std::string> &)
+{
+ return false;
+}
+
+bool CopyEngine::haveSameDestination(const std::string &)
+{
+ return false;
+}
+
+bool CopyEngine::newCopy(const std::vector<std::string> &sources)
+{
+ (void)sources;
+ return true;
+}
+
+bool CopyEngine::newCopy(const std::vector<std::string> &sources,const std::string &destination)
+{
+ (void)sources;
+ (void)destination;
+ return true;
+}
+
+bool CopyEngine::newMove(const std::vector<std::string> &sources)
+{
+ (void)sources;
+ return true;
+}
+
+bool CopyEngine::newMove(const std::vector<std::string> &sources,const std::string &destination)
+{
+ (void)sources;
+ (void)destination;
+ return true;
+}
+
+void CopyEngine::newTransferList(const std::string &file)
+{
+ (void)file;
+}
+
+//because direct access to list thread into the main thread can't be do
+uint64_t CopyEngine::realByteTransfered()
+{
+ return rand()%200000000;
+}
+
+void CopyEngine::timerSlot()
+{
+ emit pushGeneralProgression(rand()%200000000,200000000);
+
+ {
+ std::vector<std::pair<uint64_t,uint32_t> > progressionList;
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(100, 2));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(1000, 2));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(10000, 2+ rand()%2));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(100000, 5+ rand()%3));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(1000000, 15+ rand()%3));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(10000000, 50+ rand()%10));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(100000000, 800+ rand()%100));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(1000000000, 6000+ rand()%500));
+ progressionList.push_back(std::pair<uint64_t,uint32_t>(10000000000, 50000+ rand()%1000));
+ emit doneTime(progressionList);
+ }
+
+ {
+ std::vector<Ultracopier::ProgressionItem> progressionList;
+ Ultracopier::ProgressionItem entry;
+ entry.currentRead=60*1024*1024+rand()%20*1024*1024;
+ entry.currentWrite=40*1024*1024+rand()%20*1024*1024;
+ entry.id=1;
+ entry.total=100*1024*1024;
+ progressionList.push_back(entry);
+ emit pushFileProgression(progressionList);
+ }
+}
+
+//speed limitation
+bool CopyEngine::supportSpeedLimitation() const
+{
+ return false;
+}
+
+/** \brief to sync the transfer list
+ * Used when the interface is changed, useful to minimize the memory size */
+void CopyEngine::syncTransferList()
+{
+ emit syncReady();
+ if(send)
+ return;
+ send=true;
+
+ emit actionInProgess(Ultracopier::Copying);
+
+ std::vector<Ultracopier::ReturnActionOnCopyList> actionsList;
+ Ultracopier::ReturnActionOnCopyList newAction;
+ newAction.type = Ultracopier::AddingItem;
+
+ newAction.addAction.id = 1;
+ newAction.addAction.sourceFullPath = "/folder1/file.iso";
+ newAction.addAction.sourceFileName = "file.iso";
+ newAction.addAction.destinationFullPath = "/dest/folder1/file.iso";
+ newAction.addAction.destinationFileName = "file.iso";
+ newAction.addAction.size = 100*1024*1024;
+ newAction.addAction.mode = Ultracopier::CopyMode::Copy;
+ actionsList.push_back(newAction);
+
+ newAction.addAction.id = 2;
+ newAction.addAction.sourceFullPath = "/file.mp3";
+ newAction.addAction.sourceFileName = "file.mp3";
+ newAction.addAction.destinationFullPath = "/dest/file.mp3";
+ newAction.addAction.destinationFileName = "file.mp3";
+ newAction.addAction.size = 10*1024*1024;
+ newAction.addAction.mode = Ultracopier::CopyMode::Copy;
+ actionsList.push_back(newAction);
+
+ newAction.addAction.id = 3;
+ newAction.addAction.sourceFullPath = "/file.mp4";
+ newAction.addAction.sourceFileName = "file.mp4";
+ newAction.addAction.destinationFullPath = "/dest/file.mp4";
+ newAction.addAction.destinationFileName = "file.mp4";
+ newAction.addAction.size = 50*1024*1024;
+ newAction.addAction.mode = Ultracopier::CopyMode::Copy;
+ actionsList.push_back(newAction);
+
+ newAction.addAction.id = 1;
+ newAction.addAction.sourceFullPath = "/folder1/file.iso";
+ newAction.addAction.sourceFileName = "file.iso";
+ newAction.addAction.destinationFullPath = "/dest/folder1/file.iso";
+ newAction.addAction.destinationFileName = "file.iso";
+ newAction.addAction.size = 100*1024*1024;
+ newAction.addAction.mode = Ultracopier::CopyMode::Copy;
+ newAction.type = Ultracopier::PreOperation;
+ actionsList.push_back(newAction);
+ newAction.type = Ultracopier::Transfer;
+ actionsList.push_back(newAction);
+
+ emit newActionOnList(actionsList);
+}
+
+bool CopyEngine::userAddFolder(const Ultracopier::CopyMode &mode)
+{
+ (void)mode;
+ return true;
+}
+
+bool CopyEngine::userAddFile(const Ultracopier::CopyMode &mode)
+{
+ (void)mode;
+ return true;
+}
+
+void CopyEngine::pause()
+{
+}
+
+void CopyEngine::resume()
+{
+}
+
+void CopyEngine::skip(const uint64_t &id)
+{
+ (void)id;
+}
+
+void CopyEngine::cancel()
+{
+ emit canBeDeleted();
+}
+
+void CopyEngine::removeItems(const std::vector<uint64_t> &ids)
+{
+ (void)ids;
+}
+
+void CopyEngine::moveItemsOnTop(const std::vector<uint64_t> &ids)
+{
+ (void)ids;
+}
+
+void CopyEngine::moveItemsUp(const std::vector<uint64_t> &ids)
+{
+ (void)ids;
+}
+
+void CopyEngine::moveItemsDown(const std::vector<uint64_t> &ids)
+{
+ (void)ids;
+}
+
+void CopyEngine::moveItemsOnBottom(const std::vector<uint64_t> &ids)
+{
+ (void)ids;
+}
+
+/** \brief give the forced mode, to export/import transfer list */
+void CopyEngine::forceMode(const Ultracopier::CopyMode &mode)
+{
+ (void)mode;
+}
+
+void CopyEngine::exportTransferList()
+{
+}
+
+void CopyEngine::importTransferList()
+{
+}
+
+bool CopyEngine::setSpeedLimitation(const int64_t &speedLimitation)
+{
+ (void)speedLimitation;
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"maxSpeed: "+std::to_string(speedLimitation));
+ return false;
+}
+
+void CopyEngine::exportErrorIntoTransferList()
+{
+}
diff --git a/plugins/CopyEngine/Random/CopyEngine.h b/plugins/CopyEngine/Random/CopyEngine.h
new file mode 100755
index 0000000..2da5da5
--- /dev/null
+++ b/plugins/CopyEngine/Random/CopyEngine.h
@@ -0,0 +1,128 @@
+/** \file copyEngine.h
+\brief Define the copy engine
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include "../../../interface/PluginInterface_CopyEngine.h"
+
+#ifndef COPY_ENGINE_H
+#define COPY_ENGINE_H
+
+#include <QTimer>
+
+namespace Ui {
+ class copyEngineOptions;
+}
+
+/// \brief the implementation of copy engine plugin, manage directly few stuff, else pass to ListThread class.
+class CopyEngine : public PluginInterface_CopyEngine
+{
+ Q_OBJECT
+public:
+ CopyEngine();
+ ~CopyEngine();
+ void exportErrorIntoTransferList() override;
+public:
+ /** \brief to send the options panel
+ * \return return false if have not the options
+ * \param tempWidget the widget to generate on it the options */
+ bool getOptionsEngine(QWidget * tempWidget) override;
+ /** \brief to have interface widget to do modal dialog
+ * \param interface to have the widget of the interface, useful for modal dialog */
+ void setInterfacePointer(QWidget * uiinterface) override;
+ //return empty if multiple
+ /** \brief compare the current sources of the copy, with the passed arguments
+ * \param sources the sources list to compares with the current sources list
+ * \return true if have same sources, else false (or empty) */
+ bool haveSameSource(const std::vector<std::string> &sources) override;
+ /** \brief compare the current destination of the copy, with the passed arguments
+ * \param destination the destination to compares with the current destination
+ * \return true if have same destination, else false (or empty) */
+ bool haveSameDestination(const std::string &destination) override;
+ //external soft like file browser have send copy/move list to do
+ /** \brief send copy without destination, ask the destination
+ * \param sources the sources list to copy
+ * \return true if the copy have been accepted */
+ bool newCopy(const std::vector<std::string> &sources) override;
+ /** \brief send copy with destination
+ * \param sources the sources list to copy
+ * \param destination the destination to copy
+ * \return true if the copy have been accepted */
+ bool newCopy(const std::vector<std::string> &sources,const std::string &destination) override;
+ /** \brief send move without destination, ask the destination
+ * \param sources the sources list to move
+ * \return true if the move have been accepted */
+ bool newMove(const std::vector<std::string> &sources) override;
+ /** \brief send move without destination, ask the destination
+ * \param sources the sources list to move
+ * \param destination the destination to move
+ * \return true if the move have been accepted */
+ bool newMove(const std::vector<std::string> &sources,const std::string &destination) override;
+ /** \brief send the new transfer list
+ * \param file the transfer list */
+ void newTransferList(const std::string &file) override;
+
+ /** \brief to get byte read, use by Ultracopier for the speed calculation
+ * real size transfered to right speed calculation */
+ uint64_t realByteTransfered() override;
+ /** \brief support speed limitation */
+ bool supportSpeedLimitation() const override;
+
+ /** \brief to set drives detected
+ * specific to this copy engine */
+
+ /** \brief to sync the transfer list
+ * Used when the interface is changed, useful to minimize the memory size */
+ void syncTransferList() override;
+public slots:
+ //user ask ask to add folder (add it with interface ask source/destination)
+ /** \brief add folder called on the interface
+ * Used by manual adding */
+ bool userAddFolder(const Ultracopier::CopyMode &mode) override;
+ /** \brief add file called on the interface
+ * Used by manual adding */
+ bool userAddFile(const Ultracopier::CopyMode &mode) override;
+ //action on the copy
+ /// \brief put the transfer in pause
+ void pause() override;
+ /// \brief resume the transfer
+ void resume() override;
+ /** \brief skip one transfer entry
+ * \param id id of the file to remove */
+ void skip(const uint64_t &id) override;
+ /// \brief cancel all the transfer
+ void cancel() override;
+ //edit the transfer list
+ /** \brief remove the selected item
+ * \param ids ids is the id list of the selected items */
+ void removeItems(const std::vector<uint64_t> &ids) override;
+ /** \brief move on top of the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsOnTop(const std::vector<uint64_t> &ids) override;
+ /** \brief move up the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsUp(const std::vector<uint64_t> &ids) override;
+ /** \brief move down the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsDown(const std::vector<uint64_t> &ids) override;
+ /** \brief move on bottom of the list the selected item
+ * \param ids ids is the id list of the selected items */
+ void moveItemsOnBottom(const std::vector<uint64_t> &ids) override;
+
+ /** \brief give the forced mode, to export/import transfer list */
+ void forceMode(const Ultracopier::CopyMode &mode) override;
+ /// \brief export the transfer list into a file
+ void exportTransferList() override;
+ /// \brief import the transfer list into a file
+ void importTransferList() override;
+
+ /** \brief to set the speed limitation
+ * -1 if not able, 0 if disabled */
+ bool setSpeedLimitation(const int64_t &speedLimitation) override;
+private:
+ bool send;
+ QTimer *timer;
+ void timerSlot();
+};
+
+#endif // COPY_ENGINE_H
diff --git a/plugins/CopyEngine/Random/CopyEngine.pro b/plugins/CopyEngine/Random/CopyEngine.pro
new file mode 100755
index 0000000..f65ce88
--- /dev/null
+++ b/plugins/CopyEngine/Random/CopyEngine.pro
@@ -0,0 +1,26 @@
+CONFIG += c++11
+QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
+mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
+
+QT += widgets xml
+DEFINES += UNICODE _UNICODE
+TEMPLATE = lib
+CONFIG += plugin
+
+HEADERS += \
+ $$PWD/../../../interface/PluginInterface_CopyEngine.h \
+ $$PWD/../../../interface/OptionInterface.h \
+ $$PWD/../../../interface/FacilityInterface.h \
+ $$PWD/../../../cpp11addition.h \
+ $$PWD/CopyEngine.h \
+ $$PWD/CopyEngineFactory.h
+SOURCES += \
+ $$PWD/../../../cpp11addition.cpp \
+ $$PWD/../../../cpp11additionstringtointcpp.cpp \
+ $$PWD/CopyEngine.cpp \
+ $$PWD/CopyEngineFactory.cpp
+TARGET = $$qtLibraryTarget(copyEngine)
+
+win32 {
+ LIBS += -ladvapi32
+}
diff --git a/plugins/CopyEngine/Random/CopyEngineFactory.cpp b/plugins/CopyEngine/Random/CopyEngineFactory.cpp
new file mode 100755
index 0000000..8fe5ad6
--- /dev/null
+++ b/plugins/CopyEngine/Random/CopyEngineFactory.cpp
@@ -0,0 +1,78 @@
+/** \file factory.cpp
+\brief Define the factory to create new instance
+\author alpha_one_x86 */
+
+#include "../../../cpp11addition.h"
+#include "CopyEngineFactory.h"
+
+CopyEngineFactory::CopyEngineFactory()
+{
+}
+
+CopyEngineFactory::~CopyEngineFactory()
+{
+}
+
+PluginInterface_CopyEngine * CopyEngineFactory::getInstance()
+{
+ CopyEngine *realObject=new CopyEngine();
+ return realObject;
+}
+
+void CopyEngineFactory::setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath,
+ FacilityInterface * facilityInterface,const bool &portableVersion)
+{
+ (void)options;
+ (void)writePath;
+ (void)pluginPath;
+ (void)facilityInterface;
+ (void)portableVersion;
+}
+
+std::vector<std::string> CopyEngineFactory::supportedProtocolsForTheSource() const
+{
+ std::vector<std::string> l;
+ l.push_back("file");
+ return l;
+}
+
+std::vector<std::string> CopyEngineFactory::supportedProtocolsForTheDestination() const
+{
+ std::vector<std::string> l;
+ l.push_back("file");
+ return l;
+}
+
+Ultracopier::CopyType CopyEngineFactory::getCopyType()
+{
+ return Ultracopier::FileAndFolder;
+}
+
+Ultracopier::TransferListOperation CopyEngineFactory::getTransferListOperation()
+{
+ return Ultracopier::TransferListOperation_ImportExport;
+}
+
+bool CopyEngineFactory::canDoOnlyCopy() const
+{
+ return false;
+}
+
+void CopyEngineFactory::resetOptions()
+{
+}
+
+QWidget * CopyEngineFactory::options()
+{
+ return nullptr;
+}
+
+/// \brief to get if have pause
+bool CopyEngineFactory::havePause()
+{
+ return false;
+}
+
+void CopyEngineFactory::newLanguageLoaded()
+{
+}
diff --git a/plugins/CopyEngine/Random/CopyEngineFactory.h b/plugins/CopyEngine/Random/CopyEngineFactory.h
new file mode 100755
index 0000000..b1bad6a
--- /dev/null
+++ b/plugins/CopyEngine/Random/CopyEngineFactory.h
@@ -0,0 +1,58 @@
+/** \file factory.h
+\brief Define the factory to create new instance
+\author alpha_one_x86
+\licence GPL3, see the file COPYING */
+
+#include <QObject>
+#include <QList>
+#include <QStringList>
+#include <QFileInfo>
+#include <QProcess>
+#include <QTimer>
+
+#include "../../../interface/PluginInterface_CopyEngine.h"
+#include "CopyEngine.h"
+
+#ifndef FACTORY_H
+#define FACTORY_H
+
+namespace Ui {
+ class copyEngineOptions;
+}
+
+/** \brief to generate copy engine instance */
+class CopyEngineFactory : public PluginInterface_CopyEngineFactory
+{
+ Q_OBJECT
+ #ifndef ULTRACOPIER_PLUGIN_ALL_IN_ONE_DIRECT
+ Q_PLUGIN_METADATA(IID "first-world.info.ultracopier.PluginInterface.CopyEngineFactory/2.0.0.0" FILE "plugin.json")
+ Q_INTERFACES(PluginInterface_CopyEngineFactory)
+ #endif
+public:
+ CopyEngineFactory();
+ ~CopyEngineFactory();
+ /// \brief to return the instance of the copy engine
+ PluginInterface_CopyEngine * getInstance();
+ /// \brief set the resources, to store options, to have facilityInterface
+ void setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath,FacilityInterface * facilityInterface,const bool &portableVersion) override;
+ //get mode allowed
+ /// \brief define if can copy file, folder or both
+ Ultracopier::CopyType getCopyType() override;
+ /// \brief to return which kind of transfer list operation is supported
+ Ultracopier::TransferListOperation getTransferListOperation() override;
+ /// \brief define if can only copy, or copy and move
+ bool canDoOnlyCopy() const override;
+ /// \brief to get the supported protocols for the source
+ std::vector<std::string> supportedProtocolsForTheSource() const override;
+ /// \brief to get the supported protocols for the destination
+ std::vector<std::string> supportedProtocolsForTheDestination() const override;
+ /// \brief to get the options of the copy engine
+ QWidget * options() override;
+ /// \brief to get if have pause
+ bool havePause() override;
+public slots:
+ void resetOptions() override;
+ void newLanguageLoaded() override;
+};
+
+#endif // FACTORY_H
diff --git a/plugins/CopyEngine/Ultracopier/README.md b/plugins/CopyEngine/Random/README.md
index a15b943..a15b943 100644..100755
--- a/plugins/CopyEngine/Ultracopier/README.md
+++ b/plugins/CopyEngine/Random/README.md
diff --git a/plugins/CopyEngine/Random/informations.xml b/plugins/CopyEngine/Random/informations.xml
new file mode 100755
index 0000000..490980f
--- /dev/null
+++ b/plugins/CopyEngine/Random/informations.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package>
+ <title xml:lang="en"><![CDATA[Random copy engine]]></title><!-- english is required -->
+ <!-- What kind of plugin this is -->
+ <category>CopyEngine</category>
+ <!-- Who wrote this plugin -->
+ <author><![CDATA[BRULE Herman, alpha_one_x86 (alpha_one_x86@first-world.info)]]></author>
+ <!-- URL of page or site for this plugin (may provide additional information, bug reports, feature requests). -->
+ <website xml:lang="en"><![CDATA[http://ultracopier.first-world.info/]]></website><!-- not required -->
+ <website xml:lang="fr"><![CDATA[http://ultracopier-fr.first-world.info/]]></website><!-- not required -->
+ <!-- the date-time format should be in timestamps format -->
+ <pubDate>1287496800</pubDate>
+ <!-- the architecture code of this plugin, found PlatformMacro.h into ultracopier source -->
+ <architecture>windows-x86</architecture>
+ <!-- Detailed description -->
+ <description xml:lang="en"><![CDATA[TODO]]></description>
+ <!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
+ <version>2.2.4.4</version>
+ <!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
+ <name>Random</name>
+ <!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
+ <dependencies><![CDATA[
+ ]]></dependencies>
+</package>
diff --git a/plugins/CopyEngine/Ultracopier/plugin.json b/plugins/CopyEngine/Random/plugin.json
index 9e26dfe..9e26dfe 100644..100755
--- a/plugins/CopyEngine/Ultracopier/plugin.json
+++ b/plugins/CopyEngine/Random/plugin.json
diff --git a/plugins/CopyEngine/Rsync/CopyEngine.pro b/plugins/CopyEngine/Rsync/CopyEngine.pro
new file mode 100755
index 0000000..9728dc0
--- /dev/null
+++ b/plugins/CopyEngine/Rsync/CopyEngine.pro
@@ -0,0 +1,2 @@
+include($$PWD/../Ultracopier/Ultracopier.pro)
+DEFINES += ULTRACOPIER_PLUGIN_RSYNC
diff --git a/plugins/CopyEngine/Rsync/README.md b/plugins/CopyEngine/Rsync/README.md
index 94452a4..94452a4 100644..100755
--- a/plugins/CopyEngine/Rsync/README.md
+++ b/plugins/CopyEngine/Rsync/README.md
diff --git a/plugins/CopyEngine/Rsync/Rsync.pro b/plugins/CopyEngine/Rsync/Rsync.pro
index e525f27..e525f27 100644..100755
--- a/plugins/CopyEngine/Rsync/Rsync.pro
+++ b/plugins/CopyEngine/Rsync/Rsync.pro
diff --git a/plugins/CopyEngine/Rsync/informations.xml b/plugins/CopyEngine/Rsync/informations.xml
index 990809e..5ded350 100644..100755
--- a/plugins/CopyEngine/Rsync/informations.xml
+++ b/plugins/CopyEngine/Rsync/informations.xml
@@ -17,7 +17,7 @@
<description xml:lang="en"><![CDATA[Rsync copy engine, variant of the official copy engine to provide simple way to do backups]]></description>
<description xml:lang="fr"><![CDATA[Moteur de copie rsync, variante du moteur de copie officiel pour fournir une maniére simple de faire des backups]]></description>
<!-- Version of this release of this plugin, need be like that's: A.B.C.D, where A, B, C and D is number -->
- <version>1.6.1.3</version>
+ <version>2.2.4.4</version>
<!-- This internal name should never change, because it is used to detect when a particular plugin is updated. It must comprise only lower case ASCII characters (a-z), numerical digits (0-9), "-", "." or "_", and it must be be unique within the category. And have size lower than 64 char. -->
<name>Rsync</name>
<!-- Dependency checking. This is used to check when a plugin may not be compatible with an updated version of either Ultracopier or another plugin. This example only checks Ultracopier. -->
diff --git a/plugins/CopyEngine/Ultracopier-Spec/CallBackEventLoop.h b/plugins/CopyEngine/Ultracopier-Spec/CallBackEventLoop.h
new file mode 100755
index 0000000..811bf86
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/CallBackEventLoop.h
@@ -0,0 +1,15 @@
+#ifndef CALLBACKEVENTLOOP_H
+#define CALLBACKEVENTLOOP_H
+
+#include <QObject>
+#include "Variable.h"
+
+#ifdef POSIXFILEMANIP
+class CallBackEventLoop
+{
+public:
+ virtual void callBack() = 0;
+};
+#endif
+
+#endif // CALLBACKEVENTLOOP_H
diff --git a/plugins/CopyEngine/Ultracopier/CompilerInfo.h b/plugins/CopyEngine/Ultracopier-Spec/CompilerInfo.h
index 84625b9..84625b9 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CompilerInfo.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/CompilerInfo.h
diff --git a/plugins/CopyEngine/Ultracopier/CopyEngine-collision-and-error.cpp b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine-collision-and-error.cpp
index 16c36ae..fcf43ff 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CopyEngine-collision-and-error.cpp
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine-collision-and-error.cpp
@@ -8,37 +8,37 @@
//dialog message
/// \note Can be call without queue because all call will be serialized
-void CopyEngine::fileAlreadyExistsSlot(QFileInfo source,QFileInfo destination,bool isSame,TransferThread * thread)
+void CopyEngine::fileAlreadyExistsSlot(INTERNALTYPEPATH source,INTERNALTYPEPATH destination,bool isSame,TransferThreadAsync * thread)
{
fileAlreadyExists(source,destination,isSame,thread);
}
/// \note Can be call without queue because all call will be serialized
-void CopyEngine::errorOnFileSlot(QFileInfo fileInfo,std::string errorString,TransferThread * thread,const ErrorType &errorType)
+void CopyEngine::errorOnFileSlot(INTERNALTYPEPATH fileInfo,std::string errorString,TransferThreadAsync * thread,const ErrorType &errorType)
{
errorOnFile(fileInfo,errorString,thread,errorType);
}
/// \note Can be call without queue because all call will be serialized
-void CopyEngine::folderAlreadyExistsSlot(QFileInfo source,QFileInfo destination,bool isSame,ScanFileOrFolder * thread)
+void CopyEngine::folderAlreadyExistsSlot(INTERNALTYPEPATH source,INTERNALTYPEPATH destination,bool isSame,ScanFileOrFolder * thread)
{
folderAlreadyExists(source,destination,isSame,thread);
}
/// \note Can be call without queue because all call will be serialized
-void CopyEngine::errorOnFolderSlot(QFileInfo fileInfo,std::string errorString,ScanFileOrFolder * thread,ErrorType errorType)
+void CopyEngine::errorOnFolderSlot(INTERNALTYPEPATH fileInfo,std::string errorString,ScanFileOrFolder * thread,ErrorType errorType)
{
errorOnFolder(fileInfo,errorString,thread,errorType);
}
//mkpath event
-void CopyEngine::mkPathErrorOnFolderSlot(QFileInfo folder,std::string error,ErrorType errorType)
+void CopyEngine::mkPathErrorOnFolderSlot(INTERNALTYPEPATH folder,std::string error,ErrorType errorType)
{
mkPathErrorOnFolder(folder,error,errorType);
}
/// \note Can be call without queue because all call will be serialized
-void CopyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool isSame,TransferThread * thread,bool isCalledByShowOneNewDialog)
+void CopyEngine::fileAlreadyExists(INTERNALTYPEPATH source,INTERNALTYPEPATH destination,bool isSame,TransferThreadAsync * thread,bool isCalledByShowOneNewDialog)
{
if(stopIt)
return;
@@ -50,9 +50,9 @@ void CopyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool i
//load the action
if(isSame)
{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file is same: "+source.absoluteFilePath().toStdString());
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file is same: "+TransferThread::internalStringTostring(source));
FileExistsAction tempFileExistsAction=alwaysDoThisActionForFileExists;
- if(tempFileExistsAction==FileExists_Overwrite || tempFileExistsAction==FileExists_OverwriteIfNewer || tempFileExistsAction==FileExists_OverwriteIfNotSame || tempFileExistsAction==FileExists_OverwriteIfOlder)
+ if(tempFileExistsAction==FileExists_Overwrite || tempFileExistsAction==FileExists_OverwriteIfNewer || tempFileExistsAction==FileExists_OverwriteIfNotSameMdate || tempFileExistsAction==FileExists_OverwriteIfOlder)
tempFileExistsAction=FileExists_NotSet;
switch(tempFileExistsAction)
{
@@ -74,7 +74,7 @@ void CopyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool i
}
dialogIsOpen=true;
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
- FileIsSameDialog dialog(interface,source,firstRenamingRule,otherRenamingRule);
+ FileIsSameDialog dialog(uiinterface,source,firstRenamingRule,otherRenamingRule,facilityEngine);
emit isInPause(true);
dialog.exec();/// \bug crash when external close
FileExistsAction newAction=dialog.getAction();
@@ -107,14 +107,20 @@ void CopyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool i
thread->setFileRename(dialog.getNewName());
dialogIsOpen=false;
if(!isCalledByShowOneNewDialog)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit queryOneNewDialog()");
emit queryOneNewDialog();
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"NOT emit queryOneNewDialog(), !isCalledByShowOneNewDialog");
return;
break;
}
}
else
{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file already exists: "+source.absoluteFilePath().toStdString()+", destination: "+destination.absoluteFilePath().toStdString());
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file already exists: "+TransferThread::internalStringTostring(source)+
+ ", destination: "+TransferThread::internalStringTostring(destination));
FileExistsAction tempFileExistsAction=alwaysDoThisActionForFileExists;
switch(tempFileExistsAction)
{
@@ -123,17 +129,18 @@ void CopyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool i
case FileExists_Overwrite:
case FileExists_OverwriteIfNewer:
case FileExists_OverwriteIfOlder:
- case FileExists_OverwriteIfNotSame:
+ case FileExists_OverwriteIfNotSameMdate:
+ case FileExists_OverwriteIfNotSameSize:
+ case FileExists_OverwriteIfNotSameSizeAndDate:
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"always do this action: "+std::to_string(tempFileExistsAction));
thread->setFileExistsAction(tempFileExistsAction);
break;
default:
if(dialogIsOpen)
{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,QStringLiteral("dialog open, put in queue: %1 %2")
- .arg(source.absoluteFilePath())
- .arg(destination.absoluteFilePath())
- .toStdString()
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"dialog open, put in queue: "+
+ TransferThread::internalStringTostring(source)+" "+
+ TransferThread::internalStringTostring(destination)
);
alreadyExistsQueueItem newItem;
newItem.source=source;
@@ -146,7 +153,7 @@ void CopyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool i
}
dialogIsOpen=true;
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
- FileExistsDialog dialog(interface,source,destination,firstRenamingRule,otherRenamingRule);
+ FileExistsDialog dialog(uiinterface,source,destination,firstRenamingRule,otherRenamingRule,facilityEngine);
emit isInPause(true);
dialog.exec();/// \bug crash when external close
FileExistsAction newAction=dialog.getAction();
@@ -174,7 +181,7 @@ void CopyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool i
case FileExists_Overwrite:
ui->comboBoxFileCollision->setCurrentIndex(2);
break;
- case FileExists_OverwriteIfNotSame:
+ case FileExists_OverwriteIfNotSameMdate:
ui->comboBoxFileCollision->setCurrentIndex(3);
break;
case FileExists_OverwriteIfNewer:
@@ -183,6 +190,12 @@ void CopyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool i
case FileExists_OverwriteIfOlder:
ui->comboBoxFileCollision->setCurrentIndex(5);
break;
+ case FileExists_OverwriteIfNotSameSize:
+ ui->comboBoxFileCollision->setCurrentIndex(7);
+ break;
+ case FileExists_OverwriteIfNotSameSizeAndDate:
+ ui->comboBoxFileCollision->setCurrentIndex(8);
+ break;
}
}
if(dialog.getAlways() || newAction!=FileExists_Rename)
@@ -195,6 +208,8 @@ void CopyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool i
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit queryOneNewDialog()");
emit queryOneNewDialog();
}
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"NOT emit queryOneNewDialog(), !isCalledByShowOneNewDialog");
return;
break;
}
@@ -202,7 +217,7 @@ void CopyEngine::fileAlreadyExists(QFileInfo source,QFileInfo destination,bool i
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"stop");
}
-void CopyEngine::haveNeedPutAtBottom(bool needPutAtBottom, const QFileInfo &fileInfo, const std::string &errorString,TransferThread *thread,const ErrorType &errorType)
+void CopyEngine::haveNeedPutAtBottom(bool needPutAtBottom, const INTERNALTYPEPATH &fileInfo, const std::string &errorString,TransferThreadAsync *thread,const ErrorType &errorType)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
if(!needPutAtBottom)
@@ -226,7 +241,7 @@ void CopyEngine::haveNeedPutAtBottom(bool needPutAtBottom, const QFileInfo &file
void CopyEngine::missingDiskSpace(std::vector<Diskspace> list)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
- DiskSpace dialog(facilityEngine,list,interface);
+ DiskSpace dialog(facilityEngine,list,uiinterface);
emit isInPause(true);
dialog.exec();/// \bug crash when external close
bool ok=dialog.getAction();
@@ -239,11 +254,12 @@ void CopyEngine::missingDiskSpace(std::vector<Diskspace> list)
}
/// \note Can be call without queue because all call will be serialized
-void CopyEngine::errorOnFile(QFileInfo fileInfo,std::string errorString,TransferThread * thread,const ErrorType &errorType,bool isCalledByShowOneNewDialog)
+void CopyEngine::errorOnFile(INTERNALTYPEPATH fileInfo,std::string errorString,TransferThreadAsync * thread,const ErrorType &errorType,bool isCalledByShowOneNewDialog)
{
if(stopIt)
return;
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file have error: "+fileInfo.absoluteFilePath().toStdString()+", error: "+errorString);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file have error: "+TransferThread::internalStringTostring(fileInfo)+
+ ", error: "+errorString);
if(thread==NULL)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to locate the thread");
@@ -260,7 +276,13 @@ void CopyEngine::errorOnFile(QFileInfo fileInfo,std::string errorString,Transfer
thread->retryAfterError();
return;
case FileError_PutToEndOfTheList:
+ errorPutAtEnd++;
emit getNeedPutAtBottom(fileInfo,errorString,thread,errorType);
+ if(errorPutAtEnd>listThread->actionToDoListInode.size() || listThread->actionToDoListInode.size()==0)
+ {
+ alwaysDoThisActionForFileError=FileError_NotSet;
+ errorPutAtEnd=0;
+ }
return;
case FileError_Cancel:
return;
@@ -280,8 +302,43 @@ void CopyEngine::errorOnFile(QFileInfo fileInfo,std::string errorString,Transfer
}
dialogIsOpen=true;
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
- emit error(fileInfo.absoluteFilePath().toStdString(),fileInfo.size(),fileInfo.lastModified().toMSecsSinceEpoch()/1000,errorString);
- FileErrorDialog dialog(interface,fileInfo,errorString,errorType);
+
+ uint64_t size=0;
+ uint64_t mdate=0;
+ #ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA sourceW;
+ if(GetFileAttributesExW(fileInfo.c_str(),GetFileExInfoStandard,&sourceW))
+ {
+ mdate=sourceW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=sourceW.ftLastWriteTime.dwLowDateTime;
+ size=sourceW.nFileSizeHigh;
+ size<<=32;
+ size|=sourceW.nFileSizeLow;
+ }
+ #else
+ struct stat source_statbuf;
+ #ifdef Q_OS_UNIX
+ if(lstat(TransferThread::internalStringTostring(fileInfo).c_str(), &source_statbuf)==0)
+ #else
+ if(stat(TransferThread::internalStringTostring(fileInfo).c_str(), &source_statbuf)==0)
+ #endif
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ mdate=source_statbuf.st_mtimespec.tv_sec;
+ #else
+ mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtim);
+ #endif
+ #else
+ mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtime);
+ #endif
+ size=source_statbuf.st_size;
+ }
+ #endif
+
+ emit error(TransferThread::internalStringTostring(fileInfo),size,mdate,errorString);
+ FileErrorDialog dialog(uiinterface,fileInfo,errorString,errorType,facilityEngine);
emit isInPause(true);
dialog.exec();/// \bug crash when external close
FileErrorAction newAction=dialog.getAction();
@@ -316,6 +373,7 @@ void CopyEngine::errorOnFile(QFileInfo fileInfo,std::string errorString,Transfer
thread->retryAfterError();
break;
case FileError_PutToEndOfTheList:
+ errorPutAtEnd++;
thread->putAtBottom();
break;
default:
@@ -324,7 +382,10 @@ void CopyEngine::errorOnFile(QFileInfo fileInfo,std::string errorString,Transfer
}
dialogIsOpen=false;
if(!isCalledByShowOneNewDialog)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit queryOneNewDialog()");
emit queryOneNewDialog();
+ }
else
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"isCalledByShowOneNewDialog==true then not show other dial");
return;
@@ -334,11 +395,12 @@ void CopyEngine::errorOnFile(QFileInfo fileInfo,std::string errorString,Transfer
}
/// \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)
+void CopyEngine::folderAlreadyExists(INTERNALTYPEPATH source,INTERNALTYPEPATH destination,bool isSame,ScanFileOrFolder * thread,bool isCalledByShowOneNewDialog)
{
if(stopIt)
return;
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"folder already exists: "+source.absoluteFilePath().toStdString()+", destination: "+destination.absoluteFilePath().toStdString());
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"folder already exists: "+TransferThread::internalStringTostring(source)+
+ ", destination: "+TransferThread::internalStringTostring(destination));
if(thread==NULL)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to locate the thread");
@@ -367,7 +429,7 @@ void CopyEngine::folderAlreadyExists(QFileInfo source,QFileInfo destination,bool
}
dialogIsOpen=true;
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
- FolderExistsDialog dialog(interface,source,isSame,destination,firstRenamingRule,otherRenamingRule);
+ FolderExistsDialog dialog(uiinterface,source,isSame,destination,firstRenamingRule,otherRenamingRule);
dialog.exec();/// \bug crash when external close
FolderExistsAction newAction=dialog.getAction();
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction));
@@ -384,7 +446,12 @@ void CopyEngine::folderAlreadyExists(QFileInfo source,QFileInfo destination,bool
thread->setFolderExistsAction(newAction);
dialogIsOpen=false;
if(!isCalledByShowOneNewDialog)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit queryOneNewDialog()");
emit queryOneNewDialog();
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"NOT emit queryOneNewDialog(), !isCalledByShowOneNewDialog");
return;
break;
}
@@ -392,11 +459,11 @@ void CopyEngine::folderAlreadyExists(QFileInfo source,QFileInfo destination,bool
/// \note Can be call without queue because all call will be serialized
/// \todo all this part
-void CopyEngine::errorOnFolder(QFileInfo fileInfo, std::string errorString, ScanFileOrFolder * thread, ErrorType errorType, bool isCalledByShowOneNewDialog)
+void CopyEngine::errorOnFolder(INTERNALTYPEPATH fileInfo, std::string errorString, ScanFileOrFolder * thread, ErrorType errorType, bool isCalledByShowOneNewDialog)
{
if(stopIt)
return;
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file have error: "+fileInfo.absoluteFilePath().toStdString()+", error: "+errorString);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file have error: "+TransferThread::internalStringTostring(fileInfo)+", error: "+errorString);
if(thread==NULL)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to locate the thread");
@@ -426,9 +493,44 @@ void CopyEngine::errorOnFolder(QFileInfo fileInfo, std::string errorString, Scan
return;
}
dialogIsOpen=true;
+
+ uint64_t size=0;
+ uint64_t mdate=0;
+ #ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA sourceW;
+ if(GetFileAttributesExW(fileInfo.c_str(),GetFileExInfoStandard,&sourceW))
+ {
+ mdate=sourceW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=sourceW.ftLastWriteTime.dwLowDateTime;
+ size=sourceW.nFileSizeHigh;
+ size<<=32;
+ size|=sourceW.nFileSizeLow;
+ }
+ #else
+ struct stat source_statbuf;
+ #ifdef Q_OS_UNIX
+ if(lstat(TransferThread::internalStringTostring(fileInfo).c_str(), &source_statbuf)==0)
+ #else
+ if(stat(TransferThread::internalStringTostring(fileInfo).c_str(), &source_statbuf)==0)
+ #endif
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ mdate=source_statbuf.st_mtimespec.tv_sec;
+ #else
+ mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtim);
+ #endif
+ #else
+ mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtime);
+ #endif
+ size=source_statbuf.st_size;
+ }
+ #endif
+
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
- emit error(fileInfo.absoluteFilePath().toStdString(),fileInfo.size(),fileInfo.lastModified().toMSecsSinceEpoch()/1000,errorString);
- FileErrorDialog dialog(interface,fileInfo,errorString,errorType);
+ emit error(TransferThread::internalStringTostring(fileInfo),size,mdate,errorString);
+ FileErrorDialog dialog(uiinterface,fileInfo,errorString,errorType,facilityEngine);
dialog.exec();/// \bug crash when external close
FileErrorAction newAction=dialog.getAction();
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction));
@@ -445,7 +547,12 @@ void CopyEngine::errorOnFolder(QFileInfo fileInfo, std::string errorString, Scan
dialogIsOpen=false;
thread->setFolderErrorAction(newAction);
if(!isCalledByShowOneNewDialog)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit queryOneNewDialog()");
emit queryOneNewDialog();
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"NOT emit queryOneNewDialog(), !isCalledByShowOneNewDialog");
return;
break;
}
@@ -455,11 +562,11 @@ void CopyEngine::errorOnFolder(QFileInfo fileInfo, std::string errorString, Scan
// -----------------------------------------------------
//mkpath event
-void CopyEngine::mkPathErrorOnFolder(QFileInfo folder,std::string errorString,const ErrorType &errorType,bool isCalledByShowOneNewDialog)
+void CopyEngine::mkPathErrorOnFolder(INTERNALTYPEPATH folder, std::string errorString, const ErrorType &errorType, bool isCalledByShowOneNewDialog)
{
if(stopIt)
return;
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file have error: "+folder.absoluteFilePath().toStdString()+", error: "+errorString);
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"file have error: "+TransferThread::internalStringTostring(folder)+", error: "+errorString);
//load the always action
FileErrorAction tempFileErrorAction=alwaysDoThisActionForFolderError;
switch(tempFileErrorAction)
@@ -486,8 +593,43 @@ void CopyEngine::mkPathErrorOnFolder(QFileInfo folder,std::string errorString,co
}
dialogIsOpen=true;
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"show dialog");
- emit error(folder.absoluteFilePath().toStdString(),folder.size(),folder.lastModified().toMSecsSinceEpoch()/1000,errorString);
- FileErrorDialog dialog(interface,folder,errorString,errorType);
+
+ uint64_t size=0;
+ uint64_t mdate=0;
+ #ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA sourceW;
+ if(GetFileAttributesExW(folder.c_str(),GetFileExInfoStandard,&sourceW))
+ {
+ mdate=sourceW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=sourceW.ftLastWriteTime.dwLowDateTime;
+ size=sourceW.nFileSizeHigh;
+ size<<=32;
+ size|=sourceW.nFileSizeLow;
+ }
+ #else
+ struct stat source_statbuf;
+ #ifdef Q_OS_UNIX
+ if(lstat(TransferThread::internalStringTostring(folder).c_str(), &source_statbuf)==0)
+ #else
+ if(stat(TransferThread::internalStringTostring(folder).c_str(), &source_statbuf)==0)
+ #endif
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ mdate=source_statbuf.st_mtimespec.tv_sec;
+ #else
+ mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtim);
+ #endif
+ #else
+ mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtime);
+ #endif
+ size=source_statbuf.st_size;
+ }
+ #endif
+
+ emit error(TransferThread::internalStringTostring(folder),size,mdate,errorString);
+ FileErrorDialog dialog(uiinterface,folder,errorString,errorType,facilityEngine);
dialog.exec();/// \bug crash when external close
FileErrorAction newAction=dialog.getAction();
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"close dialog: "+std::to_string(newAction));
@@ -515,7 +657,12 @@ void CopyEngine::mkPathErrorOnFolder(QFileInfo folder,std::string errorString,co
break;
}
if(!isCalledByShowOneNewDialog)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"emit queryOneNewDialog()");
emit queryOneNewDialog();
+ }
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"NOT emit queryOneNewDialog(), !isCalledByShowOneNewDialog");
return;
break;
}
@@ -529,6 +676,8 @@ void CopyEngine::showOneNewDialog()
return;
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"alreadyExistsQueue.size(): "+std::to_string(alreadyExistsQueue.size()));
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"errorQueue.size(): "+std::to_string(errorQueue.size()));
+ //reset to always show the dialog
+ dialogIsOpen=false;
int loop_size=alreadyExistsQueue.size();
while(loop_size>0)
{
@@ -565,4 +714,6 @@ void CopyEngine::showOneNewDialog()
errorQueue.erase(errorQueue.cbegin());
loop_size--;
}
+ //no more to show then reset
+ dialogIsOpen=false;
}
diff --git a/plugins/CopyEngine/Ultracopier/CopyEngine.cpp b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp
index f3d6e04..8ec21e1 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CopyEngine.cpp
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.cpp
@@ -18,22 +18,51 @@ inline double round(double d) {
#endif
CopyEngine::CopyEngine(FacilityInterface * facilityEngine) :
- ui(new Ui::copyEngineOptions())
+ listThread(NULL),
+ tempWidget(NULL),
+ ui(new Ui::copyEngineOptions()),
+ uiIsInstalled(false),
+ uiinterface(NULL),
+ filters(NULL),
+ renamingRules(NULL),
+ facilityEngine(NULL),
+ doRightTransfer(false),
+ keepDate(false),
+ followTheStrictOrder(false),
+ deletePartiallyTransferredFiles(false),
+ inodeThreads(0),
+ renameTheOriginalDestination(false),
+ moveTheWholeFolder(false),
+ #ifdef ULTRACOPIER_PLUGIN_RSYNC
+ rsync(false),
+ #endif
+ checkDestinationFolderExists(false),
+ mkFullPath(false),
+ checksum(false),
+ alwaysDoThisActionForFileExists(FileExistsAction::FileExists_NotSet),
+ alwaysDoThisActionForFileError(FileErrorAction::FileError_NotSet),
+ alwaysDoThisActionForFolderError(FileErrorAction::FileError_NotSet),
+ alwaysDoThisActionForFolderExists(FolderExistsAction::FolderExists_NotSet),
+ dialogIsOpen(false),
+ stopIt(false),
+ size_for_speed(0),
+ mode(Ultracopier::CopyMode::Copy),
+ forcedMode(false),
+ checkDiskSpace(false),
+ osBufferLimit(0),
+ errorPutAtEnd(0),
+ putAtBottom(0)
{
listThread=new ListThread(facilityEngine);
this->facilityEngine = facilityEngine;
filters = NULL;
renamingRules = NULL;
- blockSize = ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE;
- sequentialBuffer = ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE*ULTRACOPIER_PLUGIN_DEFAULT_SEQUENTIAL_NUMBER_OF_BLOCK;
- parallelBuffer = ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE*ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK;
- interface = NULL;
+ uiinterface = NULL;
tempWidget = NULL;
uiIsInstalled = false;
dialogIsOpen = false;
renameTheOriginalDestination = false;
- maxSpeed = 0;
alwaysDoThisActionForFileExists = FileExists_NotSet;
alwaysDoThisActionForFileError = FileError_NotSet;
checkDestinationFolderExists = false;
@@ -72,15 +101,16 @@ void CopyEngine::connectTheSignalsSlots()
{
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
debugDialogWindow.show();
+ debugDialogWindow.copyEngine=this;
#endif
+ if(!connect(listThread,&ListThread::isInPause, this,&CopyEngine::isInPause, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect isInPause()");
if(!connect(listThread,&ListThread::actionInProgess, this,&CopyEngine::actionInProgess, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect actionInProgess()");
if(!connect(listThread,&ListThread::actionInProgess, this,&CopyEngine::newActionInProgess, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect actionInProgess() to slot");
if(!connect(listThread,&ListThread::newFolderListing, this,&CopyEngine::newFolderListing, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect newFolderListing()");
- if(!connect(listThread,&ListThread::isInPause, this,&CopyEngine::isInPause, Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect isInPause()");
if(!connect(listThread,&ListThread::error, this,&CopyEngine::error, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect error()");
if(!connect(listThread,&ListThread::rmPath, this,&CopyEngine::rmPath, Qt::QueuedConnection))
@@ -135,6 +165,8 @@ void CopyEngine::connectTheSignalsSlots()
if(!connect(this,&CopyEngine::signal_pause, listThread,&ListThread::pause, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_pause()");
+ if(!connect(this,&CopyEngine::signal_setSpeedLimitation, listThread,&ListThread::setSpeedLimitation, Qt::QueuedConnection))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect setSpeedLimitation()");
if(!connect(this,&CopyEngine::signal_exportErrorIntoTransferList,listThread,&ListThread::exportErrorIntoTransferList, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_exportErrorIntoTransferList()");
if(!connect(this,&CopyEngine::signal_resume, listThread,&ListThread::resume, Qt::QueuedConnection))
@@ -143,8 +175,6 @@ void CopyEngine::connectTheSignalsSlots()
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_skip()");
if(!connect(this,&CopyEngine::signal_setCollisionAction, listThread,&ListThread::setAlwaysFileExistsAction, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_setCollisionAction()");
- if(!connect(this,&CopyEngine::signal_setTransferAlgorithm, listThread,&ListThread::setTransferAlgorithm, Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_setCollisionAction()");
if(!connect(this,&CopyEngine::signal_setFolderCollision, listThread,&ListThread::setFolderCollision, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_setFolderCollision()");
if(!connect(this,&CopyEngine::signal_removeItems, listThread,&ListThread::removeItems, Qt::QueuedConnection))
@@ -163,20 +193,6 @@ void CopyEngine::connectTheSignalsSlots()
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_importTransferList()");
if(!connect(this,&CopyEngine::signal_forceMode, listThread,&ListThread::forceMode, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect signal_forceMode()");
- if(!connect(this,&CopyEngine::send_osBufferLimit, listThread,&ListThread::set_osBufferLimit, Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_osBufferLimit()");
- #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
- if(!connect(this,&CopyEngine::send_speedLimitation, listThread,&ListThread::setSpeedLimitation, Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_speedLimitation()");
- #endif
- if(!connect(this,&CopyEngine::send_blockSize, listThread,&ListThread::setBlockSize, Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect send_blockSize()");
- if(!connect(this,&CopyEngine::send_parallelBuffer, listThread,&ListThread::setParallelBuffer, Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect setParallelBuffer()");
- if(!connect(this,&CopyEngine::send_sequentialBuffer, listThread,&ListThread::setSequentialBuffer, Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect setSequentialBuffer()");
- if(!connect(this,&CopyEngine::send_parallelizeIfSmallerThan, listThread,&ListThread::setParallelizeIfSmallerThan, Qt::QueuedConnection))
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect setParallelizeIfSmallerThan()");
if(!connect(this,&CopyEngine::send_moveTheWholeFolder, listThread,&ListThread::setMoveTheWholeFolder, Qt::QueuedConnection))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect moveTheWholeFolder()");
if(!connect(this,&CopyEngine::send_deletePartiallyTransferredFiles, listThread,&ListThread::setDeletePartiallyTransferredFiles, Qt::QueuedConnection))
@@ -222,37 +238,25 @@ bool CopyEngine::getOptionsEngine(QWidget * tempWidget)
this->tempWidget=tempWidget;
ui->setupUi(tempWidget);
ui->toolBox->setCurrentIndex(0);
- ui->blockSize->setMaximum(ULTRACOPIER_PLUGIN_MAX_BLOCK_SIZE);
connect(tempWidget, &QWidget::destroyed, this, &CopyEngine::resetTempWidget);
- //conect the ui widget
- #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
- if(!setSpeedLimitation(maxSpeed))
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"unable to set the speed limitation");
- #endif
//here else, the default settings can't be loaded
uiIsInstalled=true;
- setBlockSize(blockSize);
- setSequentialBuffer(sequentialBuffer);
- setParallelBuffer(parallelBuffer);
- setAutoStart(autoStart);
#ifdef ULTRACOPIER_PLUGIN_RSYNC
setRsync(rsync);
#else
ui->label_rsync->setVisible(false);
ui->rsync->setVisible(false);
#endif
+ setAutoStart(autoStart);
setCheckDestinationFolderExists(checkDestinationFolderExists);
- set_doChecksum(doChecksum);
- set_checksumIgnoreIfImpossible(checksumIgnoreIfImpossible);
- set_checksumOnlyOnError(checksumOnlyOnError);
- set_osBuffer(osBuffer);
- set_osBufferLimited(osBufferLimited);
- set_osBufferLimit(osBufferLimit);
+ setMkFullPath(mkFullPath);
+ setChecksum(checksum);
setRightTransfer(doRightTransfer);
setKeepDate(keepDate);
- setParallelizeIfSmallerThan(parallelizeIfSmallerThan);
+ setOsSpecFlags(os_spec_flags);
+ setNativeCopy(native_copy);
setFollowTheStrictOrder(followTheStrictOrder);
setDeletePartiallyTransferredFiles(deletePartiallyTransferredFiles);
setInodeThreads(inodeThreads);
@@ -272,7 +276,7 @@ bool CopyEngine::getOptionsEngine(QWidget * tempWidget)
case FileExists_Overwrite:
ui->comboBoxFileCollision->setCurrentIndex(2);
break;
- case FileExists_OverwriteIfNotSame:
+ case FileExists_OverwriteIfNotSameMdate:
ui->comboBoxFileCollision->setCurrentIndex(3);
break;
case FileExists_OverwriteIfNewer:
@@ -284,6 +288,12 @@ bool CopyEngine::getOptionsEngine(QWidget * tempWidget)
case FileExists_Rename:
ui->comboBoxFileCollision->setCurrentIndex(6);
break;
+ case FileExists_OverwriteIfNotSameSize:
+ ui->comboBoxFileCollision->setCurrentIndex(6);
+ break;
+ case FileExists_OverwriteIfNotSameSizeAndDate:
+ ui->comboBoxFileCollision->setCurrentIndex(6);
+ break;
default:
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored");
ui->comboBoxFileCollision->setCurrentIndex(0);
@@ -337,48 +347,31 @@ bool CopyEngine::getOptionsEngine(QWidget * tempWidget)
ui->comboBoxFolderError->setCurrentIndex(0);
break;
}
- switch(transferAlgorithm)
- {
- case TransferAlgorithm_Automatic:
- ui->transferAlgorithm->setCurrentIndex(0);
- break;
- case TransferAlgorithm_Sequential:
- ui->transferAlgorithm->setCurrentIndex(1);
- break;
- case TransferAlgorithm_Parallel:
- ui->transferAlgorithm->setCurrentIndex(2);
- break;
- default:
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored");
- ui->transferAlgorithm->setCurrentIndex(0);
- break;
- }
return true;
}
//to have interface widget to do modal dialog
-void CopyEngine::setInterfacePointer(QWidget * interface)
+void CopyEngine::setInterfacePointer(QWidget * uiinterface)
{
- this->interface=interface;
- filters=new Filters(tempWidget);
- renamingRules=new RenamingRules(tempWidget);
+ this->uiinterface=uiinterface;
+ if(filters==NULL)
+ filters=new Filters(tempWidget);
+ if(renamingRules==NULL)
+ renamingRules=new RenamingRules(tempWidget);
if(uiIsInstalled)
{
+ connect(ui->autoStart, &QCheckBox::toggled, this,&CopyEngine::setAutoStart);
connect(ui->doRightTransfer, &QCheckBox::toggled, this,&CopyEngine::setRightTransfer);
connect(ui->keepDate, &QCheckBox::toggled, this,&CopyEngine::setKeepDate);
- connect(ui->blockSize, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngine::setBlockSize);
- connect(ui->autoStart, &QCheckBox::toggled, this,&CopyEngine::setAutoStart);
- connect(ui->doChecksum, &QCheckBox::toggled, this,&CopyEngine::doChecksum_toggled);
- connect(ui->checksumIgnoreIfImpossible, &QCheckBox::toggled, this,&CopyEngine::checksumIgnoreIfImpossible_toggled);
- connect(ui->checksumOnlyOnError, &QCheckBox::toggled, this,&CopyEngine::checksumOnlyOnError_toggled);
- connect(ui->osBuffer, &QCheckBox::toggled, this,&CopyEngine::osBuffer_toggled);
- connect(ui->osBufferLimited, &QCheckBox::toggled, this,&CopyEngine::osBufferLimited_toggled);
- connect(ui->osBufferLimit, &QSpinBox::editingFinished, this,&CopyEngine::osBufferLimit_editingFinished);
+ connect(ui->os_spec_flags, &QCheckBox::toggled, this,&CopyEngine::setOsSpecFlags);
+ connect(ui->native_copy, &QCheckBox::toggled, this,&CopyEngine::setNativeCopy);
connect(ui->moveTheWholeFolder, &QCheckBox::toggled, this,&CopyEngine::setMoveTheWholeFolder);
connect(ui->deletePartiallyTransferredFiles, &QCheckBox::toggled, this,&CopyEngine::setDeletePartiallyTransferredFiles);
connect(ui->followTheStrictOrder, &QCheckBox::toggled, this,&CopyEngine::setFollowTheStrictOrder);
connect(ui->checkBoxDestinationFolderExists, &QCheckBox::toggled, this,&CopyEngine::setCheckDestinationFolderExists);
+ connect(ui->mkpath, &QCheckBox::toggled, this,&CopyEngine::setMkFullPath);
+ connect(ui->checksum, &QCheckBox::toggled, this,&CopyEngine::setChecksum);
#ifdef ULTRACOPIER_PLUGIN_RSYNC
connect(ui->rsync, &QCheckBox::toggled, this,&CopyEngine::setRsync);
#endif
@@ -389,14 +382,10 @@ void CopyEngine::setInterfacePointer(QWidget * interface)
connect(ui->inodeThreads, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngine::setInodeThreads);
connect(ui->defaultDestinationFolderBrowse, &QPushButton::clicked, this,&CopyEngine::defaultDestinationFolderBrowse);
- connect(ui->sequentialBuffer, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngine::setSequentialBuffer);
- connect(ui->parallelBuffer, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngine::setParallelBuffer);
- connect(ui->parallelizeIfSmallerThan, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngine::setParallelizeIfSmallerThan);
connect(ui->comboBoxFolderError, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setFolderError);
connect(ui->comboBoxFolderCollision, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setFolderCollision);
connect(ui->comboBoxFileError, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setFileError);
connect(ui->comboBoxFileCollision, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setFileCollision);
- connect(ui->transferAlgorithm, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngine::setTransferAlgorithm);
if(!connect(renamingRules,&RenamingRules::sendNewRenamingRules,this,&CopyEngine::sendNewRenamingRules))
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect sendNewRenamingRules()");
@@ -404,8 +393,14 @@ void CopyEngine::setInterfacePointer(QWidget * interface)
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"unable to connect renamingRules.clicked()");
}
- filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
- set_setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
+ if(!filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions))
+ {
+ includeStrings.clear();
+ includeOptions.clear();
+ excludeStrings.clear();
+ excludeOptions.clear();
+ set_setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
+ }
renamingRules->setRenamingRules(firstRenamingRule,otherRenamingRule);
emit send_sendNewRenamingRules(firstRenamingRule,otherRenamingRule);
@@ -421,8 +416,22 @@ bool CopyEngine::haveSameDestination(const std::string &destination)
return listThread->haveSameDestination(destination);
}
+std::string CopyEngine::stringimplode(const std::vector<std::string>& elems, const std::string &delim)
+{
+ std::string newString;
+ for (std::vector<std::string>::const_iterator ii = elems.begin(); ii != elems.cend(); ++ii)
+ {
+ newString += (*ii);
+ if ( ii + 1 != elems.end() ) {
+ newString += delim;
+ }
+ }
+ return newString;
+}
+
bool CopyEngine::newCopy(const std::vector<std::string> &sources)
{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,stringimplode(sources,", "));
if(forcedMode && mode!=Ultracopier::Copy)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The engine is forced to move, you can't copy with it");
@@ -445,6 +454,7 @@ bool CopyEngine::newCopy(const std::vector<std::string> &sources)
bool CopyEngine::newCopy(const std::vector<std::string> &sources,const std::string &destination)
{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,stringimplode(sources,", ")+" "+destination);
if(forcedMode && mode!=Ultracopier::Copy)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The engine is forced to move, you can't copy with it");
@@ -456,6 +466,7 @@ bool CopyEngine::newCopy(const std::vector<std::string> &sources,const std::stri
bool CopyEngine::newMove(const std::vector<std::string> &sources)
{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,stringimplode(sources,", "));
if(forcedMode && mode!=Ultracopier::Move)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The engine is forced to copy, you can't move with it");
@@ -478,6 +489,7 @@ bool CopyEngine::newMove(const std::vector<std::string> &sources)
bool CopyEngine::newMove(const std::vector<std::string> &sources,const std::string &destination)
{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,stringimplode(sources,", ")+" "+destination);
if(forcedMode && mode!=Ultracopier::Move)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"The engine is forced to copy, you can't move with it");
@@ -505,13 +517,13 @@ std::string CopyEngine::askDestination()
std::string destination = listThread->getUniqueDestinationFolder();
if(!destination.empty())
{
- QMessageBox::StandardButton button=QMessageBox::question(interface,tr("Destination"),tr("Use the actual destination \"%1\"?")
+ QMessageBox::StandardButton button=QMessageBox::question(uiinterface,tr("Destination"),tr("Use the actual destination \"%1\"?")
.arg(QString::fromStdString(destination)),
QMessageBox::Yes | QMessageBox::No,QMessageBox::Yes);
if(button==QMessageBox::Yes)
return destination;
}
- destination=QFileDialog::getExistingDirectory(interface,QString::fromStdString(facilityEngine->translateText("Select destination directory")),QStringLiteral(""),QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks).toStdString();
+ destination=QFileDialog::getExistingDirectory(uiinterface,QString::fromStdString(facilityEngine->translateText("Select destination directory")),QStringLiteral(""),QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks).toStdString();
return destination;
}
@@ -529,11 +541,7 @@ uint64_t CopyEngine::realByteTransfered()
//speed limitation
bool CopyEngine::supportSpeedLimitation() const
{
- #ifdef ULTRACOPIER_PLUGIN_SPEED_SUPPORT
return true;
- #else
- return false;
- #endif
}
/** \brief to sync the transfer list
@@ -543,76 +551,21 @@ void CopyEngine::syncTransferList()
listThread->syncTransferList();
}
-void CopyEngine::set_doChecksum(bool doChecksum)
-{
- listThread->set_doChecksum(doChecksum);
- if(uiIsInstalled)
- {
- ui->doChecksum->setChecked(doChecksum);
- ui->checksumOnlyOnError->setEnabled(ui->doChecksum->isChecked());
- ui->checksumIgnoreIfImpossible->setEnabled(ui->doChecksum->isChecked());
- }
- 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);
- updateBufferCheckbox();
- }
- this->osBuffer=osBuffer;
-}
-
-void CopyEngine::set_osBufferLimited(bool osBufferLimited)
-{
- listThread->set_osBufferLimited(osBufferLimited);
- if(uiIsInstalled)
- {
- ui->osBufferLimited->setChecked(osBufferLimited);
- updateBufferCheckbox();
- }
- 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::updateBufferCheckbox()
-{
- ui->osBufferLimited->setEnabled(ui->osBuffer->isChecked());
- ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked());
-}
-
void CopyEngine::set_setFilters(std::vector<std::string> includeStrings,std::vector<std::string> includeOptions,std::vector<std::string> excludeStrings,std::vector<std::string> excludeOptions)
{
+ if(filters==NULL)
+ filters=new Filters();
if(filters!=NULL)
{
- filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
+ if(!filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions))
+ {
+ includeStrings.clear();
+ includeOptions.clear();
+ excludeStrings.clear();
+ excludeOptions.clear();
+ }
emit send_setFilters(filters->getInclude(),filters->getExclude());
+ listThread->set_setFilters(filters->getInclude(),filters->getExclude());
}
this->includeStrings=includeStrings;
this->includeOptions=includeOptions;
@@ -627,7 +580,7 @@ void CopyEngine::setRenamingRules(std::string firstRenamingRule,std::string othe
bool CopyEngine::userAddFolder(const Ultracopier::CopyMode &mode)
{
- std::string source = QFileDialog::getExistingDirectory(interface,QString::fromStdString(facilityEngine->translateText("Select source directory")),
+ std::string source = QFileDialog::getExistingDirectory(uiinterface,QString::fromStdString(facilityEngine->translateText("Select source directory")),
QStringLiteral(""),
QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks).toStdString();
if(source.empty() || source=="")
@@ -644,7 +597,7 @@ bool CopyEngine::userAddFile(const Ultracopier::CopyMode &mode)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"start");
QStringList sources = QFileDialog::getOpenFileNames(
- interface,
+ uiinterface,
QString::fromStdString(facilityEngine->translateText("Select one or more files to open")),
QStringLiteral(""),
QString::fromStdString(facilityEngine->translateText("All files"))+QStringLiteral(" (*)"));
@@ -751,7 +704,7 @@ void CopyEngine::forceMode(const Ultracopier::CopyMode &mode)
void CopyEngine::exportTransferList()
{
- std::string fileName = QFileDialog::getSaveFileName(interface,QString::fromStdString(facilityEngine->translateText("Save transfer list")),QStringLiteral("transfer-list.lst"),QString::fromStdString(facilityEngine->translateText("Transfer list"))+QStringLiteral(" (*.lst)")).toStdString();
+ std::string fileName = QFileDialog::getSaveFileName(uiinterface,QString::fromStdString(facilityEngine->translateText("Save transfer list")),QStringLiteral("transfer-list.lst"),QString::fromStdString(facilityEngine->translateText("Transfer list"))+QStringLiteral(" (*.lst)")).toStdString();
if(fileName.empty())
return;
emit signal_exportTransferList(fileName);
@@ -759,7 +712,7 @@ void CopyEngine::exportTransferList()
void CopyEngine::importTransferList()
{
- std::string fileName = QFileDialog::getOpenFileName(interface,QString::fromStdString(facilityEngine->translateText("Open transfer list")),QStringLiteral("transfer-list.lst"),QString::fromStdString(facilityEngine->translateText("Transfer list"))+QStringLiteral(" (*.lst)")).toStdString();
+ std::string fileName = QFileDialog::getOpenFileName(uiinterface,QString::fromStdString(facilityEngine->translateText("Open transfer list")),QStringLiteral("transfer-list.lst"),QString::fromStdString(facilityEngine->translateText("Transfer list"))+QStringLiteral(" (*.lst)")).toStdString();
if(fileName.empty())
return;
emit signal_importTransferList(fileName);
@@ -767,20 +720,19 @@ void CopyEngine::importTransferList()
void CopyEngine::warningTransferList(const std::string &warning)
{
- QMessageBox::warning(interface,QString::fromStdString(facilityEngine->translateText("Error")),QString::fromStdString(warning));
+ QMessageBox::warning(uiinterface,QString::fromStdString(facilityEngine->translateText("Error")),QString::fromStdString(warning));
}
void CopyEngine::errorTransferList(const std::string &error)
{
- QMessageBox::critical(interface,QString::fromStdString(facilityEngine->translateText("Error")),QString::fromStdString(error));
+ QMessageBox::critical(uiinterface,QString::fromStdString(facilityEngine->translateText("Error")),QString::fromStdString(error));
}
bool CopyEngine::setSpeedLimitation(const int64_t &speedLimitation)
{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"maxSpeed: "+std::to_string(speedLimitation));
- maxSpeed=speedLimitation;
- emit send_speedLimitation(speedLimitation);
- return true;
+ //ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"maxSpeed: "+std::to_string(speedLimitation));
+ emit signal_setSpeedLimitation(speedLimitation);
+ return false;
}
void CopyEngine::setFileCollision(int index)
@@ -801,7 +753,7 @@ void CopyEngine::setFileCollision(int index)
alwaysDoThisActionForFileExists=FileExists_Overwrite;
break;
case 3:
- alwaysDoThisActionForFileExists=FileExists_OverwriteIfNotSame;
+ alwaysDoThisActionForFileExists=FileExists_OverwriteIfNotSameMdate;
break;
case 4:
alwaysDoThisActionForFileExists=FileExists_OverwriteIfNewer;
@@ -842,38 +794,7 @@ void CopyEngine::setFileError(int index)
alwaysDoThisActionForFileError=FileError_NotSet;
break;
}
- emit signal_setCollisionAction(alwaysDoThisActionForFileExists);
-}
-
-void CopyEngine::setTransferAlgorithm(int index)
-{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index));
- if(uiIsInstalled)
- if(index!=ui->transferAlgorithm->currentIndex())
- ui->transferAlgorithm->setCurrentIndex(index);
- switch(index)
- {
- case 0:
- transferAlgorithm=TransferAlgorithm_Automatic;
- break;
- case 1:
- transferAlgorithm=TransferAlgorithm_Sequential;
- break;
- case 2:
- transferAlgorithm=TransferAlgorithm_Parallel;
- break;
- default:
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Warning,"Error, unknow index, ignored");
- transferAlgorithm=TransferAlgorithm_Automatic;
- break;
- }
- if(transferAlgorithm==TransferAlgorithm_Sequential)
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"transferAlgorithm==TransferAlgorithm_Sequential");
- else if(transferAlgorithm==TransferAlgorithm_Automatic)
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"transferAlgorithm==TransferAlgorithm_Automatic");
- else
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"transferAlgorithm==TransferAlgorithm_Parallel");
- emit signal_setTransferAlgorithm(transferAlgorithm);
+ //emit signal_setCollisionAction(alwaysDoThisActionForFileExists);
}
void CopyEngine::setRightTransfer(const bool doRightTransfer)
@@ -893,44 +814,20 @@ void CopyEngine::setKeepDate(const bool keepDate)
listThread->setKeepDate(keepDate);
}
-//set block size in KB
-void CopyEngine::setBlockSize(const int blockSize)
+void CopyEngine::setOsSpecFlags(const bool os_spec_flags)
{
- this->blockSize=blockSize;
+ this->os_spec_flags=os_spec_flags;
if(uiIsInstalled)
- {
- ui->blockSize->setValue(blockSize);
- ui->sequentialBuffer->setSingleStep(blockSize);
- ui->parallelBuffer->setSingleStep(blockSize);
- }
- emit send_blockSize(blockSize);
- updatedBlockSize();
+ ui->os_spec_flags->setChecked(os_spec_flags);
+ listThread->setOsSpecFlags(os_spec_flags);
}
-void CopyEngine::setParallelBuffer(int parallelBuffer)
+void CopyEngine::setNativeCopy(const bool native_copy)
{
- parallelBuffer=round((float)parallelBuffer/(float)blockSize)*blockSize;
- this->parallelBuffer=parallelBuffer;
+ this->native_copy=native_copy;
if(uiIsInstalled)
- ui->parallelBuffer->setValue(parallelBuffer);
- emit send_parallelBuffer(parallelBuffer/blockSize);
-}
-
-void CopyEngine::setSequentialBuffer(int sequentialBuffer)
-{
- sequentialBuffer=round((float)sequentialBuffer/(float)blockSize)*blockSize;
- this->sequentialBuffer=sequentialBuffer;
- if(uiIsInstalled)
- ui->sequentialBuffer->setValue(sequentialBuffer);
- emit send_sequentialBuffer(sequentialBuffer/blockSize);
-}
-
-void CopyEngine::setParallelizeIfSmallerThan(int parallelizeIfSmallerThan)
-{
- this->parallelizeIfSmallerThan=parallelizeIfSmallerThan;
- if(uiIsInstalled)
- ui->parallelizeIfSmallerThan->setValue(parallelizeIfSmallerThan);
- emit send_parallelizeIfSmallerThan(parallelizeIfSmallerThan*1024);
+ ui->native_copy->setChecked(native_copy);
+ listThread->setNativeCopy(native_copy);
}
void CopyEngine::setMoveTheWholeFolder(const bool &moveTheWholeFolder)
@@ -946,6 +843,7 @@ void CopyEngine::setFollowTheStrictOrder(const bool &followTheStrictOrder)
this->followTheStrictOrder=followTheStrictOrder;
if(uiIsInstalled)
ui->followTheStrictOrder->setChecked(followTheStrictOrder);
+ listThread->setFollowTheStrictOrder(followTheStrictOrder);
emit send_followTheStrictOrder(followTheStrictOrder);
}
@@ -979,15 +877,6 @@ void CopyEngine::inodeThreadsFinished()
emit send_setInodeThreads(inodeThreads);
}
-//set auto start
-void CopyEngine::setAutoStart(const bool autoStart)
-{
- this->autoStart=autoStart;
- if(uiIsInstalled)
- ui->autoStart->setChecked(autoStart);
- listThread->setAutoStart(autoStart);
-}
-
#ifdef ULTRACOPIER_PLUGIN_RSYNC
/// \brief set rsync
void CopyEngine::setRsync(const bool rsync)
@@ -1013,6 +902,21 @@ void CopyEngine::setCheckDestinationFolderExists(const bool checkDestinationFold
listThread->setCheckDestinationFolderExists(checkDestinationFolderExists);
}
+void CopyEngine::setMkFullPath(const bool mkFullPath)
+{
+ this->mkFullPath=mkFullPath;
+ if(uiIsInstalled)
+ ui->mkpath->setChecked(mkFullPath);
+ listThread->setMkFullPath(mkFullPath);
+}
+
+void CopyEngine::setChecksum(const bool checksum)
+{
+ this->checksum=checksum;
+ if(uiIsInstalled)
+ ui->checksum->setChecked(checksum);
+}
+
//reset widget
void CopyEngine::resetTempWidget()
{
@@ -1022,6 +926,10 @@ void CopyEngine::resetTempWidget()
void CopyEngine::setFolderCollision(int index)
{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index));
+ if(uiIsInstalled)
+ if(index!=ui->comboBoxFolderCollision->currentIndex())
+ ui->comboBoxFolderCollision->setCurrentIndex(index);
switch(index)
{
case 0:
@@ -1037,10 +945,15 @@ void CopyEngine::setFolderCollision(int index)
setComboBoxFolderCollision(FolderExists_Rename,false);
break;
}
+ emit signal_setFolderCollision(alwaysDoThisActionForFolderExists);
}
void CopyEngine::setFolderError(int index)
{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index));
+ if(uiIsInstalled)
+ if(index!=ui->comboBoxFolderError->currentIndex())
+ ui->comboBoxFolderError->setCurrentIndex(index);
switch(index)
{
case 0:
@@ -1050,6 +963,7 @@ void CopyEngine::setFolderError(int index)
setComboBoxFolderError(FileError_Skip,false);
break;
}
+ emit signal_setCollisionAction(alwaysDoThisActionForFileExists);
}
//set the translate
@@ -1078,10 +992,6 @@ void CopyEngine::newLanguageLoaded()
ui->comboBoxFileCollision->setItemText(4,tr("Overwrite if newer"));
ui->comboBoxFileCollision->setItemText(5,tr("Overwrite if older"));
ui->comboBoxFileCollision->setItemText(6,tr("Rename"));
-
- ui->transferAlgorithm->setItemText(0,tr("Automatic"));
- ui->transferAlgorithm->setItemText(1,tr("Sequential"));
- ui->transferAlgorithm->setItemText(2,tr("Parallel"));
}
else
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"ui not loaded!");
@@ -1112,7 +1022,7 @@ void CopyEngine::setComboBoxFolderCollision(FolderExistsAction action,bool chang
void CopyEngine::setComboBoxFolderError(FileErrorAction action,bool changeComboBox)
{
- alwaysDoThisActionForFileError=action;
+ alwaysDoThisActionForFolderError=action;
if(!changeComboBox || !uiIsInstalled)
return;
switch(action)
@@ -1126,37 +1036,6 @@ void CopyEngine::setComboBoxFolderError(FileErrorAction action,bool changeComboB
}
}
-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);
- updateBufferCheckbox();
-}
-
-void CopyEngine::osBufferLimited_toggled(bool osBufferLimited)
-{
- listThread->set_osBufferLimited(osBufferLimited);
- updateBufferCheckbox();
-}
-
-void CopyEngine::osBufferLimit_editingFinished()
-{
- emit send_osBufferLimit(ui->osBufferLimit->value());
-}
void CopyEngine::showFilterDialog()
{
@@ -1208,21 +1087,6 @@ void CopyEngine::newActionInProgess(Ultracopier::EngineActionInProgress action)
}
}
-void CopyEngine::updatedBlockSize()
-{
- if(uiIsInstalled)
- {
- ui->sequentialBuffer->setMinimum(ui->blockSize->value());
- ui->sequentialBuffer->setSingleStep(ui->blockSize->value());
- ui->sequentialBuffer->setMaximum(ui->blockSize->value()*ULTRACOPIER_PLUGIN_MAX_SEQUENTIAL_NUMBER_OF_BLOCK);
- ui->parallelBuffer->setMinimum(ui->blockSize->value());
- ui->parallelBuffer->setSingleStep(ui->blockSize->value());
- ui->parallelBuffer->setMaximum(ui->blockSize->value()*ULTRACOPIER_PLUGIN_MAX_PARALLEL_NUMBER_OF_BLOCK);
- }
- setParallelBuffer(parallelBuffer);
- setSequentialBuffer(sequentialBuffer);
-}
-
void CopyEngine::setCheckDiskSpace(const bool &checkDiskSpace)
{
this->checkDiskSpace=checkDiskSpace;
@@ -1231,23 +1095,35 @@ void CopyEngine::setCheckDiskSpace(const bool &checkDiskSpace)
listThread->setCheckDiskSpace(checkDiskSpace);
}
-void CopyEngine::setDefaultDestinationFolder(const std::string &defaultDestinationFolder)
+void CopyEngine::setBuffer(const bool &buffer)
{
- this->defaultDestinationFolder=defaultDestinationFolder;
+ this->buffer=buffer;
if(uiIsInstalled)
- ui->defaultDestinationFolder->setText(QString::fromStdString(defaultDestinationFolder));
+ ui->buffer->setChecked(buffer);
+ listThread->setBuffer(buffer);
}
-void CopyEngine::setCopyListOrder(const bool &order)
+void CopyEngine::setDefaultDestinationFolder(const std::string &defaultDestinationFolder)
{
- listThread->setCopyListOrder(order);
+ this->defaultDestinationFolder=defaultDestinationFolder;
+ if(uiIsInstalled)
+ ui->defaultDestinationFolder->setText(QString::fromStdString(defaultDestinationFolder));
}
void CopyEngine::exportErrorIntoTransferList()
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"exportErrorIntoTransferList");
- std::string fileName = QFileDialog::getSaveFileName(interface,QString::fromStdString(facilityEngine->translateText("Save transfer list")),QStringLiteral("transfer-list.lst"),QString::fromStdString(facilityEngine->translateText("Transfer list"))+QStringLiteral(" (*.lst)")).toStdString();
+ std::string fileName = QFileDialog::getSaveFileName(uiinterface,QString::fromStdString(facilityEngine->translateText("Save transfer list")),QStringLiteral("transfer-list.lst"),QString::fromStdString(facilityEngine->translateText("Transfer list"))+QStringLiteral(" (*.lst)")).toStdString();
if(fileName.empty())
return;
emit signal_exportErrorIntoTransferList(fileName);
}
+
+//set auto start
+void CopyEngine::setAutoStart(const bool autoStart)
+{
+ this->autoStart=autoStart;
+ if(uiIsInstalled)
+ ui->autoStart->setChecked(autoStart);
+ listThread->setAutoStart(autoStart);
+}
diff --git a/plugins/CopyEngine/Ultracopier/CopyEngine.h b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.h
index e5311d8..caba5b5 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CopyEngine.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.h
@@ -8,7 +8,6 @@
#include <QList>
#include <vector>
#include <string>
-#include <QFileInfo>
#include <QFile>
#include <QFileDialog>
#include <QMessageBox>
@@ -52,17 +51,14 @@ private:
QWidget * tempWidget;
Ui::copyEngineOptions * ui;
bool uiIsInstalled;
- QWidget * interface;
+ QWidget * uiinterface;
Filters * filters;
RenamingRules * renamingRules;
FacilityInterface * facilityEngine;
- uint32_t maxSpeed;
bool doRightTransfer;
bool keepDate;
- int blockSize;
- int parallelBuffer;
- int sequentialBuffer;
- int parallelizeIfSmallerThan;
+ bool os_spec_flags;
+ bool native_copy;
bool followTheStrictOrder;
bool deletePartiallyTransferredFiles;
int inodeThreads;
@@ -73,22 +69,23 @@ private:
bool rsync;
#endif
bool checkDestinationFolderExists;
+ bool mkFullPath;
+ bool checksum;
FileExistsAction alwaysDoThisActionForFileExists;
FileErrorAction alwaysDoThisActionForFileError;
FileErrorAction alwaysDoThisActionForFolderError;
FolderExistsAction alwaysDoThisActionForFolderExists;
- TransferAlgorithm transferAlgorithm;
bool dialogIsOpen;
volatile bool stopIt;
std::string defaultDestinationFolder;
/// \brief error queue
struct errorQueueItem
{
- TransferThread * transfer; ///< NULL if send by scan thread
+ TransferThreadAsync * transfer; ///< NULL if send by scan thread
ScanFileOrFolder * scan; ///< NULL if send by transfer thread
bool mkPath;
bool rmPath;
- QFileInfo inode;
+ INTERNALTYPEPATH inode;
std::string errorString;
ErrorType errorType;
};
@@ -96,10 +93,10 @@ private:
/// \brief already exists queue
struct alreadyExistsQueueItem
{
- TransferThread * transfer; ///< NULL if send by scan thread
+ TransferThreadAsync * transfer; ///< NULL if send by scan thread
ScanFileOrFolder * scan; ///< NULL if send by transfer thread
- QFileInfo source;
- QFileInfo destination;
+ INTERNALTYPEPATH source;
+ INTERNALTYPEPATH destination;
bool isSame;
};
std::vector<alreadyExistsQueueItem> alreadyExistsQueue;
@@ -107,16 +104,13 @@ private:
Ultracopier::CopyMode mode;
bool forcedMode;
- bool doChecksum;
- bool checksumIgnoreIfImpossible;
- bool checksumOnlyOnError;
- bool osBuffer;
- bool osBufferLimited;
bool checkDiskSpace;
+ bool buffer;
unsigned int osBufferLimit;
std::vector<std::string> includeStrings,includeOptions,excludeStrings,excludeOptions;
std::string firstRenamingRule;
std::string otherRenamingRule;
+ uint64_t errorPutAtEnd;
//send action done timer
QTimer timerActionDone;
@@ -128,112 +122,99 @@ private:
private slots:
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
void updateTheDebugInfo(const std::vector<std::string> &newList, const std::vector<std::string> &newList2, const int &numberOfInodeOperation);
+ friend class DebugDialog;
#endif
/************* External call ********************/
//dialog message
/// \note Can be call without queue because all call will be serialized
- void fileAlreadyExistsSlot(QFileInfo source,QFileInfo destination,bool isSame,TransferThread * thread);
+ void fileAlreadyExistsSlot(INTERNALTYPEPATH source, INTERNALTYPEPATH destination, bool isSame, TransferThreadAsync * thread);
/// \note Can be call without queue because all call will be serialized
- void errorOnFileSlot(QFileInfo fileInfo, std::string errorString, TransferThread * thread, const ErrorType &errorType);
+ void errorOnFileSlot(INTERNALTYPEPATH fileInfo, std::string errorString, TransferThreadAsync * thread, const ErrorType &errorType);
/// \note Can be call without queue because all call will be serialized
- void folderAlreadyExistsSlot(QFileInfo source,QFileInfo destination,bool isSame,ScanFileOrFolder * thread);
+ void folderAlreadyExistsSlot(INTERNALTYPEPATH source,INTERNALTYPEPATH destination,bool isSame,ScanFileOrFolder * thread);
/// \note Can be call without queue because all call will be serialized
- void errorOnFolderSlot(QFileInfo fileInfo, std::string errorString, ScanFileOrFolder * thread, ErrorType errorType);
+ void errorOnFolderSlot(INTERNALTYPEPATH fileInfo, std::string errorString, ScanFileOrFolder * thread, ErrorType errorType);
//mkpath event
- void mkPathErrorOnFolderSlot(QFileInfo, std::string, ErrorType errorType);
+ void mkPathErrorOnFolderSlot(INTERNALTYPEPATH, std::string, ErrorType errorType);
//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);
+ void fileAlreadyExists(INTERNALTYPEPATH source, INTERNALTYPEPATH destination, bool isSame, TransferThreadAsync * thread, bool isCalledByShowOneNewDialog=false);
/// \note Can be call without queue because all call will be serialized
- void errorOnFile(QFileInfo fileInfo, std::string errorString, TransferThread * thread, const ErrorType &errorType, bool isCalledByShowOneNewDialog=false);
+ void errorOnFile(INTERNALTYPEPATH fileInfo, std::string errorString, TransferThreadAsync * thread, const ErrorType &errorType, bool isCalledByShowOneNewDialog=false);
/// \note Can be call without queue because all call will be serialized
- void folderAlreadyExists(QFileInfo source,QFileInfo destination,bool isSame,ScanFileOrFolder * thread,bool isCalledByShowOneNewDialog=false);
+ void folderAlreadyExists(INTERNALTYPEPATH source,INTERNALTYPEPATH destination,bool isSame,ScanFileOrFolder * thread,bool isCalledByShowOneNewDialog=false);
/// \note Can be call without queue because all call will be serialized
- void errorOnFolder(QFileInfo fileInfo, std::string errorString, ScanFileOrFolder * thread, ErrorType errorType, bool isCalledByShowOneNewDialog=false);
+ void errorOnFolder(INTERNALTYPEPATH fileInfo, std::string errorString, ScanFileOrFolder * thread, ErrorType errorType, bool isCalledByShowOneNewDialog=false);
//mkpath event
- void mkPathErrorOnFolder(QFileInfo, std::string, const ErrorType &errorType, bool isCalledByShowOneNewDialog=false);
+ void mkPathErrorOnFolder(INTERNALTYPEPATH, std::string, const ErrorType &errorType, 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(std::string firstRenamingRule,std::string otherRenamingRule);
void showRenamingRules();
void get_realBytesTransfered(quint64 realBytesTransfered);
void newActionInProgess(Ultracopier::EngineActionInProgress);
- void updatedBlockSize();
- void updateBufferCheckbox();
- void haveNeedPutAtBottom(bool needPutAtBottom, const QFileInfo &fileInfo, const std::string &errorString, TransferThread *thread, const ErrorType &errorType);
+ void haveNeedPutAtBottom(bool needPutAtBottom, const INTERNALTYPEPATH &fileInfo, const std::string &errorString, TransferThreadAsync *thread, const ErrorType &errorType);
void missingDiskSpace(std::vector<Diskspace> list);
- void exportErrorIntoTransferList();
+ void exportErrorIntoTransferList() override;
public:
/** \brief to send the options panel
* \return return false if have not the options
* \param tempWidget the widget to generate on it the options */
- bool getOptionsEngine(QWidget * tempWidget);
+ bool getOptionsEngine(QWidget * tempWidget) override;
/** \brief to have interface widget to do modal dialog
* \param interface to have the widget of the interface, useful for modal dialog */
- void setInterfacePointer(QWidget * interface);
+ void setInterfacePointer(QWidget * uiinterface) override;
//return empty if multiple
/** \brief compare the current sources of the copy, with the passed arguments
* \param sources the sources list to compares with the current sources list
* \return true if have same sources, else false (or empty) */
- bool haveSameSource(const std::vector<std::string> &sources);
+ bool haveSameSource(const std::vector<std::string> &sources) override;
/** \brief compare the current destination of the copy, with the passed arguments
* \param destination the destination to compares with the current destination
* \return true if have same destination, else false (or empty) */
- bool haveSameDestination(const std::string &destination);
+ bool haveSameDestination(const std::string &destination) override;
//external soft like file browser have send copy/move list to do
/** \brief send copy without destination, ask the destination
* \param sources the sources list to copy
* \return true if the copy have been accepted */
- bool newCopy(const std::vector<std::string> &sources);
+ bool newCopy(const std::vector<std::string> &sources) override;
/** \brief send copy with destination
* \param sources the sources list to copy
* \param destination the destination to copy
* \return true if the copy have been accepted */
- bool newCopy(const std::vector<std::string> &sources,const std::string &destination);
+ bool newCopy(const std::vector<std::string> &sources,const std::string &destination) override;
/** \brief send move without destination, ask the destination
* \param sources the sources list to move
* \return true if the move have been accepted */
- bool newMove(const std::vector<std::string> &sources);
+ bool newMove(const std::vector<std::string> &sources) override;
/** \brief send move without destination, ask the destination
* \param sources the sources list to move
* \param destination the destination to move
* \return true if the move have been accepted */
- bool newMove(const std::vector<std::string> &sources,const std::string &destination);
+ bool newMove(const std::vector<std::string> &sources,const std::string &destination) override;
/** \brief send the new transfer list
* \param file the transfer list */
- void newTransferList(const std::string &file);
+ void newTransferList(const std::string &file) override;
/** \brief to get byte read, use by Ultracopier for the speed calculation
* real size transfered to right speed calculation */
- uint64_t realByteTransfered();
+ uint64_t realByteTransfered() override;
/** \brief support speed limitation */
- bool supportSpeedLimitation() const;
+ bool supportSpeedLimitation() const override;
/** \brief to set drives detected
* specific to this copy engine */
/** \brief to sync the transfer list
* Used when the interface is changed, useful to minimize the memory size */
- void syncTransferList();
+ void syncTransferList() override;
- 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(std::vector<std::string> includeStrings,std::vector<std::string> includeOptions,std::vector<std::string> excludeStrings,std::vector<std::string> excludeOptions);
void setRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule);
#ifdef ULTRACOPIER_PLUGIN_RSYNC
@@ -241,54 +222,55 @@ public:
#endif
void setCheckDiskSpace(const bool &checkDiskSpace);
void setDefaultDestinationFolder(const std::string &defaultDestinationFolder);
- void setCopyListOrder(const bool &order);
void defaultDestinationFolderBrowse();
std::string askDestination();
+ static std::string stringimplode(const std::vector<std::string>& elems, const std::string &delim);
+ void setBuffer(const bool &buffer);
public slots:
//user ask ask to add folder (add it with interface ask source/destination)
/** \brief add folder called on the interface
* Used by manual adding */
- bool userAddFolder(const Ultracopier::CopyMode &mode);
+ bool userAddFolder(const Ultracopier::CopyMode &mode) override;
/** \brief add file called on the interface
* Used by manual adding */
- bool userAddFile(const Ultracopier::CopyMode &mode);
+ bool userAddFile(const Ultracopier::CopyMode &mode) override;
//action on the copy
/// \brief put the transfer in pause
- void pause();
+ void pause() override;
/// \brief resume the transfer
- void resume();
+ void resume() override;
/** \brief skip one transfer entry
* \param id id of the file to remove */
- void skip(const uint64_t &id);
+ void skip(const uint64_t &id) override;
/// \brief cancel all the transfer
- void cancel();
+ void cancel() override;
//edit the transfer list
/** \brief remove the selected item
* \param ids ids is the id list of the selected items */
- void removeItems(const std::vector<uint64_t> &ids);
+ void removeItems(const std::vector<uint64_t> &ids) override;
/** \brief move on top of the list the selected item
* \param ids ids is the id list of the selected items */
- void moveItemsOnTop(const std::vector<uint64_t> &ids);
+ void moveItemsOnTop(const std::vector<uint64_t> &ids) override;
/** \brief move up the list the selected item
* \param ids ids is the id list of the selected items */
- void moveItemsUp(const std::vector<uint64_t> &ids);
+ void moveItemsUp(const std::vector<uint64_t> &ids) override;
/** \brief move down the list the selected item
* \param ids ids is the id list of the selected items */
- void moveItemsDown(const std::vector<uint64_t> &ids);
+ void moveItemsDown(const std::vector<uint64_t> &ids) override;
/** \brief move on bottom of the list the selected item
* \param ids ids is the id list of the selected items */
- void moveItemsOnBottom(const std::vector<uint64_t> &ids);
+ void moveItemsOnBottom(const std::vector<uint64_t> &ids) override;
/** \brief give the forced mode, to export/import transfer list */
- void forceMode(const Ultracopier::CopyMode &mode);
+ void forceMode(const Ultracopier::CopyMode &mode) override;
/// \brief export the transfer list into a file
- void exportTransferList();
+ void exportTransferList() override;
/// \brief import the transfer list into a file
- void importTransferList();
+ void importTransferList() override;
/** \brief to set the speed limitation
* -1 if not able, 0 if disabled */
- bool setSpeedLimitation(const int64_t &speedLimitation);
+ bool setSpeedLimitation(const int64_t &speedLimitation) override;
// specific to this copy engine
@@ -296,12 +278,9 @@ public slots:
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);
+ void setOsSpecFlags(bool os_spec_flags);
+ void setNativeCopy(bool native_copy);
- void setParallelBuffer(int parallelBuffer);
- void setSequentialBuffer(int sequentialBuffer);
- void setParallelizeIfSmallerThan(int parallelizeIfSmallerThan);
void setMoveTheWholeFolder(const bool &moveTheWholeFolder);
void setFollowTheStrictOrder(const bool &followTheStrictOrder);
void setDeletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles);
@@ -313,6 +292,8 @@ public slots:
void setAutoStart(const bool autoStart);
/// \brief set if need check if the destination folder exists
void setCheckDestinationFolderExists(const bool checkDestinationFolderExists);
+ void setMkFullPath(const bool mkFullPath);
+ void setChecksum(const bool checksum);
/// \brief reset widget
void resetTempWidget();
//autoconnect
@@ -320,7 +301,6 @@ public slots:
void setFolderError(int index);
void setFileCollision(int index);
void setFileError(int index);
- void setTransferAlgorithm(int index);
/// \brief need retranslate the insterface
void newLanguageLoaded();
private slots:
@@ -333,6 +313,7 @@ signals:
void signal_pause() const;
void signal_resume() const;
void signal_skip(const uint64_t &id) const;
+ void signal_setSpeedLimitation(const int64_t &speedLimitation);
//edit the transfer list
void signal_removeItems(const std::vector<uint64_t> &ids) const;
@@ -347,14 +328,13 @@ signals:
void signal_exportErrorIntoTransferList(const std::string &fileName) const;
//action
- void signal_setTransferAlgorithm(TransferAlgorithm transferAlgorithm) const;
void signal_setCollisionAction(FileExistsAction alwaysDoThisActionForFileExists) const;
- void signal_setComboBoxFolderCollision(FolderExistsAction action) const;
+ //void signal_setComboBoxFolderCollision(FolderExistsAction action) const;// -> duplicate with signal_setFolderCollision ?
void signal_setFolderCollision(FolderExistsAction action) const;
//internal cancel
void tryCancel() const;
- void getNeedPutAtBottom(const QFileInfo &fileInfo,const std::string &errorString,TransferThread * thread,const ErrorType &errorType) const;
+ void getNeedPutAtBottom(const INTERNALTYPEPATH &fileInfo,const std::string &errorString,TransferThreadAsync * thread,const ErrorType &errorType) const;
#ifdef ULTRACOPIER_PLUGIN_DEBUG
/// \brief To debug source
@@ -364,14 +344,8 @@ signals:
//other signals
void queryOneNewDialog() const;
- void send_speedLimitation(const uint64_t &speedLimitation) const;
- void send_blockSize(const int &blockSize) const;
- void send_osBufferLimit(const unsigned int &osBufferLimit) const;
void send_setFilters(const std::vector<Filters_rules> &include,const std::vector<Filters_rules> &exclude) const;
void send_sendNewRenamingRules(std::string firstRenamingRule,std::string otherRenamingRule) const;
- void send_parallelBuffer(const int &parallelBuffer) const;
- void send_sequentialBuffer(const int &sequentialBuffer) const;
- void send_parallelizeIfSmallerThan(const int &parallelizeIfSmallerThan) const;
void send_followTheStrictOrder(const bool &followTheStrictOrder) const;
void send_deletePartiallyTransferredFiles(const bool &deletePartiallyTransferredFiles) const;
void send_setInodeThreads(const int &inodeThreads) const;
diff --git a/plugins/CopyEngine/Ultracopier/CopyEngine.pro b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.pro
index 112e999..c7b7651 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CopyEngine.pro
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngine.pro
@@ -3,23 +3,17 @@ QMAKE_CXXFLAGS+="-std=c++0x -Wall -Wextra"
mac:QMAKE_CXXFLAGS+="-stdlib=libc++"
QT += widgets xml
-DEFINES += UNICODE _UNICODE
+DEFINES += _FILE_OFFSET_BITS=64 UNICODE _UNICODE WIDESTRING _LARGE_FILE_SOURCE=1
TEMPLATE = lib
CONFIG += plugin
-win32 {
- LIBS += -ladvapi32
-}
-HEADERS = \
+HEADERS += \
$$PWD/StructEnumDefinition.h \
$$PWD/StructEnumDefinition_CopyEngine.h \
$$PWD/DebugEngineMacro.h \
- $$PWD/Variable.h \
+ $$PWD/CopyEngineUltracopier-SpecVariable.h \
$$PWD/TransferThread.h \
- $$PWD/ReadThread.h \
- $$PWD/WriteThread.h \
$$PWD/MkPath.h \
- $$PWD/AvancedQFile.h \
$$PWD/ListThread.h \
$$PWD/../../../interface/PluginInterface_CopyEngine.h \
$$PWD/../../../interface/OptionInterface.h \
@@ -37,13 +31,12 @@ HEADERS = \
$$PWD/FileIsSameDialog.h \
$$PWD/FolderExistsDialog.h \
$$PWD/ScanFileOrFolder.h \
- $$PWD/DiskSpace.h
-SOURCES = \
+ $$PWD/DiskSpace.h \
+ async/ReadThread.h \
+ async/WriteThread.h
+SOURCES += \
$$PWD/TransferThread.cpp \
- $$PWD/ReadThread.cpp \
- $$PWD/WriteThread.cpp \
$$PWD/MkPath.cpp \
- $$PWD/AvancedQFile.cpp \
$$PWD/ListThread.cpp \
$$PWD/../../../cpp11addition.cpp \
$$PWD/../../../cpp11additionstringtointcpp.cpp \
@@ -61,7 +54,16 @@ SOURCES = \
$$PWD/FileIsSameDialog.cpp \
$$PWD/FolderExistsDialog.cpp \
$$PWD/ScanFileOrFolder.cpp \
- $$PWD/DiskSpace.cpp
+ $$PWD/DiskSpace.cpp \
+ ListThreadActions.cpp \
+ ListThreadListChange.cpp \
+ ListThreadMedia.cpp \
+ ListThreadNew.cpp \
+ ListThreadOptions.cpp \
+ ListThreadScan.cpp \
+ ListThreadStat.cpp \
+ async/ReadThread.cpp \
+ async/WriteThread.cpp
TARGET = $$qtLibraryTarget(copyEngine)
TRANSLATIONS += \
$$PWD/Languages/ar/translation.ts \
@@ -104,3 +106,10 @@ OTHER_FILES += \
RESOURCES += \
$$PWD/copyEngineResources.qrc
}
+
+win32 {
+ LIBS += -ladvapi32
+ DEFINES += WIDESTRING
+}
+HEADERS += $$PWD/async/TransferThreadAsync.h
+SOURCES += $$PWD/async/TransferThreadAsync.cpp
diff --git a/plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp b/plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp
index ce86c94..9dc9bc2 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CopyEngineFactory.cpp
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.cpp
@@ -10,6 +10,13 @@
#include "../../../cpp11addition.h"
#include "CopyEngineFactory.h"
+#include "TransferThread.h"
+#ifdef Q_OS_LINUX
+#include <sys/sysinfo.h>
+#endif
+#ifdef Q_OS_WIN32
+#include <sysinfoapi.h>
+#endif
// The cmath header from MSVC does not contain round()
#if (defined(_WIN64) || defined(_WIN32)) && defined(_MSC_VER)
@@ -23,22 +30,22 @@ CopyEngineFactory::CopyEngineFactory() :
{
qRegisterMetaType<FolderExistsAction>("FolderExistsAction");
qRegisterMetaType<FileExistsAction>("FileExistsAction");
- qRegisterMetaType<QList<Filters_rules> >("QList<Filters_rules>");
+ qRegisterMetaType<std::vector<Filters_rules> >("std::vector<Filters_rules>");
qRegisterMetaType<TransferStat>("TransferStat");
- qRegisterMetaType<QList<QByteArray> >("QList<QByteArray>");
- qRegisterMetaType<TransferAlgorithm>("TransferAlgorithm");
qRegisterMetaType<ActionType>("ActionType");
qRegisterMetaType<ErrorType>("ErrorType");
qRegisterMetaType<Diskspace>("Diskspace");
- qRegisterMetaType<QList<Diskspace> >("QList<Diskspace>");
- qRegisterMetaType<QFileInfo>("QFileInfo");
+ qRegisterMetaType<std::vector<Diskspace> >("std::vector<Diskspace>");
qRegisterMetaType<Ultracopier::CopyMode>("Ultracopier::CopyMode");
- qRegisterMetaType<std::vector<Filters_rules> >("std::vector<Filters_rules>");
+ qRegisterMetaType<TransferThread::dirent_uc>("TransferThread::dirent_uc");
+ #ifdef WIDESTRING
+ qRegisterMetaType<std::wstring>("std::wstring");
+ qRegisterMetaType<wchar_t *>("wchar_t *");
+ #endif
tempWidget=new QWidget();
ui->setupUi(tempWidget);
ui->toolBox->setCurrentIndex(0);
- ui->blockSize->setMaximum(ULTRACOPIER_PLUGIN_MAX_BLOCK_SIZE);
errorFound=false;
optionsEngine=NULL;
filters=new Filters(tempWidget);
@@ -46,38 +53,29 @@ CopyEngineFactory::CopyEngineFactory() :
connect(ui->doRightTransfer, &QCheckBox::toggled, this,&CopyEngineFactory::setDoRightTransfer);
connect(ui->keepDate, &QCheckBox::toggled, this,&CopyEngineFactory::setKeepDate);
- connect(ui->blockSize, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngineFactory::setBlockSize);
- connect(ui->sequentialBuffer, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngineFactory::setSequentialBuffer);
- connect(ui->parallelBuffer, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngineFactory::setParallelBuffer);
- connect(ui->parallelizeIfSmallerThan, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngineFactory::setParallelizeIfSmallerThan);
+ connect(ui->native_copy, &QCheckBox::toggled, this,&CopyEngineFactory::setNativeCopy);
+ connect(ui->os_spec_flags, &QCheckBox::toggled, this,&CopyEngineFactory::setOsSpecFlags);
connect(ui->inodeThreads, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged), this,&CopyEngineFactory::on_inodeThreads_editingFinished);
connect(ui->autoStart, &QCheckBox::toggled, this,&CopyEngineFactory::setAutoStart);
- connect(ui->doChecksum, &QCheckBox::toggled, this,&CopyEngineFactory::doChecksum_toggled);
connect(ui->comboBoxFolderError, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setFolderError);
connect(ui->comboBoxFolderCollision, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setFolderCollision);
connect(ui->comboBoxFileError, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setFileError);
connect(ui->comboBoxFileCollision, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setFileCollision);
- connect(ui->transferAlgorithm, static_cast<void(QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this,&CopyEngineFactory::setTransferAlgorithm);
connect(ui->checkBoxDestinationFolderExists, &QCheckBox::toggled, this,&CopyEngineFactory::setCheckDestinationFolder);
- connect(ui->checksumIgnoreIfImpossible, &QCheckBox::toggled, this,&CopyEngineFactory::checksumIgnoreIfImpossible_toggled);
- connect(ui->checksumOnlyOnError, &QCheckBox::toggled, this,&CopyEngineFactory::checksumOnlyOnError_toggled);
- connect(ui->osBuffer, &QCheckBox::toggled, this,&CopyEngineFactory::osBuffer_toggled);
- connect(ui->osBufferLimited, &QCheckBox::toggled, this,&CopyEngineFactory::osBufferLimited_toggled);
- connect(ui->osBufferLimit, &QSpinBox::editingFinished, this,&CopyEngineFactory::osBufferLimit_editingFinished);
+ connect(ui->mkpath, &QCheckBox::toggled, this,&CopyEngineFactory::setMkFullPath);
+ connect(ui->checksum, &QCheckBox::toggled, this,&CopyEngineFactory::setChecksum);
#ifdef ULTRACOPIER_PLUGIN_RSYNC
connect(ui->rsync, &QCheckBox::toggled, this,&CopyEngineFactory::setRsync);
#endif
connect(ui->inodeThreads, &QSpinBox::editingFinished, this,&CopyEngineFactory::on_inodeThreads_editingFinished);
- connect(ui->osBufferLimited, &QAbstractButton::toggled, this,&CopyEngineFactory::updateBufferCheckbox);
- connect(ui->osBuffer, &QAbstractButton::toggled, this,&CopyEngineFactory::updateBufferCheckbox);
connect(ui->moveTheWholeFolder, &QCheckBox::toggled, this,&CopyEngineFactory::moveTheWholeFolder);
connect(ui->followTheStrictOrder, &QCheckBox::toggled, this,&CopyEngineFactory::followTheStrictOrder);
connect(ui->deletePartiallyTransferredFiles,&QCheckBox::toggled, this,&CopyEngineFactory::deletePartiallyTransferredFiles);
connect(ui->renameTheOriginalDestination,&QCheckBox::toggled, this,&CopyEngineFactory::renameTheOriginalDestination);
connect(ui->checkDiskSpace, &QCheckBox::toggled, this,&CopyEngineFactory::checkDiskSpace);
+ connect(ui->buffer, &QCheckBox::toggled, this,&CopyEngineFactory::setBuffer);
connect(ui->defaultDestinationFolderBrowse,&QPushButton::clicked, this,&CopyEngineFactory::defaultDestinationFolderBrowse);
connect(ui->defaultDestinationFolder,&QLineEdit::editingFinished, this,&CopyEngineFactory::defaultDestinationFolder);
- connect(ui->copyListOrder, &QCheckBox::toggled, this,&CopyEngineFactory::copyListOrder);
connect(filters,&Filters::sendNewFilters,this,&CopyEngineFactory::sendNewFilters);
connect(ui->filters,&QPushButton::clicked,this,&CopyEngineFactory::showFilterDialog);
@@ -112,28 +110,21 @@ PluginInterface_CopyEngine * CopyEngineFactory::getInstance()
connect(this,&CopyEngineFactory::reloadLanguage,realObject,&CopyEngine::newLanguageLoaded);
realObject->setRightTransfer(ui->doRightTransfer->isChecked());
realObject->setKeepDate(ui->keepDate->isChecked());
- realObject->setBlockSize(ui->blockSize->value());
- realObject->setAutoStart(ui->autoStart->isChecked());
+ realObject->setOsSpecFlags(ui->os_spec_flags->isChecked());
+ realObject->setNativeCopy(ui->native_copy->isChecked());
#ifdef ULTRACOPIER_PLUGIN_RSYNC
realObject->setRsync(ui->rsync->isChecked());
#endif
+ realObject->setAutoStart(ui->autoStart->isChecked());
realObject->setFolderCollision(ui->comboBoxFolderCollision->currentIndex());
realObject->setFolderError(ui->comboBoxFolderError->currentIndex());
realObject->setFileCollision(ui->comboBoxFileCollision->currentIndex());
realObject->setFileError(ui->comboBoxFileError->currentIndex());
- realObject->setTransferAlgorithm(ui->transferAlgorithm->currentIndex());
realObject->setCheckDestinationFolderExists(ui->checkBoxDestinationFolderExists->isChecked());
- realObject->set_doChecksum(ui->doChecksum->isChecked());
- realObject->set_checksumIgnoreIfImpossible(ui->checksumIgnoreIfImpossible->isChecked());
- realObject->set_checksumOnlyOnError(ui->checksumOnlyOnError->isChecked());
- realObject->set_osBuffer(ui->osBuffer->isChecked());
- realObject->set_osBufferLimited(ui->osBufferLimited->isChecked());
- realObject->set_osBufferLimit(ui->osBufferLimit->value());
+ realObject->setMkFullPath(ui->mkpath->isChecked());
+ realObject->setChecksum(ui->checksum->isChecked());
realObject->set_setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
realObject->setRenamingRules(firstRenamingRule,otherRenamingRule);
- realObject->setSequentialBuffer(ui->sequentialBuffer->value());
- realObject->setParallelBuffer(ui->parallelBuffer->value());
- realObject->setParallelizeIfSmallerThan(ui->parallelizeIfSmallerThan->value());
realObject->setMoveTheWholeFolder(ui->moveTheWholeFolder->isChecked());
realObject->setFollowTheStrictOrder(ui->followTheStrictOrder->isChecked());
realObject->setDeletePartiallyTransferredFiles(ui->deletePartiallyTransferredFiles->isChecked());
@@ -141,7 +132,7 @@ PluginInterface_CopyEngine * CopyEngineFactory::getInstance()
realObject->setRenameTheOriginalDestination(ui->renameTheOriginalDestination->isChecked());
realObject->setCheckDiskSpace(ui->checkDiskSpace->isChecked());
realObject->setDefaultDestinationFolder(ui->defaultDestinationFolder->text().toStdString());
- realObject->setCopyListOrder(ui->copyListOrder->isChecked());
+ realObject->setBuffer(ui->buffer->isChecked());
return newTransferEngine;
}
@@ -159,11 +150,33 @@ void CopyEngineFactory::setResources(OptionInterface * options,const std::string
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,QStringLiteral("Unable to change date time of files, only gcc is supported"));
#endif
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,COMPILERINFO);
+ #if defined (UNICODE)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"UNICODE set");
+ #endif
+ #if defined (_FILE_OFFSET_BITS)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"_FILE_OFFSET_BITS set to "+std::to_string(_FILE_OFFSET_BITS));
+ #endif
+ #if defined (WIDESTRING)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"WIDESTRING set");
+ #endif
+ #if defined (_LARGE_FILE_SOURCE)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"_LARGE_FILE_SOURCE set to "+std::to_string(_LARGE_FILE_SOURCE));
+ #endif
#if defined (ULTRACOPIER_PLUGIN_CHECKLISTTYPE)
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"CHECK LIST TYPE set");
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"CHECK LIST TYPE set");
#else
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"CHECK LIST TYPE not set");
#endif
+ #ifdef Q_OS_WIN32
+ MEMORYSTATUSEX memoryStatus;
+ if(GlobalMemoryStatusEx(&memoryStatus))
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Detected Memory MB Windows: "+std::to_string(memoryStatus.ullTotalPhys/1024));
+ #endif
+ #ifdef Q_OS_LINUX
+ struct sysinfo info;
+ if(sysinfo(&info)==0)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,"Detected Memory MB Linux: "+std::to_string(info.totalhigh*info.mem_unit/1024/1024));
+ #endif
if(options!=NULL)
{
//load the options
@@ -174,25 +187,17 @@ void CopyEngineFactory::setResources(OptionInterface * options,const std::string
#else
KeysList.push_back(std::pair<std::string, std::string>("keepDate","true"));
#endif
+ KeysList.push_back(std::pair<std::string, std::string>("native_copy","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("os_spec_flags","true"));
KeysList.push_back(std::pair<std::string, std::string>("blockSize",std::to_string(ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE)));
- uint32_t sequentialBuffer=ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE*ULTRACOPIER_PLUGIN_DEFAULT_SEQUENTIAL_NUMBER_OF_BLOCK;
- uint32_t parallelBuffer=ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE*ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK;
//to prevent swap and other bad effect, only under windows and unix for now
#if defined(Q_OS_WIN32) or (defined(Q_OS_LINUX) and defined(_SC_PHYS_PAGES))
size_t max_memory=getTotalSystemMemory()/1024;
- if(max_memory>0)
- {
- if(max_memory>2147483648)
- max_memory=2147483648;
- if(sequentialBuffer>(max_memory/10))
- sequentialBuffer=max_memory/10;
- if(parallelBuffer>(max_memory/100))
- parallelBuffer=max_memory/100;
- }
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,QStringLiteral("detected memory: %1MB").arg(max_memory/1024).toStdString());
+ if(max_memory>2147483648)
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,QStringLiteral("detected memory: %1MB").arg(max_memory/1024).toStdString());
+ else
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Information,QStringLiteral("detected memory: %1GB").arg(max_memory/(1024*1024)).toStdString());
#endif
- KeysList.push_back(std::pair<std::string, std::string>("sequentialBuffer",std::to_string(sequentialBuffer)));
- KeysList.push_back(std::pair<std::string, std::string>("parallelBuffer",std::to_string(parallelBuffer)));
KeysList.push_back(std::pair<std::string, std::string>("parallelizeIfSmallerThan",std::to_string(128)));//128KB, better for modern hardware: Multiple queue en linux, SSD, ...
KeysList.push_back(std::pair<std::string, std::string>("autoStart","true"));
#ifdef ULTRACOPIER_PLUGIN_RSYNC
@@ -204,34 +209,45 @@ void CopyEngineFactory::setResources(OptionInterface * options,const std::string
KeysList.push_back(std::pair<std::string, std::string>("fileCollision",std::to_string(0)));
KeysList.push_back(std::pair<std::string, std::string>("transferAlgorithm",std::to_string(0)));
KeysList.push_back(std::pair<std::string, std::string>("checkDestinationFolder","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("mkpath","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("checksum","false"));
KeysList.push_back(std::pair<std::string, std::string>("includeStrings",""));
KeysList.push_back(std::pair<std::string, std::string>("includeOptions",""));
KeysList.push_back(std::pair<std::string, std::string>("excludeStrings",""));
KeysList.push_back(std::pair<std::string, std::string>("excludeOptions",""));
- KeysList.push_back(std::pair<std::string, std::string>("doChecksum","false"));
KeysList.push_back(std::pair<std::string, std::string>("checksumIgnoreIfImpossible","true"));
KeysList.push_back(std::pair<std::string, std::string>("checksumOnlyOnError","true"));
- KeysList.push_back(std::pair<std::string, std::string>("osBuffer","false"));
KeysList.push_back(std::pair<std::string, std::string>("firstRenamingRule",""));
KeysList.push_back(std::pair<std::string, std::string>("otherRenamingRule",""));
KeysList.push_back(std::pair<std::string, std::string>("osBufferLimited","false"));
KeysList.push_back(std::pair<std::string, std::string>("osBufferLimit",std::to_string(512)));
KeysList.push_back(std::pair<std::string, std::string>("deletePartiallyTransferredFiles","true"));
KeysList.push_back(std::pair<std::string, std::string>("moveTheWholeFolder","true"));
- KeysList.push_back(std::pair<std::string, std::string>("followTheStrictOrder","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("followTheStrictOrder","true"));
KeysList.push_back(std::pair<std::string, std::string>("renameTheOriginalDestination","false"));
KeysList.push_back(std::pair<std::string, std::string>("checkDiskSpace","true"));
KeysList.push_back(std::pair<std::string, std::string>("defaultDestinationFolder",""));
- KeysList.push_back(std::pair<std::string, std::string>("inodeThreads",std::to_string(1)));
- KeysList.push_back(std::pair<std::string, std::string>("copyListOrder","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("inodeThreads",std::to_string(16)));
+ #ifdef Q_OS_WIN32
+ //un Windows, without buffer the write seam should be aligned and full block, Ultracopier not support this
+ KeysList.push_back(std::pair<std::string, std::string>("osBuffer","true"));
+ KeysList.push_back(std::pair<std::string, std::string>("buffer","true"));
+ #else
+ KeysList.push_back(std::pair<std::string, std::string>("osBuffer","false"));
+ KeysList.push_back(std::pair<std::string, std::string>("buffer","false"));
+ #endif
options->addOptionGroup(KeysList);
optionsEngine=options;
resetOptions();
- updateBufferCheckbox();
-
- updatedBlockSize();
+ std::string firstRenamingRule=options->getOptionValue("firstRenamingRule");
+ if(firstRenamingRule.find("%name%")==std::string::npos || firstRenamingRule.find("%suffix%")==std::string::npos)
+ options->setOptionValue("firstRenamingRule","");
+ std::string otherRenamingRule=options->getOptionValue("otherRenamingRule");
+ if(otherRenamingRule.find("%name%")==std::string::npos || otherRenamingRule.find("%suffix%")==std::string::npos
+ || otherRenamingRule.find("%number%")==std::string::npos)
+ options->setOptionValue("otherRenamingRule","");
}
}
@@ -264,6 +280,12 @@ bool CopyEngineFactory::canDoOnlyCopy() const
return false;
}
+/// \brief to get if have pause
+bool CopyEngineFactory::havePause()
+{
+ return true;
+}
+
void CopyEngineFactory::resetOptions()
{
auto options=optionsEngine;
@@ -274,7 +296,12 @@ void CopyEngineFactory::resetOptions()
#endif
ui->doRightTransfer->setChecked(stringtobool(options->getOptionValue("doRightTransfer")));
ui->keepDate->setChecked(stringtobool(options->getOptionValue("keepDate")));
- ui->blockSize->setValue(stringtouint32(options->getOptionValue("blockSize")));//keep before sequentialBuffer and parallelBuffer
+ ui->os_spec_flags->setChecked(stringtobool(options->getOptionValue("os_spec_flags")));
+ ui->native_copy->setChecked(stringtobool(options->getOptionValue("native_copy")));
+ #ifdef Q_OS_WIN32
+ ui->native_copy->setEnabled(false);
+ ui->native_copy->setToolTip(tr("Supported only on Windows"));
+ #endif
ui->autoStart->setChecked(stringtobool(options->getOptionValue("autoStart")));
#ifdef ULTRACOPIER_PLUGIN_RSYNC
ui->rsync->setChecked(stringtobool(options->getOptionValue("rsync")));
@@ -286,13 +313,9 @@ void CopyEngineFactory::resetOptions()
ui->comboBoxFolderCollision->setCurrentIndex(stringtouint32(options->getOptionValue("folderCollision")));
ui->comboBoxFileError->setCurrentIndex(stringtouint32(options->getOptionValue("fileError")));
ui->comboBoxFileCollision->setCurrentIndex(stringtouint32(options->getOptionValue("fileCollision")));
- ui->transferAlgorithm->setCurrentIndex(stringtouint32(options->getOptionValue("transferAlgorithm")));
ui->checkBoxDestinationFolderExists->setChecked(stringtobool(options->getOptionValue("checkDestinationFolder")));
- ui->parallelizeIfSmallerThan->setValue(stringtouint32(options->getOptionValue("parallelizeIfSmallerThan")));
- ui->sequentialBuffer->setValue(stringtouint32(options->getOptionValue("sequentialBuffer")));
- ui->parallelBuffer->setValue(stringtouint32(options->getOptionValue("parallelBuffer")));
- ui->sequentialBuffer->setSingleStep(ui->blockSize->value());
- ui->parallelBuffer->setSingleStep(ui->blockSize->value());
+ ui->mkpath->setChecked(stringtobool(options->getOptionValue("mkpath")));
+ ui->checksum->setChecked(stringtobool(options->getOptionValue("checksum")));
ui->deletePartiallyTransferredFiles->setChecked(stringtobool(options->getOptionValue("deletePartiallyTransferredFiles")));
ui->moveTheWholeFolder->setChecked(stringtobool(options->getOptionValue("moveTheWholeFolder")));
ui->followTheStrictOrder->setChecked(stringtobool(options->getOptionValue("followTheStrictOrder")));
@@ -300,28 +323,33 @@ void CopyEngineFactory::resetOptions()
ui->renameTheOriginalDestination->setChecked(stringtobool(options->getOptionValue("renameTheOriginalDestination")));
ui->checkDiskSpace->setChecked(stringtobool(options->getOptionValue("checkDiskSpace")));
ui->defaultDestinationFolder->setText(QString::fromStdString(options->getOptionValue("defaultDestinationFolder")));
+ ui->buffer->setChecked(stringtobool(options->getOptionValue("buffer")));
- ui->doChecksum->setChecked(stringtobool(options->getOptionValue("doChecksum")));
- ui->checksumIgnoreIfImpossible->setChecked(stringtobool(options->getOptionValue("checksumIgnoreIfImpossible")));
- ui->checksumOnlyOnError->setChecked(stringtobool(options->getOptionValue("checksumOnlyOnError")));
-
- ui->osBuffer->setChecked(stringtobool(options->getOptionValue("osBuffer")));
- ui->osBufferLimited->setChecked(stringtobool(options->getOptionValue("osBufferLimited")));
- ui->osBufferLimit->setValue(stringtouint32(options->getOptionValue("osBufferLimit")));
//ui->autoStart->setChecked(options->getOptionValue("autoStart").toBool());//moved from options(), wrong previous place
- includeStrings=stringtostringlist(options->getOptionValue("includeStrings"));
- includeOptions=stringtostringlist(options->getOptionValue("includeOptions"));
- excludeStrings=stringtostringlist(options->getOptionValue("excludeStrings"));
- excludeOptions=stringtostringlist(options->getOptionValue("excludeOptions"));
- filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions);
+ std::string s;
+ s=options->getOptionValue("includeStrings");
+ includeStrings=stringtostringlist(s);
+ s=options->getOptionValue("includeOptions");
+ includeOptions=stringtostringlist(s);
+ s=options->getOptionValue("excludeStrings");
+ excludeStrings=stringtostringlist(s);
+ s=options->getOptionValue("excludeOptions");
+ excludeOptions=stringtostringlist(s);
+ if(!filters->setFilters(includeStrings,includeOptions,excludeStrings,excludeOptions))
+ {
+ includeStrings.clear();
+ includeOptions.clear();
+ excludeStrings.clear();
+ excludeOptions.clear();
+ options->setOptionValue("includeStrings","");
+ options->setOptionValue("includeOptions","");
+ options->setOptionValue("excludeStrings","");
+ options->setOptionValue("excludeOptions","");
+ }
firstRenamingRule=options->getOptionValue("firstRenamingRule");
otherRenamingRule=options->getOptionValue("otherRenamingRule");
renamingRules->setRenamingRules(firstRenamingRule,otherRenamingRule);
- ui->checksumOnlyOnError->setEnabled(ui->doChecksum->isChecked());
- ui->checksumIgnoreIfImpossible->setEnabled(ui->doChecksum->isChecked());
- ui->copyListOrder->setChecked(stringtobool(options->getOptionValue("copyListOrder")));
-
optionsEngine=options;
}
@@ -344,50 +372,18 @@ void CopyEngineFactory::setKeepDate(bool keepDate)
optionsEngine->setOptionValue("keepDate",booltostring(keepDate));
}
-void CopyEngineFactory::setBlockSize(int blockSize)
+void CopyEngineFactory::setOsSpecFlags(bool os_spec_flags)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("blockSize",std::to_string(blockSize));
- updatedBlockSize();
+ optionsEngine->setOptionValue("os_spec_flags",booltostring(os_spec_flags));
}
-void CopyEngineFactory::setParallelBuffer(int parallelBuffer)
-{
- if(optionsEngine!=NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
- parallelBuffer=round((float)parallelBuffer/(float)ui->blockSize->value())*ui->blockSize->value();
- ui->parallelBuffer->setValue(parallelBuffer);
- optionsEngine->setOptionValue("parallelBuffer",std::to_string(parallelBuffer));
- }
-}
-
-void CopyEngineFactory::setSequentialBuffer(int sequentialBuffer)
-{
- if(optionsEngine!=NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
- sequentialBuffer=round((float)sequentialBuffer/(float)ui->blockSize->value())*ui->blockSize->value();
- ui->sequentialBuffer->setValue(sequentialBuffer);
- optionsEngine->setOptionValue("sequentialBuffer",std::to_string(sequentialBuffer));
- }
-}
-
-void CopyEngineFactory::setParallelizeIfSmallerThan(int parallelizeIfSmallerThan)
-{
- if(optionsEngine!=NULL)
- {
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
- optionsEngine->setOptionValue("parallelizeIfSmallerThan",std::to_string(parallelizeIfSmallerThan));
- }
-}
-
-void CopyEngineFactory::setAutoStart(bool autoStart)
+void CopyEngineFactory::setNativeCopy(bool native_copy)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("autoStart",booltostring(autoStart));
+ optionsEngine->setOptionValue("native_copy",booltostring(native_copy));
}
void CopyEngineFactory::setFolderCollision(int index)
@@ -404,18 +400,25 @@ void CopyEngineFactory::setFolderError(int index)
optionsEngine->setOptionValue("folderError",std::to_string(index));
}
-void CopyEngineFactory::setTransferAlgorithm(int index)
+void CopyEngineFactory::setCheckDestinationFolder()
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("checkDestinationFolder",booltostring(ui->checkBoxDestinationFolderExists->isChecked()));
+}
+
+void CopyEngineFactory::setMkFullPath()
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("transferAlgorithm",std::to_string(index));
+ optionsEngine->setOptionValue("mkpath",booltostring(ui->mkpath->isChecked()));
}
-void CopyEngineFactory::setCheckDestinationFolder()
+void CopyEngineFactory::setChecksum()
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("checkDestinationFolder",booltostring(ui->checkBoxDestinationFolderExists->isChecked()));
+ optionsEngine->setOptionValue("checksum",booltostring(ui->checksum->isChecked()));
}
void CopyEngineFactory::newLanguageLoaded()
@@ -444,9 +447,6 @@ void CopyEngineFactory::newLanguageLoaded()
ui->comboBoxFileCollision->setItemText(5,tr("Overwrite if older"));
ui->comboBoxFileCollision->setItemText(6,tr("Rename"));
- ui->transferAlgorithm->setItemText(0,tr("Automatic"));
- ui->transferAlgorithm->setItemText(1,tr("Sequential"));
- ui->transferAlgorithm->setItemText(2,tr("Parallel"));
if(optionsEngine!=NULL)
{
filters->newLanguageLoaded();
@@ -456,43 +456,6 @@ void CopyEngineFactory::newLanguageLoaded()
this->optionsEngine=optionsEngine;
}
-void CopyEngineFactory::doChecksum_toggled(bool doChecksum)
-{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("doChecksum",booltostring(doChecksum));
-}
-
-void CopyEngineFactory::checksumOnlyOnError_toggled(bool checksumOnlyOnError)
-{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("checksumOnlyOnError",booltostring(checksumOnlyOnError));
-}
-
-void CopyEngineFactory::osBuffer_toggled(bool osBuffer)
-{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("osBuffer",booltostring(osBuffer));
- ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked());
-}
-
-void CopyEngineFactory::osBufferLimited_toggled(bool osBufferLimited)
-{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("osBufferLimited",booltostring(osBufferLimited));
- ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked());
-}
-
-void CopyEngineFactory::osBufferLimit_editingFinished()
-{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the spinbox have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("osBufferLimit",std::to_string(ui->osBufferLimit->value()));
-}
-
void CopyEngineFactory::showFilterDialog()
{
if(optionsEngine==NULL)
@@ -543,19 +506,6 @@ void CopyEngineFactory::showRenamingRules()
renamingRules->exec();
}
-void CopyEngineFactory::updateBufferCheckbox()
-{
- ui->osBufferLimited->setEnabled(ui->osBuffer->isChecked());
- ui->osBufferLimit->setEnabled(ui->osBuffer->isChecked() && ui->osBufferLimited->isChecked());
-}
-
-void CopyEngineFactory::checksumIgnoreIfImpossible_toggled(bool checksumIgnoreIfImpossible)
-{
- ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
- if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("checksumIgnoreIfImpossible",booltostring(checksumIgnoreIfImpossible));
-}
-
void CopyEngineFactory::setFileCollision(int index)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"action index: "+std::to_string(index));
@@ -596,18 +546,6 @@ void CopyEngineFactory::setFileError(int index)
}
}
-void CopyEngineFactory::updatedBlockSize()
-{
- ui->sequentialBuffer->setMinimum(ui->blockSize->value());
- ui->sequentialBuffer->setSingleStep(ui->blockSize->value());
- ui->sequentialBuffer->setMaximum(ui->blockSize->value()*ULTRACOPIER_PLUGIN_MAX_SEQUENTIAL_NUMBER_OF_BLOCK);
- ui->parallelBuffer->setMinimum(ui->blockSize->value());
- ui->parallelBuffer->setSingleStep(ui->blockSize->value());
- ui->parallelBuffer->setMaximum(ui->blockSize->value()*ULTRACOPIER_PLUGIN_MAX_PARALLEL_NUMBER_OF_BLOCK);
- setParallelBuffer(ui->parallelBuffer->value());
- setSequentialBuffer(ui->sequentialBuffer->value());
-}
-
void CopyEngineFactory::deletePartiallyTransferredFiles(bool checked)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
@@ -701,9 +639,16 @@ void CopyEngineFactory::setRsync(bool rsync)
}
#endif
-void CopyEngineFactory::copyListOrder(bool checked)
+void CopyEngineFactory::setBuffer(bool checked)
+{
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
+ if(optionsEngine!=NULL)
+ optionsEngine->setOptionValue("buffer",booltostring(checked));
+}
+
+void CopyEngineFactory::setAutoStart(bool autoStart)
{
ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"the value have changed");
if(optionsEngine!=NULL)
- optionsEngine->setOptionValue("copyListOrder",booltostring(checked));
+ optionsEngine->setOptionValue("autoStart",booltostring(autoStart));
}
diff --git a/plugins/CopyEngine/Ultracopier/CopyEngineFactory.h b/plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.h
index 59c4208..810af80 100644..100755
--- a/plugins/CopyEngine/Ultracopier/CopyEngineFactory.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngineFactory.h
@@ -50,22 +50,25 @@ public:
CopyEngineFactory();
~CopyEngineFactory();
/// \brief to return the instance of the copy engine
- PluginInterface_CopyEngine * getInstance();
+ PluginInterface_CopyEngine * getInstance() override;
/// \brief set the resources, to store options, to have facilityInterface
- void setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath,FacilityInterface * facilityInterface,const bool &portableVersion);
+ void setResources(OptionInterface * options,const std::string &writePath,const std::string &pluginPath,
+ FacilityInterface * facilityInterface,const bool &portableVersion) override;
//get mode allowed
/// \brief define if can copy file, folder or both
- Ultracopier::CopyType getCopyType();
+ Ultracopier::CopyType getCopyType() override;
/// \brief to return which kind of transfer list operation is supported
- Ultracopier::TransferListOperation getTransferListOperation();
+ Ultracopier::TransferListOperation getTransferListOperation() override;
/// \brief define if can only copy, or copy and move
- bool canDoOnlyCopy() const;
+ bool canDoOnlyCopy() const override;
/// \brief to get the supported protocols for the source
- std::vector<std::string> supportedProtocolsForTheSource() const;
+ std::vector<std::string> supportedProtocolsForTheSource() const override;
/// \brief to get the supported protocols for the destination
- std::vector<std::string> supportedProtocolsForTheDestination() const;
+ std::vector<std::string> supportedProtocolsForTheDestination() const override;
/// \brief to get the options of the copy engine
- QWidget * options();
+ QWidget * options() override;
+ /// \brief to get if have pause
+ bool havePause() override;
private:
Ui::copyEngineOptions *ui;
@@ -87,33 +90,23 @@ private slots:
void init();
void setDoRightTransfer(bool doRightTransfer);
void setKeepDate(bool keepDate);
- void setBlockSize(int blockSize);
- void setParallelBuffer(int parallelBuffer);
- void setSequentialBuffer(int sequentialBuffer);
- void setParallelizeIfSmallerThan(int parallelizeIfSmallerThan);
- void setAutoStart(bool autoStart);
+ void setOsSpecFlags(bool os_spec_flags);
+ void setNativeCopy(bool native_copy);
#ifdef ULTRACOPIER_PLUGIN_RSYNC
void setRsync(bool rsync);
#endif
void setFolderCollision(int index);
void setFolderError(int index);
- void setTransferAlgorithm(int index);
void setCheckDestinationFolder();
+ void setMkFullPath();
+ void setChecksum();
void showFilterDialog();
void sendNewFilters(const std::vector<std::string> &includeStrings,const std::vector<std::string> &includeOptions,
const std::vector<std::string> &excludeStrings,const std::vector<std::string> &excludeOptions);
- void doChecksum_toggled(bool);
- void checksumOnlyOnError_toggled(bool);
- void osBuffer_toggled(bool);
- void osBufferLimited_toggled(bool);
- void osBufferLimit_editingFinished();
- void checksumIgnoreIfImpossible_toggled(bool);
void sendNewRenamingRules(const std::string &firstRenamingRule, const std::string &otherRenamingRule);
void showRenamingRules();
- void updateBufferCheckbox();
void setFileCollision(int index);
void setFileError(int index);
- void updatedBlockSize();
void deletePartiallyTransferredFiles(bool checked);
void renameTheOriginalDestination(bool checked);
void checkDiskSpace(bool checked);
@@ -122,10 +115,11 @@ private slots:
void followTheStrictOrder(bool checked);
void moveTheWholeFolder(bool checked);
void on_inodeThreads_editingFinished();
- void copyListOrder(bool checked);
+ void setBuffer(bool checked);
+ void setAutoStart(bool autoStart);
public slots:
- void resetOptions();
- void newLanguageLoaded();
+ void resetOptions() override;
+ void newLanguageLoaded() override;
signals:
void reloadLanguage() const;
};
diff --git a/plugins/CopyEngine/Ultracopier/Variable.h b/plugins/CopyEngine/Ultracopier-Spec/CopyEngineUltracopier-SpecVariable.h
index 3311483..247680c 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Variable.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/CopyEngineUltracopier-SpecVariable.h
@@ -8,9 +8,9 @@
//Un-comment this next line to put ultracopier plugin in debug mode
#ifndef ULTRACOPIER_NODEBUG
-#define ULTRACOPIER_PLUGIN_DEBUG
+//#define ULTRACOPIER_PLUGIN_DEBUG
//#define ULTRACOPIER_PLUGIN_DEBUG_SCHEDULER
-#define ULTRACOPIER_PLUGIN_DEBUG_WINDOW
+//#define ULTRACOPIER_PLUGIN_DEBUG_WINDOW
#define ULTRACOPIER_PLUGIN_DEBUG_WINDOW_TIMER 150
#endif
@@ -18,18 +18,18 @@
#define ULTRACOPIER_PLUGIN_MAXTIMERINTERVAL 100
#define ULTRACOPIER_PLUGIN_NUMSEMSPEEDMANAGEMENT 2
#define ULTRACOPIER_PLUGIN_MAXPARALLELTRANFER 1
-#define ULTRACOPIER_PLUGIN_MINIMALYEAR 1995
+#define ULTRACOPIER_PLUGIN_MINIMALYEAR_TIMESTAMPS 788965200//1995
#define ULTRACOPIER_PLUGIN_DEFAULT_BLOCK_SIZE 256 //in KB
#define ULTRACOPIER_PLUGIN_DEFAULT_SEQUENTIAL_NUMBER_OF_BLOCK 512
-#define ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK 4 //in KB
+#define ULTRACOPIER_PLUGIN_DEFAULT_PARALLEL_NUMBER_OF_BLOCK 128
#define ULTRACOPIER_PLUGIN_MAX_BLOCK_SIZE 16*1024 //in KB
#define ULTRACOPIER_PLUGIN_MAX_SEQUENTIAL_NUMBER_OF_BLOCK 2048
#define ULTRACOPIER_PLUGIN_MAX_PARALLEL_NUMBER_OF_BLOCK 128 //in KB
//if set, check the inode type at scanFileOrFolder, deprecated into the new algorithm and not used
#define ULTRACOPIER_PLUGIN_CHECKLISTTYPE
-
#define ULTRACOPIER_PLUGIN_SPEED_SUPPORT
+
//#define ULTRACOPIER_PLUGIN_RIGHTS
/** \brief Need be greater than 2, but greater than 20 to be efficient */
@@ -37,8 +37,6 @@
#define ULTRACOPIER_PLUGIN_TIME_UPDATE_PROGRESSION 200
#define ULTRACOPIER_PLUGIN_TIME_UPDATE_MOUNT_MS 60*1000
-//#define ULTRACOPIER_PLUGIN_SET_TIME_UNIX_WAY
-
#endif // VARIABLE_H
diff --git a/plugins/CopyEngine/Ultracopier/DebugDialog.cpp b/plugins/CopyEngine/Ultracopier-Spec/DebugDialog.cpp
index 0b3fec4..79e1088 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DebugDialog.cpp
+++ b/plugins/CopyEngine/Ultracopier-Spec/DebugDialog.cpp
@@ -4,6 +4,7 @@
#include "DebugDialog.h"
#include "ui_debugDialog.h"
+#include "CopyEngine.h"
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
@@ -12,6 +13,8 @@ DebugDialog::DebugDialog(QWidget *parent) :
ui(new Ui::debugDialog)
{
ui->setupUi(this);
+ connect(&timer,&QTimer::timeout,this,&DebugDialog::updateOnTimer);
+ timer.start(200);
}
DebugDialog::~DebugDialog()
@@ -51,4 +54,10 @@ void DebugDialog::setTransferThreadList(const std::vector<std::string> &list)
}
}
+void DebugDialog::updateOnTimer()
+{
+ ui->alreadyExistsQueue->setValue(copyEngine->alreadyExistsQueue.size());
+ ui->errorQueue->setValue(copyEngine->errorQueue.size());
+}
+
#endif
diff --git a/plugins/CopyEngine/Ultracopier/DebugDialog.h b/plugins/CopyEngine/Ultracopier-Spec/DebugDialog.h
index c84cfaa..0da388e 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DebugDialog.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/DebugDialog.h
@@ -10,11 +10,14 @@
#ifdef ULTRACOPIER_PLUGIN_DEBUG_WINDOW
#include <QWidget>
+#include <QTimer>
namespace Ui {
class debugDialog;
}
+class CopyEngine;
+
/// \brief class to the dialog to have debug information
class DebugDialog : public QWidget
{
@@ -30,8 +33,14 @@ public:
void setActiveTransfer(const int &activeTransfer);
/// \brief show many many inode is manipulated
void setInodeUsage(const int &inodeUsage);
+
+ CopyEngine *copyEngine;
private:
Ui::debugDialog *ui;
+ QTimer timer;
+
+private slots:
+ void updateOnTimer();
};
#endif // ULTRACOPIER_PLUGIN_DEBUG_WINDOW
diff --git a/plugins/CopyEngine/Ultracopier/DebugEngineMacro.h b/plugins/CopyEngine/Ultracopier-Spec/DebugEngineMacro.h
index f9b5349..f9b5349 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DebugEngineMacro.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/DebugEngineMacro.h
diff --git a/plugins/CopyEngine/Ultracopier/DiskSpace.cpp b/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.cpp
index e9b996d..e9b996d 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DiskSpace.cpp
+++ b/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.cpp
diff --git a/plugins/CopyEngine/Ultracopier/DiskSpace.h b/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.h
index 5a923ab..5a923ab 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DiskSpace.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.h
diff --git a/plugins/CopyEngine/Ultracopier/DiskSpace.ui b/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.ui
index 10b5c69..ebf380f 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DiskSpace.ui
+++ b/plugins/CopyEngine/Ultracopier-Spec/DiskSpace.ui
@@ -15,7 +15,7 @@
</property>
<property name="windowIcon">
<iconset resource="copyEngineResources.qrc">
- <normaloff>:/CopyEngine/Ultracopier/resources/remove.png</normaloff>:/CopyEngine/Ultracopier/resources/remove.png</iconset>
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/remove.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/remove.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/DriveManagement.cpp b/plugins/CopyEngine/Ultracopier-Spec/DriveManagement.cpp
new file mode 100755
index 0000000..148eabb
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/DriveManagement.cpp
@@ -0,0 +1,180 @@
+#include "DriveManagement.h"
+
+#include <QDir>
+#include <QFileInfoList>
+#include <QStorageInfo>
+
+#include "../../../cpp11addition.h"
+
+DriveManagement::DriveManagement()
+{
+ tryUpdate();
+ #ifdef Q_OS_WIN32
+ reg3=std::regex("^[a-zA-Z]:[\\\\/].*");
+ reg4=std::regex("^([a-zA-Z]:[\\\\/]).*$");
+ #endif
+ /// \warn ULTRACOPIER_DEBUGCONSOLE() don't work here because the sinal slot is not connected!
+}
+
+//get drive of an file or folder
+/// \todo do network drive support for windows
+std::string DriveManagement::getDrive(const std::string &fileOrFolder) const
+{
+ const std::string &inode=fileOrFolder;
+ Q_UNUSED(inode);
+ #ifdef Q_OS_WIN32
+ //optimized to windows version:
+ if(fileOrFolder.size()>=3)
+ {
+ if(fileOrFolder.at(1)==L':' && (fileOrFolder.at(2)==L'\\' || fileOrFolder.at(2)==L'/'))
+ {
+ char driveLetter=toupper(fileOrFolder.at(0));
+ return driveLetter+std::string(":/");
+ }
+ }
+
+ if(fileOrFolder.size()>=5)
+ {
+ char f1=fileOrFolder.at(0);
+ char f2=fileOrFolder.at(1);
+ if(f1=='/' || f1=='\\')
+ if(f2=='/' || f2=='\\')
+ {
+ bool postSeparador=false;
+ std::string post;
+ unsigned int index=2;
+ unsigned int s=2;
+ while(index<fileOrFolder.size())
+ {
+ const char c=fileOrFolder.at(index);
+ if(c=='/' || c=='\\')
+ {
+ if(postSeparador==false)
+ {
+ post="//"+fileOrFolder.substr(2,index-2);
+ postSeparador=true;
+ char c;
+ do
+ {
+ index++;
+ c=fileOrFolder.at(index);
+ } while((c=='/' || c=='\\') && index<fileOrFolder.size());
+ s=index;
+ }
+ else
+ return post+"/"+fileOrFolder.substr(s,index-s);
+ }
+ index++;
+ }
+ return post;
+ }
+ /*std::string returnString=fileOrFolder;
+ std::regex_replace(returnString,reg2,"$1");
+ return returnString;*/
+ }
+ //due to lack of WMI support into mingw, the new drive event is never called, this is a workaround
+ if(std::regex_match(fileOrFolder,reg3))
+ {
+ std::string returnString=fileOrFolder;
+ std::regex_replace(returnString,reg4,"$1");
+ return QDir::toNativeSeparators(QString::fromStdString(returnString)).toUpper().toStdString();
+ }
+ #else
+ int size=mountSysPoint.size();
+ for (int i = 0; i < size; ++i) {
+ if(stringStartWith(inode,mountSysPoint.at(i)))
+ return mountSysPoint.at(i);
+ }
+ #endif
+ //if unable to locate the right mount point
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"unable to locate the right mount point for: "+inode+", mount point: "+stringimplode(mountSysPoint,";"));
+ return std::string();
+}
+
+std::string DriveManagement::getDriveType(const std::string &drive) const
+{
+ int index=vectorindexOf(mountSysPoint,drive);
+ if(index!=-1)
+ return driveType.at(index);
+ return std::string();
+}
+
+bool DriveManagement::isSameDrive(const std::string &file1,const std::string &file2) const
+{
+ if(file1.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"file1 is empty");
+ return false;
+ }
+ if(file2.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Critical,"file2 is empty");
+ return false;
+ }
+ if(mountSysPoint.size()==0)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"no mount point found");
+ return false;
+ }
+ const std::string &drive1=getDrive(file1);
+ if(drive1.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"drive for the file1 not found: "+file1);
+ return false;
+ }
+ const std::string &drive2=getDrive(file2);
+ if(drive2.empty())
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,"drive for the file2 not found: "+file2);
+ return false;
+ }
+ if(drive1==drive2)
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,drive1+" is egal to "+drive2);
+ return true;
+ }
+ else
+ {
+ ULTRACOPIER_DEBUGCONSOLE(Ultracopier::DebugLevel_Notice,drive1+" is NOT egal to "+drive2);
+ return false;
+ }
+}
+
+void DriveManagement::tryUpdate()
+{
+ mountSysPoint.clear();
+ driveType.clear();
+ std::vector<std::pair<std::string/*mountSysPoint*/,std::string/*driveType*/> > temp;
+ const QList<QStorageInfo> mountedVolumesList=QStorageInfo::mountedVolumes();
+ int index=0;
+ while(index<mountedVolumesList.size())
+ {
+ std::string mountSysPoint=QDir::toNativeSeparators(mountedVolumesList.at(index).rootPath()).toStdString();
+ #ifdef Q_OS_WIN32
+ std::string driveType;
+ if(mountSysPoint!="A:\\" && mountSysPoint!="A:/" && mountSysPoint!="A:" && mountSysPoint!="A" &&
+ mountSysPoint!="a:\\" && mountSysPoint!="a:/" && mountSysPoint!="a:" && mountSysPoint!="a")
+ {
+ const QByteArray &data=mountedVolumesList.at(index).fileSystemType();
+ driveType=std::string(data.constData(),data.size());
+ }
+ #else
+ const QByteArray &data=mountedVolumesList.at(index).fileSystemType();
+ std::string driveType=std::string(data.constData(),data.size());
+ #endif
+ temp.push_back(std::pair<std::string/*mountSysPoint*/,std::string/*driveType*/>(mountSysPoint,driveType));
+ index++;
+ }
+ /*sort larger to small mount point, to correctly detect it: /mnt, /
+ then /mnt/folder/file will be detected as /mnt
+ then /folder/file will be detected as / */
+ std::sort(temp.begin(), temp.end(), [](
+ std::pair<std::string/*mountSysPoint*/,std::string/*driveType*/> a,
+ std::pair<std::string/*mountSysPoint*/,std::string/*driveType*/> b) {
+ return a.first.size() > b.first.size();
+ });
+ for(const std::pair<std::string/*mountSysPoint*/,std::string/*driveType*/> &a : temp) {
+ mountSysPoint.push_back(a.first);
+ driveType.push_back(a.second);
+ }
+}
diff --git a/plugins/CopyEngine/Ultracopier/DriveManagement.h b/plugins/CopyEngine/Ultracopier-Spec/DriveManagement.h
index 8013b7c..24c8af6 100644..100755
--- a/plugins/CopyEngine/Ultracopier/DriveManagement.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/DriveManagement.h
@@ -18,13 +18,13 @@ public:
bool isSameDrive(const std::string &file1, const std::string &file2) const;
/// \brief get drive of an file or folder
std::string getDrive(const std::string &fileOrFolder) const;
- QByteArray getDriveType(const std::string &drive) const;
+ std::string getDriveType(const std::string &drive) const;
void tryUpdate();
protected:
- std::vector<std::string> mountSysPoint;
- std::vector<QByteArray> driveType;
+ std::vector<std::string> mountSysPoint;
+ std::vector<std::string> driveType;
#ifdef Q_OS_WIN32
- std::regex reg1,reg2,reg3,reg4;
+ std::regex reg3,reg4;
#endif
signals:
/// \brief To debug source
diff --git a/plugins/CopyEngine/Ultracopier/Environment.h b/plugins/CopyEngine/Ultracopier-Spec/Environment.h
index 34db2a2..9cb5732 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Environment.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/Environment.h
@@ -3,7 +3,7 @@
\author alpha_one_x86
\licence GPL3, see the file COPYING */
-#include "Variable.h"
+#include "CopyEngineUltracopier-SpecVariable.h"
/// \brief The global include
#include "StructEnumDefinition.h"
#include "StructEnumDefinition_CopyEngine.h"
diff --git a/plugins/CopyEngine/Ultracopier-Spec/EventLoop.cpp b/plugins/CopyEngine/Ultracopier-Spec/EventLoop.cpp
new file mode 100755
index 0000000..c2e237a
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/EventLoop.cpp
@@ -0,0 +1,71 @@
+#include "EventLoop.h"
+#include "CallBackEventLoop.h"
+
+#ifdef ASYNCFILEMANIP
+
+#ifdef Q_OS_LINUX
+#include <sys/epoll.h>
+#include <signal.h>
+#endif
+
+EventLoop EventLoop::eventLoop;
+
+EventLoop::EventLoop()
+{
+ int efd = epoll_create1(0);
+ if(efd==-1)
+ {
+ fprintf(stderr,"%s, errno %i\n", strerror(errno), errno);
+ abort();
+ }
+ //start();->put cpu at 100%
+ stopIt=false;
+}
+
+EventLoop::~EventLoop()
+{
+ stop();
+ QThread::wait();
+}
+
+void EventLoop::stop()
+{
+ stopIt=true;
+}
+
+void EventLoop::run()
+{
+ while(!stopIt)
+ {
+ int number_of_events = epoll_wait(efd, events, MAXEVENTS, -1);
+ if (-1 == number_of_events && EINTR == errno)
+ return;
+ for(int i = 0; i < number_of_events; i++)
+ static_cast<CallBackEventLoop *>(events[i].data.ptr)->callBack();
+ }
+}
+
+void EventLoop::watchSource(CallBackEventLoop * const object,const int &fd)
+{
+ epoll_event event;
+ event.events = EPOLLIN | EPOLLPRI | EPOLLERR | EPOLLET;
+ event.data.ptr = object;
+ if(epoll_ctl(efd, EPOLL_CTL_ADD, fd, &event)!=0)
+ {
+ printf("%s, errno %i\n", strerror(errno), errno);
+ //abort();
+ }
+}
+
+void EventLoop::watchDestination(CallBackEventLoop * const object,const int &fd)
+{
+ epoll_event event;
+ event.events = EPOLLOUT | EPOLLPRI | EPOLLERR | EPOLLET;
+ event.data.ptr = object;
+ if(epoll_ctl(efd, EPOLL_CTL_ADD, fd, &event)!=0)
+ {
+ printf("%s, errno %i\n", strerror(errno), errno);
+ //abort();
+ }
+}
+#endif
diff --git a/plugins/CopyEngine/Ultracopier-Spec/EventLoop.h b/plugins/CopyEngine/Ultracopier-Spec/EventLoop.h
new file mode 100755
index 0000000..3d68ce2
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/EventLoop.h
@@ -0,0 +1,30 @@
+#ifndef EVENTLOOP_H
+#define EVENTLOOP_H
+
+#include "Variable.h"
+
+#ifdef ASYNCFILEMANIP
+#include <QThread>
+#include "CallBackEventLoop.h"
+#include <sys/epoll.h>
+#define MAXEVENTS 64
+
+class EventLoop : public QThread
+{
+public:
+ EventLoop();
+ ~EventLoop();
+ static EventLoop eventLoop;
+ void watchSource(CallBackEventLoop * const object,const int &fd);
+ void watchDestination(CallBackEventLoop * const object,const int &fd);
+protected:
+ void run();
+ void stop();
+private:
+ epoll_event events[MAXEVENTS];
+ int efd;
+ bool stopIt;
+};
+#endif
+
+#endif // EVENTLOOP_H
diff --git a/plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp b/plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp
index d88fb90..587a889 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FileErrorDialog.cpp
+++ b/plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.cpp
@@ -1,12 +1,13 @@
#include "FileErrorDialog.h"
#include "ui_fileErrorDialog.h"
#include "TransferThread.h"
+#include "../../../cpp11addition.h"
#include <QString>
bool FileErrorDialog::isInAdmin=false;
-FileErrorDialog::FileErrorDialog(QWidget *parent, QFileInfo fileInfo, std::string errorString, const ErrorType &errorType) :
+FileErrorDialog::FileErrorDialog(QWidget *parent, INTERNALTYPEPATH fileInfo, std::string errorString, const ErrorType &errorType,FacilityInterface * facilityEngine) :
QDialog(parent),
ui(new Ui::fileErrorDialog)
{
@@ -20,58 +21,103 @@ FileErrorDialog::FileErrorDialog(QWidget *parent, QFileInfo fileInfo, std::strin
ui->setupUi(this);
action=FileError_Cancel;
ui->label_error->setText(QString::fromStdString(errorString));
- if(fileInfo.exists())
+#ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA fileInfoW;
+ if(GetFileAttributesExW(fileInfo.c_str(),GetFileExInfoStandard,&fileInfoW))
{
- ui->label_content_file_name->setText(QString::fromStdString(TransferThread::resolvedName(fileInfo)));
+ uint64_t mdate=fileInfoW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=fileInfoW.ftLastWriteTime.dwLowDateTime;
+ uint64_t size=fileInfoW.nFileSizeHigh;
+ size<<=32;
+ size|=fileInfoW.nFileSizeLow;
+#else
+ struct stat p_statbuf;
+ if(stat(TransferThread::internalStringTostring(fileInfo).c_str(), &p_statbuf)==0)
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ uint64_t mdate=p_statbuf.st_mtimespec.tv_sec;
+ #else
+ uint64_t mdate=*reinterpret_cast<int64_t*>(&p_statbuf.st_mtim);
+ #endif
+ #else
+ uint64_t mdate=*reinterpret_cast<int64_t*>(&p_statbuf.st_mtime);
+ #endif
+ const uint64_t size=p_statbuf.st_size;
+#endif
+ ui->label_content_file_name->setText(
+ QString::fromStdString(
+ TransferThread::resolvedName(
+ TransferThread::internalStringTostring(fileInfo)
+ )
+ )
+ );
if(ui->label_content_file_name->text().isEmpty())
{
- ui->label_content_file_name->setText(fileInfo.absoluteFilePath());
+ ui->label_content_file_name->setText(QString::fromStdString(TransferThread::internalStringTostring(fileInfo)));
ui->label_folder->setVisible(false);
ui->label_content_folder->setVisible(false);
}
else
{
- QString folder=fileInfo.absolutePath();
+ std::string folder=TransferThread::internalStringTostring(fileInfo);
if(folder.size()>80)
- folder=folder.mid(0,38)+"..."+folder.mid(folder.size()-38);
- ui->label_content_folder->setText(fileInfo.absolutePath());
+ folder=folder.substr(0,38)+"..."+folder.substr(folder.size()-38);
+ ui->label_content_folder->setText(QString::fromStdString(FSabsolutePath(TransferThread::internalStringTostring(fileInfo))));
}
- ui->label_content_size->setText(QString::number(fileInfo.size()));
- QDateTime maxTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1));
- if(maxTime<fileInfo.lastModified())
+ ui->label_content_size->setText(QString::fromStdString(facilityEngine->sizeToString(size)));
+ if(ULTRACOPIER_PLUGIN_MINIMALYEAR_TIMESTAMPS<mdate)
{
ui->label_modified->setVisible(true);
ui->label_content_modified->setVisible(true);
- ui->label_content_modified->setText(fileInfo.lastModified().toString());
+ ui->label_content_modified->setText(QDateTime::fromMSecsSinceEpoch(mdate*1000).toString());
}
else
{
ui->label_modified->setVisible(false);
ui->label_content_modified->setVisible(false);
}
- if(fileInfo.isDir())
+ #ifdef Q_OS_WIN32
+ if(fileInfoW.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
+ #else
+ if(S_ISDIR(p_statbuf.st_mode))
+ #endif
{
this->setWindowTitle(tr("Error on folder"));
ui->label_size->hide();
ui->label_content_size->hide();
ui->label_file_name->setText(tr("Folder name"));
}
- ui->label_file_destination->setVisible(fileInfo.isSymLink());
- ui->label_content_file_destination->setVisible(fileInfo.isSymLink());
- if(fileInfo.isSymLink())
- ui->label_content_file_destination->setText(fileInfo.symLinkTarget());
+ #ifdef Q_OS_UNIX
+ ui->label_file_destination->setVisible(p_statbuf.st_mode==S_IFLNK);
+ ui->label_content_file_destination->setVisible(p_statbuf.st_mode==S_IFLNK);
+ if(S_ISLNK(p_statbuf.st_mode))
+ {
+ char buf[1024];
+ ssize_t len;
+ if ((len = readlink(TransferThread::internalStringTostring(fileInfo).c_str(), buf, sizeof(buf)-1)) != -1)
+ {
+ buf[len] = '\0';
+ ui->label_content_file_destination->setText(buf);
+ }
+ }
+ #else
+ ui->label_file_destination->setVisible(false);
+ ui->label_content_file_destination->setVisible(false);
+ #endif
}
else
{
- ui->label_content_file_name->setText(QString::fromStdString(TransferThread::resolvedName(fileInfo)));
+ ui->label_content_file_name->setText(QString::fromStdString(TransferThread::resolvedName(TransferThread::internalStringTostring(fileInfo))));
if(ui->label_content_file_name->text().isEmpty())
{
- ui->label_content_file_name->setText(fileInfo.absoluteFilePath());
+ ui->label_content_file_name->setText(QString::fromStdString(TransferThread::internalStringTostring(fileInfo)));
ui->label_folder->setVisible(false);
ui->label_content_folder->setVisible(false);
}
else
- ui->label_content_folder->setText(fileInfo.absolutePath());
+ ui->label_content_folder->setText(QString::fromStdString(FSabsolutePath(TransferThread::internalStringTostring(fileInfo))));
ui->label_file_destination->hide();
ui->label_content_file_destination->hide();
diff --git a/plugins/CopyEngine/Ultracopier/FileErrorDialog.h b/plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.h
index 133a8b0..635eebc 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FileErrorDialog.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/FileErrorDialog.h
@@ -7,13 +7,18 @@
#include <QWidget>
#include <QString>
#include <QDateTime>
-#include <QFileInfo>
+#include <string>
#include "Environment.h"
+#include "../../../interface/FacilityInterface.h"
#ifndef FILEERRORDIALOG_H
#define FILEERRORDIALOG_H
-
+#ifdef WIDESTRING
+#define INTERNALTYPEPATH std::wstring
+#else
+#define INTERNALTYPEPATH std::string
+#endif
namespace Ui {
class fileErrorDialog;
@@ -25,7 +30,7 @@ class FileErrorDialog : public QDialog
Q_OBJECT
public:
/// \brief create the object and pass all the informations to it
- explicit FileErrorDialog(QWidget *parent,QFileInfo fileInfo,std::string errorString,const ErrorType &errorType);
+ explicit FileErrorDialog(QWidget *parent, INTERNALTYPEPATH fileInfo, std::string errorString, const ErrorType &errorType, FacilityInterface *facilityEngine);
~FileErrorDialog();
/// \brief return the the always checkbox is checked
bool getAlways();
diff --git a/plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp b/plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp
index 10b8543..e0d841e 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FileExistsDialog.cpp
+++ b/plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.cpp
@@ -1,6 +1,7 @@
#include "FileExistsDialog.h"
#include "ui_fileExistsDialog.h"
#include "TransferThread.h"
+#include "../../../cpp11addition.h"
#ifdef Q_OS_WIN32
#define CURRENTSEPARATOR "\\"
@@ -8,11 +9,11 @@
#define CURRENTSEPARATOR "/"
#endif
-#include <QRegularExpression>
-#include <QFileInfo>
#include <QMessageBox>
-FileExistsDialog::FileExistsDialog(QWidget *parent, QFileInfo source, QFileInfo destination, std::string firstRenamingRule, std::string otherRenamingRule) :
+FileExistsDialog::FileExistsDialog(QWidget *parent, INTERNALTYPEPATH source,
+ INTERNALTYPEPATH destination, std::string firstRenamingRule,
+ std::string otherRenamingRule,FacilityInterface * facilityEngine) :
QDialog(parent),
ui(new Ui::fileExistsDialog)
{
@@ -25,58 +26,111 @@ FileExistsDialog::FileExistsDialog(QWidget *parent, QFileInfo source, QFileInfo
ui->setupUi(this);
action=FileExists_Cancel;
- destinationInfo=destination;
- oldName=TransferThread::resolvedName(destination);
+ destinationInfo=TransferThread::internalStringTostring(destination);
+ oldName=TransferThread::resolvedName(TransferThread::internalStringTostring(destination));
ui->lineEditNewName->setText(QString::fromStdString(oldName));
ui->lineEditNewName->setPlaceholderText(QString::fromStdString(oldName));
+
ui->Overwrite->addAction(ui->actionOverwrite_if_newer);
+ ui->Overwrite->addAction(ui->actionOverwrite_if_older);
ui->Overwrite->addAction(ui->actionOverwrite_if_not_same_modification_date);
- ui->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(QString::fromStdString(TransferThread::resolvedName(source)));
- QString folder=source.absolutePath();
+ ui->Overwrite->addAction(ui->actionOverwrite_if_not_same_size);
+ ui->Overwrite->addAction(ui->actionOverwrite_if_not_same_size_and_date);
+
+ ui->label_content_source_file_name->setText(QString::fromStdString(TransferThread::resolvedName(TransferThread::internalStringTostring(source))));
+ std::string folder=TransferThread::internalStringTostring(FSabsolutePath(source));
if(folder.size()>80)
- folder=folder.mid(0,38)+"..."+folder.mid(folder.size()-38);
- ui->label_content_source_folder->setText(folder);
- 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(QString::fromStdString(TransferThread::resolvedName(destination)));
- folder=destination.absolutePath();
+ folder=folder.substr(0,38)+"..."+folder.substr(folder.size()-38);
+ ui->label_content_source_folder->setText(QString::fromStdString(folder));
+ ui->label_content_destination_file_name->setText(QString::fromStdString(TransferThread::resolvedName(TransferThread::internalStringTostring(destination))));
+ folder=TransferThread::internalStringTostring(FSabsolutePath(destination));
if(folder.size()>80)
- folder=folder.mid(0,38)+"..."+folder.mid(folder.size()-38);
- ui->label_content_destination_folder->setText(folder);
- QDateTime maxTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1));
- if(maxTime<source.lastModified())
+ folder=folder.substr(0,38)+"..."+folder.substr(folder.size()-38);
+ ui->label_content_destination_folder->setText(QString::fromStdString(folder));
+ //QDateTime maxTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1));
+#ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA sourceW;
+ if(GetFileAttributesExW(source.c_str(),GetFileExInfoStandard,&sourceW))
+ {
+ uint64_t mdate=sourceW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=sourceW.ftLastWriteTime.dwLowDateTime;
+ uint64_t size=sourceW.nFileSizeHigh;
+ size<<=32;
+ size|=sourceW.nFileSizeLow;
+#else
+ struct stat source_statbuf;
+ #ifdef Q_OS_UNIX
+ if(lstat(TransferThread::internalStringTostring(source).c_str(), &source_statbuf)==0)
+ #else
+ if(stat(TransferThread::internalStringTostring(source).c_str(), &source_statbuf)==0)
+ #endif
{
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ const uint64_t mdate=source_statbuf.st_mtimespec.tv_sec;
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtim);
+ #endif
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtime);
+ #endif
+ const uint64_t size=source_statbuf.st_size;
+#endif
ui->label_source_modified->setVisible(true);
+ ui->label_content_source_size->setVisible(true);
+ ui->label_content_source_size->setText(QString::fromStdString(facilityEngine->sizeToString(size)));
ui->label_content_source_modified->setVisible(true);
- ui->label_content_source_modified->setText(source.lastModified().toString());
+ ui->label_content_source_modified->setText(QDateTime::fromMSecsSinceEpoch(mdate*1000).toString());
}
else
{
+ ui->label_content_source_size->setVisible(false);
+ ui->label_source_size->setVisible(false);
+ ui->label_source_modified->setVisible(false);
+ ui->label_content_source_modified->setVisible(false);
ui->label_source_modified->setVisible(false);
ui->label_content_source_modified->setVisible(false);
}
- if(maxTime<destination.lastModified())
+#ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA destinationW;
+ if(GetFileAttributesExW(destination.c_str(),GetFileExInfoStandard,&destinationW))
{
+ uint64_t mdate=destinationW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=destinationW.ftLastWriteTime.dwLowDateTime;
+ uint64_t size=destinationW.nFileSizeHigh;
+ size<<=32;
+ size|=destinationW.nFileSizeLow;
+#else
+ struct stat destination_statbuf;
+ #ifdef Q_OS_UNIX
+ if(lstat(TransferThread::internalStringTostring(destination).c_str(), &destination_statbuf)==0)
+ #else
+ if(stat(TransferThread::internalStringTostring(destination).c_str(), &destination_statbuf)==0)
+ #endif
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ const uint64_t mdate=destination_statbuf.st_mtimespec.tv_sec;
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&destination_statbuf.st_mtim);
+ #endif
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&destination_statbuf.st_mtime);
+ #endif
+ const uint64_t size=destination_statbuf.st_size;
+#endif
ui->label_destination_modified->setVisible(true);
+ ui->label_content_destination_size->setVisible(true);
+ ui->label_content_destination_size->setText(QString::fromStdString(facilityEngine->sizeToString(size)));
ui->label_content_destination_modified->setVisible(true);
- ui->label_content_destination_modified->setText(destination.lastModified().toString());
+ ui->label_content_destination_modified->setText(QDateTime::fromMSecsSinceEpoch(mdate*1000).toString());
}
else
{
ui->label_destination_modified->setVisible(false);
ui->label_content_destination_modified->setVisible(false);
- }
- if(!source.exists())
- {
- ui->label_content_source_size->setVisible(false);
- ui->label_source_size->setVisible(false);
- ui->label_source_modified->setVisible(false);
- ui->label_content_source_modified->setVisible(false);
- }
- if(!destination.exists())
- {
ui->label_content_destination_size->setVisible(false);
ui->label_destination_size->setVisible(false);
ui->label_destination_modified->setVisible(false);
@@ -114,8 +168,8 @@ std::string FileExistsDialog::getNewName()
void FileExistsDialog::on_SuggestNewName_clicked()
{
- QFileInfo destinationInfo=this->destinationInfo;
- QString absolutePath=destinationInfo.absolutePath();
+ std::string destinationInfo=this->destinationInfo;
+ QString absolutePath=QString::fromStdString(FSabsolutePath(destinationInfo));
QString fileName=QString::fromStdString(TransferThread::resolvedName(destinationInfo));
QString suffix="";
QString destination;
@@ -148,11 +202,18 @@ void FileExistsDialog::on_SuggestNewName_clicked()
}
newFileName.replace(QStringLiteral("%name%"),fileName);
newFileName.replace(QStringLiteral("%suffix%"),suffix);
- destination=absolutePath+CURRENTSEPARATOR+newFileName;
- destinationInfo.setFile(destination);
+ destination=absolutePath;
+ if(!destination.endsWith('/')
+ #ifdef Q_OS_WIN32
+ && !destination.endsWith('\\')
+ #endif
+ )
+ destination+=CURRENTSEPARATOR;
+ destination+=newFileName;
+ destinationInfo=destination.toStdString();
num++;
}
- while(destinationInfo.exists());
+ while(TransferThread::exists(destinationInfo.c_str()));
ui->lineEditNewName->setText(newFileName);
}
@@ -188,7 +249,7 @@ void FileExistsDialog::on_actionOverwrite_if_newer_triggered()
void FileExistsDialog::on_actionOverwrite_if_not_same_modification_date_triggered()
{
- action=FileExists_OverwriteIfNotSame;
+ action=FileExists_OverwriteIfNotSameMdate;
this->close();
}
@@ -238,3 +299,15 @@ void FileExistsDialog::on_lineEditNewName_editingFinished()
{
updateRenameButton();
}
+
+void FileExistsDialog::on_actionOverwrite_if_not_same_size_triggered()
+{
+ action=FileExists_OverwriteIfNotSameSize;
+ this->close();
+}
+
+void FileExistsDialog::on_actionOverwrite_if_not_same_size_and_date_triggered()
+{
+ action=FileExists_OverwriteIfNotSameSizeAndDate;
+ this->close();
+}
diff --git a/plugins/CopyEngine/Ultracopier/FileExistsDialog.h b/plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.h
index 05ff7e0..ae3e02b 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FileExistsDialog.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/FileExistsDialog.h
@@ -7,13 +7,19 @@
#include <QWidget>
#include <QString>
#include <QDateTime>
-#include <QFileInfo>
-#include <QDir>
+#include <string>
#include "Environment.h"
+#include "../../../interface/FacilityInterface.h"
#ifndef FILEEXISTSDIALOG_H
#define FILEEXISTSDIALOG_H
+#ifdef WIDESTRING
+#define INTERNALTYPEPATH std::wstring
+#else
+#define INTERNALTYPEPATH std::string
+#endif
+
namespace Ui {
class fileExistsDialog;
}
@@ -24,7 +30,7 @@ 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,std::string firstRenamingRule,std::string otherRenamingRule);
+ explicit FileExistsDialog(QWidget *parent, INTERNALTYPEPATH source, INTERNALTYPEPATH destination, std::string firstRenamingRule, std::string otherRenamingRule, FacilityInterface *facilityEngine);
~FileExistsDialog();
/// \brief return the the always checkbox is checked
bool getAlways();
@@ -48,11 +54,13 @@ private slots:
void on_lineEditNewName_returnPressed();
void on_actionOverwrite_if_older_triggered();
void on_lineEditNewName_editingFinished();
+ void on_actionOverwrite_if_not_same_size_triggered();
+ void on_actionOverwrite_if_not_same_size_and_date_triggered();
private:
Ui::fileExistsDialog *ui;
FileExistsAction action;
std::string oldName;
- QFileInfo destinationInfo;
+ std::string destinationInfo;
std::string firstRenamingRule;
std::string otherRenamingRule;
};
diff --git a/plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp b/plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp
index 7683d1d..69d63d0 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FileIsSameDialog.cpp
+++ b/plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.cpp
@@ -1,6 +1,7 @@
#include "FileIsSameDialog.h"
#include "ui_fileIsSameDialog.h"
#include "TransferThread.h"
+#include "../../../cpp11addition.h"
#ifdef Q_OS_WIN32
#define CURRENTSEPARATOR "\\"
@@ -8,11 +9,10 @@
#define CURRENTSEPARATOR "/"
#endif
-#include <QRegularExpression>
-#include <QFileInfo>
#include <QMessageBox>
-FileIsSameDialog::FileIsSameDialog(QWidget *parent, QFileInfo fileInfo, std::string firstRenamingRule, std::string otherRenamingRule) :
+FileIsSameDialog::FileIsSameDialog(QWidget *parent, INTERNALTYPEPATH fileInfo,
+ std::string firstRenamingRule, std::string otherRenamingRule,FacilityInterface * facilityEngine) :
QDialog(parent),
ui(new Ui::fileIsSameDialog)
{
@@ -25,31 +25,60 @@ FileIsSameDialog::FileIsSameDialog(QWidget *parent, QFileInfo fileInfo, std::str
ui->setupUi(this);
action=FileExists_Cancel;
- oldName=TransferThread::resolvedName(fileInfo);
- destinationInfo=fileInfo;
+ oldName=TransferThread::resolvedName(TransferThread::internalStringTostring(fileInfo));
+ destinationInfo=TransferThread::internalStringTostring(fileInfo);
ui->lineEditNewName->setText(QString::fromStdString(oldName));
ui->lineEditNewName->setPlaceholderText(QString::fromStdString(oldName));
- ui->label_content_size->setText(QString::number(fileInfo.size()));
- ui->label_content_modified->setText(fileInfo.lastModified().toString());
- ui->label_content_file_name->setText(QString::fromStdString(TransferThread::resolvedName(fileInfo)));
- QString folder=fileInfo.absolutePath();
+ ui->label_content_file_name->setText(QString::fromStdString(TransferThread::resolvedName(TransferThread::internalStringTostring(fileInfo))));
+ std::string folder=FSabsolutePath(TransferThread::internalStringTostring(fileInfo));
if(folder.size()>80)
- folder=folder.mid(0,38)+"..."+folder.mid(folder.size()-38);
- ui->label_content_folder->setText(folder);
+ folder=folder.substr(0,38)+"..."+folder.substr(folder.size()-38);
+ ui->label_content_folder->setText(QString::fromStdString(folder));
updateRenameButton();
- QDateTime maxTime(QDate(ULTRACOPIER_PLUGIN_MINIMALYEAR,1,1));
- if(maxTime<fileInfo.lastModified())
+#ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA fileInfoW;
+ if(GetFileAttributesExW(fileInfo.c_str(),GetFileExInfoStandard,&fileInfoW))
{
- ui->label_modified->setVisible(true);
- ui->label_content_modified->setVisible(true);
- ui->label_content_modified->setText(fileInfo.lastModified().toString());
- }
- else
+ uint64_t mdate=fileInfoW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=fileInfoW.ftLastWriteTime.dwLowDateTime;
+ uint64_t size=fileInfoW.nFileSizeHigh;
+ size<<=32;
+ size|=fileInfoW.nFileSizeLow;
+#else
+ struct stat source_statbuf;
+ #ifdef Q_OS_UNIX
+ if(lstat(TransferThread::internalStringTostring(fileInfo).c_str(), &source_statbuf)==0)
+ #else
+ if(stat(TransferThread::internalStringTostring(fileInfo).c_str(), &source_statbuf)==0)
+ #endif
{
- ui->label_modified->setVisible(false);
- ui->label_content_modified->setVisible(false);
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ const uint64_t mdate=source_statbuf.st_mtimespec.tv_sec;
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtim);
+ #endif
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtime);
+ #endif
+ const uint64_t size=source_statbuf.st_size;
+#endif
+ ui->label_content_size->setText(QString::fromStdString(facilityEngine->sizeToString(size)));
+ ui->label_content_size->setVisible(true);
+ if(ULTRACOPIER_PLUGIN_MINIMALYEAR_TIMESTAMPS<mdate)
+ {
+ ui->label_modified->setVisible(true);
+ ui->label_content_modified->setVisible(true);
+ ui->label_content_modified->setText(QDateTime::fromMSecsSinceEpoch(mdate*1000).toString());
+ }
+ else
+ {
+ ui->label_modified->setVisible(false);
+ ui->label_content_modified->setVisible(false);
+ }
}
- if(!fileInfo.exists())
+ else
{
ui->label_content_size->setVisible(false);
ui->label_size->setVisible(false);
@@ -88,8 +117,8 @@ std::string FileIsSameDialog::getNewName()
void FileIsSameDialog::on_SuggestNewName_clicked()
{
- QFileInfo destinationInfo=this->destinationInfo;
- QString absolutePath=destinationInfo.absolutePath();
+ std::string destinationInfo=this->destinationInfo;
+ QString absolutePath=QString::fromStdString(FSabsolutePath(destinationInfo));
QString fileName=QString::fromStdString(TransferThread::resolvedName(destinationInfo));
QString suffix="";
QString destination;
@@ -108,25 +137,32 @@ void FileIsSameDialog::on_SuggestNewName_clicked()
if(num==1)
{
if(firstRenamingRule.empty())
- newFileName=tr("%name% - copy");
+ newFileName=tr("%name% - copy%suffix%");
else
newFileName=QString::fromStdString(firstRenamingRule);
}
else
{
if(otherRenamingRule.empty())
- newFileName=tr("%name% - copy (%number%)");
+ newFileName=tr("%name% - copy (%number%)%suffix%");
else
newFileName=QString::fromStdString(otherRenamingRule);
newFileName.replace(QStringLiteral("%number%"),QString::number(num));
}
newFileName.replace(QStringLiteral("%name%"),fileName);
newFileName.replace(QStringLiteral("%suffix%"),suffix);
- destination=absolutePath+CURRENTSEPARATOR+newFileName+suffix;
- destinationInfo.setFile(destination);
+ destination=absolutePath;
+ if(!destination.endsWith('/')
+ #ifdef Q_OS_WIN32
+ && !destination.endsWith('\\')
+ #endif
+ )
+ destination+=CURRENTSEPARATOR;
+ destination+=newFileName;
+ destinationInfo=destination.toStdString();
num++;
}
- while(destinationInfo.exists());
+ while(TransferThread::exists(destinationInfo.c_str()));
ui->lineEditNewName->setText(newFileName);
}
diff --git a/plugins/CopyEngine/Ultracopier/FileIsSameDialog.h b/plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.h
index 5dc0067..25a43b9 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FileIsSameDialog.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/FileIsSameDialog.h
@@ -7,13 +7,19 @@
#include <QWidget>
#include <QString>
#include <QDateTime>
-#include <QFileInfo>
-#include <QDir>
+#include <string>
#include "Environment.h"
+#include "../../../interface/FacilityInterface.h"
#ifndef FILEISSAMEDIALOG_H
#define FILEISSAMEDIALOG_H
+#ifdef WIDESTRING
+#define INTERNALTYPEPATH std::wstring
+#else
+#define INTERNALTYPEPATH std::string
+#endif
+
namespace Ui {
class fileIsSameDialog;
}
@@ -24,7 +30,7 @@ class FileIsSameDialog : public QDialog
Q_OBJECT
public:
/// \brief create the object and pass all the informations to it
- explicit FileIsSameDialog(QWidget *parent,QFileInfo fileInfo,std::string firstRenamingRule,std::string otherRenamingRule);
+ explicit FileIsSameDialog(QWidget *parent, INTERNALTYPEPATH fileInfo, std::string firstRenamingRule, std::string otherRenamingRule, FacilityInterface *facilityEngine);
~FileIsSameDialog();
/// \brief return the the always checkbox is checked
bool getAlways();
@@ -48,7 +54,7 @@ private:
Ui::fileIsSameDialog *ui;
FileExistsAction action;
std::string oldName;
- QFileInfo destinationInfo;
+ std::string destinationInfo;
std::string firstRenamingRule;
std::string otherRenamingRule;
diff --git a/plugins/CopyEngine/Ultracopier/FilterRules.cpp b/plugins/CopyEngine/Ultracopier-Spec/FilterRules.cpp
index 0f6bf2c..965f5f3 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FilterRules.cpp
+++ b/plugins/CopyEngine/Ultracopier-Spec/FilterRules.cpp
@@ -47,9 +47,9 @@ ApplyOn FilterRules::get_apply_on()
{
case 0:
return ApplyOn_file;
- case 1:
- return ApplyOn_fileAndFolder;
case 2:
+ return ApplyOn_fileAndFolder;
+ case 1:
return ApplyOn_folder;
}
return ApplyOn_fileAndFolder;
@@ -89,10 +89,10 @@ void FilterRules::set_apply_on(ApplyOn apply_on)
ui->apply_on->setCurrentIndex(0);
break;
case ApplyOn_fileAndFolder:
- ui->apply_on->setCurrentIndex(1);
+ ui->apply_on->setCurrentIndex(2);
break;
case ApplyOn_folder:
- ui->apply_on->setCurrentIndex(2);
+ ui->apply_on->setCurrentIndex(1);
break;
}
}
@@ -117,7 +117,7 @@ void FilterRules::updateChecking()
QString tempString;
if(ui->search_type->currentIndex()==0)
{
- tempString=QRegularExpression::escape(ui->search->text());
+ //tempString=QRegularExpression::escape(ui->search->text()); -> generate bug because escape contains slash
if(tempString.contains('/') || tempString.contains('\\'))
isValid=false;
}
@@ -191,3 +191,9 @@ void FilterRules::on_buttonBox_clicked(QAbstractButton *button)
accept();
}
}
+
+void FilterRules::on_search_textChanged(const QString &arg1)
+{
+ Q_UNUSED(arg1);
+ updateChecking();
+}
diff --git a/plugins/CopyEngine/Ultracopier/FilterRules.h b/plugins/CopyEngine/Ultracopier-Spec/FilterRules.h
index 0838792..e57ea97 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FilterRules.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/FilterRules.h
@@ -36,6 +36,7 @@ private slots:
void on_search_type_currentIndexChanged(int index);
void on_need_match_all_clicked();
void on_buttonBox_clicked(QAbstractButton *button);
+ void on_search_textChanged(const QString &arg1);
private:
Ui::FilterRules *ui;
void updateChecking();
diff --git a/plugins/CopyEngine/Ultracopier/FilterRules.ui b/plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui
index a4006fe..a4006fe 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FilterRules.ui
+++ b/plugins/CopyEngine/Ultracopier-Spec/FilterRules.ui
diff --git a/plugins/CopyEngine/Ultracopier/Filters.cpp b/plugins/CopyEngine/Ultracopier-Spec/Filters.cpp
index c7b1526..214896c 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Filters.cpp
+++ b/plugins/CopyEngine/Ultracopier-Spec/Filters.cpp
@@ -16,10 +16,10 @@ Filters::~Filters()
delete ui;
}
-void Filters::setFilters(std::vector<std::string> includeStrings,std::vector<std::string> includeOptions,std::vector<std::string> excludeStrings,std::vector<std::string> excludeOptions)
+bool Filters::setFilters(std::vector<std::string> includeStrings,std::vector<std::string> includeOptions,std::vector<std::string> excludeStrings,std::vector<std::string> excludeOptions)
{
if(includeStrings.size()!=includeOptions.size() || excludeStrings.size()!=excludeOptions.size())
- return;
+ return false;
Filters_rules new_item;
include.clear();
@@ -77,6 +77,7 @@ void Filters::setFilters(std::vector<std::string> includeStrings,std::vector<std
}
reShowAll();
+ return true;
}
void Filters::reShowAll()
@@ -269,9 +270,12 @@ bool Filters::convertToRegex(Filters_rules &item)
std::string tempString;
if(item.search_type==SearchType_rawText)
{
+ //here to validate below the regex
tempString=QRegularExpression::escape(QString::fromStdString(item.search_text)).toStdString();
- if(tempString.find('/') != std::string::npos || tempString.find('\\') != std::string::npos)
- isValid=false;
+ //do search on string only on file or file and folder, QRegularExpression::escape() introduce \ on special char
+ if(item.apply_on!=ApplyOn::ApplyOn_folder)
+ if(item.search_text.find('/') != std::string::npos || item.search_text.find('\\') != std::string::npos)
+ isValid=false;
}
else if(item.search_type==SearchType_simpleRegex)
{
diff --git a/plugins/CopyEngine/Ultracopier/Filters.h b/plugins/CopyEngine/Ultracopier-Spec/Filters.h
index 6645afc..60e2277 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Filters.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/Filters.h
@@ -18,7 +18,7 @@ class Filters : public QDialog
public:
explicit Filters(QWidget *parent = 0);
~Filters();
- void setFilters(std::vector<std::string> includeStrings, std::vector<std::string> includeOptions, std::vector<std::string> excludeStrings, std::vector<std::string> excludeOptions);
+ bool setFilters(std::vector<std::string> includeStrings, std::vector<std::string> includeOptions, std::vector<std::string> excludeStrings, std::vector<std::string> excludeOptions);
void reShowAll();
std::vector<Filters_rules> getInclude() const;
std::vector<Filters_rules> getExclude() const;
diff --git a/plugins/CopyEngine/Ultracopier/Filters.ui b/plugins/CopyEngine/Ultracopier-Spec/Filters.ui
index 33822af..ed6a0a2 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Filters.ui
+++ b/plugins/CopyEngine/Ultracopier-Spec/Filters.ui
@@ -14,14 +14,23 @@
<string>Filters</string>
</property>
<property name="windowIcon">
- <iconset resource="resources.qrc">
- <normaloff>:/CopyEngine/Ultracopier/resources/filter.png</normaloff>:/CopyEngine/Ultracopier/resources/filter.png</iconset>
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/filter.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/filter.png</iconset>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>1</number>
</property>
- <property name="margin">
+ <property name="leftMargin">
+ <number>1</number>
+ </property>
+ <property name="topMargin">
+ <number>1</number>
+ </property>
+ <property name="rightMargin">
+ <number>1</number>
+ </property>
+ <property name="bottomMargin">
<number>1</number>
</property>
<item>
@@ -33,7 +42,16 @@
<property name="spacing">
<number>1</number>
</property>
- <property name="margin">
+ <property name="leftMargin">
+ <number>2</number>
+ </property>
+ <property name="topMargin">
+ <number>2</number>
+ </property>
+ <property name="rightMargin">
+ <number>2</number>
+ </property>
+ <property name="bottomMargin">
<number>2</number>
</property>
<item>
@@ -48,24 +66,24 @@
<item>
<widget class="QToolButton" name="add_exclusion">
<property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/CopyEngine/Ultracopier/resources/add.png</normaloff>:/CopyEngine/Ultracopier/resources/add.png</iconset>
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/add.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/add.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="edit_exclusion">
<property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/CopyEngine/Ultracopier/resources/edit.png</normaloff>:/CopyEngine/Ultracopier/resources/edit.png</iconset>
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/edit.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/edit.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="remove_exclusion">
<property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/CopyEngine/Ultracopier/resources/remove.png</normaloff>:/CopyEngine/Ultracopier/resources/remove.png</iconset>
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/remove.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/remove.png</iconset>
</property>
</widget>
</item>
@@ -96,7 +114,16 @@
<property name="spacing">
<number>1</number>
</property>
- <property name="margin">
+ <property name="leftMargin">
+ <number>2</number>
+ </property>
+ <property name="topMargin">
+ <number>2</number>
+ </property>
+ <property name="rightMargin">
+ <number>2</number>
+ </property>
+ <property name="bottomMargin">
<number>2</number>
</property>
<item>
@@ -120,24 +147,24 @@
<item>
<widget class="QToolButton" name="add_inclusion">
<property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/CopyEngine/Ultracopier/resources/add.png</normaloff>:/CopyEngine/Ultracopier/resources/add.png</iconset>
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/add.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/add.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="edit_inclusion">
<property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/CopyEngine/Ultracopier/resources/edit.png</normaloff>:/CopyEngine/Ultracopier/resources/edit.png</iconset>
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/edit.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/edit.png</iconset>
</property>
</widget>
</item>
<item>
<widget class="QToolButton" name="remove_inclusion">
<property name="icon">
- <iconset resource="resources.qrc">
- <normaloff>:/CopyEngine/Ultracopier/resources/remove.png</normaloff>:/CopyEngine/Ultracopier/resources/remove.png</iconset>
+ <iconset resource="copyEngineResources.qrc">
+ <normaloff>:/CopyEngine/Ultracopier-Spec/resources/remove.png</normaloff>:/CopyEngine/Ultracopier-Spec/resources/remove.png</iconset>
</property>
</widget>
</item>
@@ -188,7 +215,7 @@
</layout>
</widget>
<resources>
- <include location="resources.qrc"/>
+ <include location="copyEngineResources.qrc"/>
</resources>
<connections/>
</ui>
diff --git a/plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp b/plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp
index 59466ed..f37acd1 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FolderExistsDialog.cpp
+++ b/plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.cpp
@@ -1,6 +1,7 @@
#include "FolderExistsDialog.h"
#include "ui_folderExistsDialog.h"
#include "TransferThread.h"
+#include "../../../cpp11addition.h"
#ifdef Q_OS_WIN32
#define CURRENTSEPARATOR "\\"
@@ -9,10 +10,9 @@
#endif
#include <QMessageBox>
-#include <QFileInfo>
-#include <QMessageBox>
-FolderExistsDialog::FolderExistsDialog(QWidget *parent, QFileInfo source, bool isSame, QFileInfo destination, std::string firstRenamingRule, std::string otherRenamingRule) :
+FolderExistsDialog::FolderExistsDialog(QWidget *parent, INTERNALTYPEPATH source, bool isSame, INTERNALTYPEPATH destination,
+ std::string firstRenamingRule, std::string otherRenamingRule) :
QDialog(parent),
ui(new Ui::folderExistsDialog)
{
@@ -25,15 +25,42 @@ FolderExistsDialog::FolderExistsDialog(QWidget *parent, QFileInfo source, bool i
ui->setupUi(this);
action=FolderExists_Cancel;
- oldName=TransferThread::resolvedName(destination);
+ oldName=TransferThread::resolvedName(TransferThread::internalStringTostring(destination));
ui->lineEditNewName->setText(QString::fromStdString(oldName));
ui->lineEditNewName->setPlaceholderText(QString::fromStdString(oldName));
- ui->label_content_source_modified->setText(source.lastModified().toString());
- ui->label_content_source_folder_name->setText(source.fileName());
- QString folder=source.absolutePath();
+#ifdef Q_OS_WIN32
+ WIN32_FILE_ATTRIBUTE_DATA fileInfoW;
+ if(GetFileAttributesExW(source.c_str(),GetFileExInfoStandard,&fileInfoW))
+ {
+ uint64_t mdate=fileInfoW.ftLastWriteTime.dwHighDateTime;
+ mdate<<=32;
+ mdate|=fileInfoW.ftLastWriteTime.dwLowDateTime;
+ uint64_t size=fileInfoW.nFileSizeHigh;
+ size<<=32;
+ size|=fileInfoW.nFileSizeLow;
+#else
+ struct stat source_statbuf;
+ if(TransferThread::exists(source))
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ const uint64_t mdate=source_statbuf.st_mtimespec.tv_sec;
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtim);
+ #endif
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&source_statbuf.st_mtime);
+ #endif
+#endif
+ ui->label_content_source_modified->setText(QDateTime::fromMSecsSinceEpoch(mdate*1000).toString());
+ }
+ else
+ ui->label_content_source_modified->hide();
+ ui->label_content_source_folder_name->setText(QString::fromStdString(TransferThread::resolvedName(TransferThread::internalStringTostring(source))));
+ std::string folder=TransferThread::internalStringTostring(FSabsolutePath(source));
if(folder.size()>80)
- folder=folder.mid(0,38)+"..."+folder.mid(folder.size()-38);
- ui->label_content_source_folder->setText(folder);
+ folder=folder.substr(0,38)+"..."+folder.substr(folder.size()-38);
+ ui->label_content_source_folder->setText(QString::fromStdString(folder));
if(ui->label_content_source_folder_name->text().isEmpty())
{
ui->label_source_folder_name->hide();
@@ -41,7 +68,7 @@ FolderExistsDialog::FolderExistsDialog(QWidget *parent, QFileInfo source, bool i
}
if(isSame)
{
- this->destinationInfo=source;
+ this->destinationInfo=TransferThread::internalStringTostring(source);
ui->label_source->hide();
ui->label_destination->hide();
ui->label_destination_modified->hide();
@@ -53,14 +80,29 @@ FolderExistsDialog::FolderExistsDialog(QWidget *parent, QFileInfo source, bool i
}
else
{
- this->destinationInfo=destination;
+ this->destinationInfo=TransferThread::internalStringTostring(destination);
this->setWindowTitle(tr("Folder already exists"));
- ui->label_content_destination_modified->setText(destination.lastModified().toString());
- ui->label_content_destination_folder_name->setText(destination.fileName());
- QString folder=destination.absolutePath();
+ struct stat destination_statbuf;
+ if(TransferThread::exists(destination))
+ {
+ #ifdef Q_OS_UNIX
+ #ifdef Q_OS_MAC
+ const uint64_t mdate=destination_statbuf.st_mtimespec.tv_sec;
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&destination_statbuf.st_mtim);
+ #endif
+ #else
+ const uint64_t mdate=*reinterpret_cast<int64_t*>(&destination_statbuf.st_mtime);
+ #endif
+ ui->label_content_destination_modified->setText(QDateTime::fromMSecsSinceEpoch(mdate*1000).toString());
+ }
+ else
+ ui->label_content_destination_modified->hide();
+ ui->label_content_destination_folder_name->setText(QString::fromStdString(TransferThread::resolvedName(TransferThread::internalStringTostring(destination))));
+ std::string folder=TransferThread::internalStringTostring(FSabsolutePath(destination));
if(folder.size()>80)
- folder=folder.mid(0,38)+"..."+folder.mid(folder.size()-38);
- ui->label_content_destination_folder->setText(folder);
+ folder=folder.substr(0,38)+"..."+folder.substr(folder.size()-38);
+ ui->label_content_destination_folder->setText(QString::fromStdString(folder));
if(ui->label_content_destination_folder_name->text().isEmpty())
{
ui->label_destination_folder_name->hide();
@@ -99,8 +141,8 @@ std::string FolderExistsDialog::getNewName()
void FolderExistsDialog::on_SuggestNewName_clicked()
{
- QFileInfo destinationInfo=this->destinationInfo;
- QString absolutePath=destinationInfo.absolutePath();
+ std::string destinationInfo=this->destinationInfo;
+ QString absolutePath=QString::fromStdString(FSabsolutePath(destinationInfo));
QString fileName=QString::fromStdString(TransferThread::resolvedName(destinationInfo));
QString suffix;
QString destination;
@@ -119,7 +161,7 @@ void FolderExistsDialog::on_SuggestNewName_clicked()
if(num==1)
{
if(firstRenamingRule.empty())
- newFileName=tr("%name% - copy");
+ newFileName=tr("%name% - copy%suffix%");
else
{
newFileName=QString::fromStdString(firstRenamingRule);
@@ -128,17 +170,25 @@ void FolderExistsDialog::on_SuggestNewName_clicked()
else
{
if(otherRenamingRule.empty())
- newFileName=tr("%name% - copy (%number%)");
+ newFileName=tr("%name% - copy (%number%)%suffix%");
else
newFileName=QString::fromStdString(otherRenamingRule);
newFileName.replace(QStringLiteral("%number%"),QString::number(num));
}
newFileName.replace(QStringLiteral("%name%"),fileName);
- destination=absolutePath+CURRENTSEPARATOR+newFileName+suffix;
- destinationInfo.setFile(destination);
+ newFileName.replace(QStringLiteral("%suffix%"),suffix);
+ destination=absolutePath;
+ if(!destination.endsWith('/')
+ #ifdef Q_OS_WIN32
+ && !destination.endsWith('\\')
+ #endif
+ )
+ destination+=CURRENTSEPARATOR;
+ destination+=newFileName;
+ destinationInfo=destination.toStdString();
num++;
}
- while(destinationInfo.exists());
+ while(TransferThread::exists(destinationInfo.c_str()));
ui->lineEditNewName->setText(newFileName);
}
@@ -190,7 +240,7 @@ void FolderExistsDialog::on_lineEditNewName_returnPressed()
QMessageBox::warning(this,tr("Error"),tr("Try rename with using special characters"));
}
-void FolderExistsDialog::on_lineEditNewName_textChanged(const std::string &arg1)
+void FolderExistsDialog::on_lineEditNewName_textChanged(const QString &arg1)
{
Q_UNUSED(arg1);
updateRenameButton();
diff --git a/plugins/CopyEngine/Ultracopier/FolderExistsDialog.h b/plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.h
index a3bcf67..8681ba6 100644..100755
--- a/plugins/CopyEngine/Ultracopier/FolderExistsDialog.h
+++ b/plugins/CopyEngine/Ultracopier-Spec/FolderExistsDialog.h
@@ -7,10 +7,7 @@
#define FOLDERISSAMEDIALOG_H
#include <QDialog>
-#include <QFileInfo>
-#include <QString>
-#include <QDateTime>
-#include <QDir>
+#include <string>
#include "Environment.h"
@@ -18,6 +15,12 @@ namespace Ui {
class folderExistsDialog;
}
+#ifdef WIDESTRING
+#define INTERNALTYPEPATH std::wstring
+#else
+#define INTERNALTYPEPATH std::string
+#endif
+
/// \brief to show file exists dialog, and ask what do
class FolderExistsDialog : public QDialog
{
@@ -25,7 +28,7 @@ class FolderExistsDialog : public QDialog
public:
/// \brief create the object and pass all the informations to it
- explicit FolderExistsDialog(QWidget *parent,QFileInfo source,bool isSame,QFileInfo destination,std::string firstRenamingRule,std::string otherRenamingRule);
+ explicit FolderExistsDialog(QWidget *parent,INTERNALTYPEPATH source,bool isSame,INTERNALTYPEPATH destination,std::string firstRenamingRule,std::string otherRenamingRule);
~FolderExistsDialog();
/// \brief return the the always checkbox is checked
bool getAlways();
@@ -44,14 +47,14 @@ private slots:
void on_Merge_clicked();
void on_lineEditNewName_editingFinished();
void on_lineEditNewName_returnPressed();
- void on_lineEditNewName_textChanged(const std::string &arg1);
+ void on_lineEditNewName_textChanged(const QString &arg1);
private:
Ui::folderExistsDialog *ui;
FolderExistsAction action;
std::string oldName;
std::string firstRenamingRule;
std::string otherRenamingRule;
- QFileInfo destinationInfo;
+ std::string destinationInfo;
};
#endif // FOLDERISSAMEDIALOG_H
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.qm
new file mode 100755
index 0000000..a48b608
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.ts
new file mode 100755
index 0000000..a94fa18
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/ar/translation.ts
@@ -0,0 +1,1147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="ar_JO">
+<context>
+ <name>CopyEngine</name>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
+ <source>The engine is forced to move, you can&apos;t copy with it</source>
+ <translation>تم إجبار المحرك على الحركة ، لا يمكنك نسخه</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
+ <source>The engine is forced to copy, you can&apos;t move with it</source>
+ <translation>تم إجبار المحرك على النسخ ، لا يمكنك التحرك معه</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Destination</source>
+ <translation>الوجهه</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="520"/>
+ <source>Use the actual destination &quot;%1&quot;?</source>
+ <translation>استخدام الوجهة الفعلية &quot;%1&quot; ؟</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="685"/>
+ <source>The mode has been forced previously. This is an internal error, please report it</source>
+ <translation>تم فرض الوضع مسبقا. هذا خطا داخلي ، الرجاء الإبلاغ عنه</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
+ <source>Ask</source>
+ <translation>اسال</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
+ <source>Skip</source>
+ <translation>تخطي</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="980"/>
+ <source>Merge</source>
+ <translation>دمج</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
+ <source>Rename</source>
+ <translation>اعاده تسميه</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="986"/>
+ <source>Put at the end</source>
+ <translation>وضع في نهاية</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="990"/>
+ <source>Overwrite</source>
+ <translation>الكتابة فوق</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="991"/>
+ <source>Overwrite if different</source>
+ <translation>الكتابة فوق إذا كان مختلفا</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="992"/>
+ <source>Overwrite if newer</source>
+ <translation>الكتابة فوق إذا كان أحدث</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="993"/>
+ <source>Overwrite if older</source>
+ <translation>الكتابة فوق إذا كان أقدم</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options error</source>
+ <translation>خطا في الخيارات</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>لم يتم تحميل محرك الخيارات. غير قادر علي الوصول إلى الفلاتر</translation>
+ </message>
+</context>
+<context>
+ <name>CopyEngineFactory</name>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="430"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <source>Ask</source>
+ <translation>اسال</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <source>Skip</source>
+ <translation>تخطي</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
+ <source>Merge</source>
+ <translation>دمج</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
+ <source>Rename</source>
+ <translation>اعاده تسميه</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <source>Put at the end</source>
+ <translation>وضع في نهاية</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <source>Overwrite</source>
+ <translation>الكتابة فوق</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <source>Overwrite if different</source>
+ <translation>الكتابة فوق إذا كان مختلفا</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
+ <source>Overwrite if newer</source>
+ <translation>الكتابة فوق إذا كان أحدث</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
+ <source>Overwrite if older</source>
+ <translation>الكتابة فوق إذا كان أقدم</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options error</source>
+ <translation>خطا في الخيارات</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <source>Options engine is not loaded. Unable to access the filters</source>
+ <translation>لم يتم تحميل محرك الخيارات. غير قادر علي الوصول إلى الفلاتر</translation>
+ </message>
+ <message>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
+ <source>Options engine is not loaded, can&apos;t access to the filters</source>
+ <translation>لم يتم تحميل محرك الخيارات. غير قادر علي الوصول إلى الفلاتر</translation>
+ </message>
+</context>
+<context>
+ <name>DiskSpace</name>
+ <message>
+ <location filename="../../DiskSpace.ui" line="14"/>
+ <source>Disk space</source>
+ <translation>مساحة القرص</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="24"/>
+ <source>You need more space on this drive to finish this transfer</source>
+ <translation>تحتاج مساحة أكبر على محرك الاقراص هذا لإنهاء هذا النقل</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="49"/>
+ <source>Continue</source>
+ <translation>مواصله</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.ui" line="56"/>
+ <source>Cancel</source>
+ <translation>إلغاء الأمر</translation>
+ </message>
+ <message>
+ <location filename="../../DiskSpace.cpp" line="23"/>
+ <source>Drives %1 have %2 available but need %3</source>
+ <translation>تتوفر %2 محركات الاقراص %1 ولكن تحتاج %3</translation>
+ </message>
+</context>
+<context>
+ <name>FileErrorDialog</name>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
+ <source>Error on folder</source>
+ <translation>خطأ في المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
+ <source>Folder name</source>
+ <translation>اسم المجلد</translation>
+ </message>
+</context>
+<context>
+ <name>FileExistsDialog</name>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>% اسم%-نسخ% لاحقه%</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>(% الاسم%-النسخ (% العدد%% اللاحق +ه%</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Error</source>
+ <translation>الخطا</translation>
+ </message>
+ <message>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
+ <source>Try rename with using special characters</source>
+ <translation>حاول أعاده تسميه باستخدام أحرف خاصه</translation>
+ </message>
+</context>
+<context>
+ <name>FileIsSameDialog</name>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>% اسم%-نسخ% لاحقه%</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>(% الاسم%-النسخ (% العدد%% اللاحق +ه%</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Error</source>
+ <translation>الخطا</translation>
+ </message>
+ <message>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
+ <source>Try rename with using special characters</source>
+ <translation>حاول أعاده تسميه باستخدام أحرف خاصه</translation>
+ </message>
+</context>
+<context>
+ <name>FilterRules</name>
+ <message>
+ <location filename="../../FilterRules.ui" line="33"/>
+ <source>Search:</source>
+ <translation>بحث:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="43"/>
+ <source>Search type:</source>
+ <translation>نوع البحث:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="51"/>
+ <source>Raw text</source>
+ <translation>نص خام</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="56"/>
+ <source>Simplified regex</source>
+ <translation>Simplified regex</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="61"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Perl&apos;s regex</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="69"/>
+ <source>Apply on:</source>
+ <translation>تنطبق على:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="77"/>
+ <source>File</source>
+ <translation>ملف</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="82"/>
+ <source>Folder</source>
+ <translation>مجلد</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="87"/>
+ <source>File and folder</source>
+ <translation>ملف ومجلد</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="125"/>
+ <source>The test string matches with the regex</source>
+ <translation>سلسله اختبار يطابق مع regex</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="102"/>
+ <source>Checking</source>
+ <translation>التحقق</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="115"/>
+ <source>Test string:</source>
+ <translation>سلسله الاختبار:</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="17"/>
+ <source>Filters dialog</source>
+ <translation>حوار الفلاتر</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="95"/>
+ <source>Whole string must match</source>
+ <translation>يجب ان تتطابق السلسلة الكاملة</translation>
+ </message>
+ <message>
+ <location filename="../../FilterRules.ui" line="108"/>
+ <source>The regex is valid</source>
+ <translation>regex صالحة</translation>
+ </message>
+</context>
+<context>
+ <name>Filters</name>
+ <message>
+ <location filename="../../Filters.ui" line="14"/>
+ <source>Filters</source>
+ <translation>فلاتر</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="39"/>
+ <source>Exclusion filters</source>
+ <translation>فلاتر الاستبعاد</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="111"/>
+ <source>Inclusion filters</source>
+ <translation>فلاتر مدرجة</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.ui" line="132"/>
+ <source>None = Include all</source>
+ <translation>بلا = تضمين الكل</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
+ <source>Raw text</source>
+ <translation>نص خام</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
+ <source>Simplified regex</source>
+ <translation>المبسطة regex</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
+ <source>Perl&apos;s regex</source>
+ <translation>Perl&apos;s regex</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
+ <source>Only on file</source>
+ <translation>فقط في الملف</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
+ <source>Only on folder</source>
+ <translation>فقط في المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
+ <source>Full match</source>
+ <translation>تطابق كامل</translation>
+ </message>
+</context>
+<context>
+ <name>FolderExistsDialog</name>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
+ <source>Folder already exists</source>
+ <translation>المجلد موجود بالفعل</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>% اسم%-نسخ% لاحقه%</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>(% الاسم%-النسخ (% العدد%% اللاحق +ه%</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Error</source>
+ <translation>الخطا</translation>
+ </message>
+ <message>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
+ <source>Try rename with using special characters</source>
+ <translation>حاول أعاده التسميه باستخدام أحرف خاصه</translation>
+ </message>
+</context>
+<context>
+ <name>ListThread</name>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
+ <source>Unable do to move or copy item into wrong forced mode: %1</source>
+ <translation>غير قادر علي القيام بنقل المادة أو نسخه إلى وضع إجباري غير صحيح: %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
+ <source>Unable to save the transfer list: %1</source>
+ <translation>غير قادر على حفظ قائمه النقل: %1</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
+ <source>Problem reading file, or file-size is 0</source>
+ <translation>مشكلة في قراءة الملف ، أو حجم الملف هو 0</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
+ <source>Wrong header: &quot;%1&quot;</source>
+ <translation>العنوان الرأسي الخاطئ: &quot;%1&quot;</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
+ <source>The transfer list is in mixed mode, but this instance is not in this mode</source>
+ <translation>قائمة النقل في الوضع المختلط ، ولكن هذا المثيل ليس في هذا الوضع</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
+ <source>The transfer list is in copy mode, but this instance is not in this mode</source>
+ <translation>قائمه النقل في وضع النسخ ولكن هذا المثيل غير في هذا الوضع</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
+ <source>The transfer list is in move mode, but this instance is not in this mode</source>
+ <translation>قائمه النقل في وضع النقل ، ولكن هذا المثيل ليس في هذا الوضع</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
+ <source>Some errors have been found during the line parsing</source>
+ <translation>عثر على بعض الأخطاء اثناء تحليل الخط</translation>
+ </message>
+ <message>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
+ <source>Unable to open the transfer list: %1</source>
+ <translation>غير قادر على فتح قائمه النقل: %1</translation>
+ </message>
+</context>
+<context>
+ <name>MkPath</name>
+ <message>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
+ <source>Unable to create the folder</source>
+ <translation>غير قادر على إنشاء المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="227"/>
+ <source>The source folder don&apos;t exists</source>
+ <translation>مجلد المصدر غير موجود</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="255"/>
+ <source>Unable to temporary rename the folder</source>
+ <translation>غير قادر على أعاده تسميه المجلد المؤقت</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="278"/>
+ <source>Unable to do the final real move the folder</source>
+ <translation>غير قادر على القيام بالخطوة الحقيقية النهائية المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="309"/>
+ <source>Unable to move the folder</source>
+ <translation>غير قادر على نقل المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation>errno: %1 :غير قادر على نقل المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
+ <source>Unable to remove</source>
+ <translation>غير قادر على أزاله</translation>
+ </message>
+</context>
+<context>
+ <name>ReadThread</name>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
+ <source>Internal error, please report it!</source>
+ <translation>خطا داخلي ، يرجى الإبلاغ عن ذلك!</translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
+ <source>Unable to read the source file: </source>
+ <translation>غير قادر على قراءه الملف المصدر:</translation>
+ </message>
+ <message>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
+ <source>File truncated during the read, possible data change</source>
+ <translation>تم اقتطاع الملف اثناء القراءة ، وتغيير البيانات المحتملة</translation>
+ </message>
+</context>
+<context>
+ <name>RenamingRules</name>
+ <message>
+ <location filename="../../RenamingRules.ui" line="35"/>
+ <source>First renaming</source>
+ <translation>أعاده التسمية الاولي</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="41"/>
+ <source>%name% - copy%suffix%</source>
+ <extracomment>%name% should not be translated</extracomment>
+ <translation>% اسم%-نسخ% لاحقه%</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="57"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation>% الاسم%-النسخ (% العدد%% اللاحق +ه%)</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="67"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <extracomment>%name%, %number% should not be translated</extracomment>
+ <translation>&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;لاحقه الملف&lt;/span&gt;%لاحقه%&lt;span style=&quot; font-weight:600;&quot;&gt;للعدد الإضافي ،&lt;/span&gt;%عدد%&lt;span style=&quot; font-weight:600;&quot;&gt;لاسم الملف الأصلي ،&lt;/span&gt;%اسم%&lt;span style=&quot; font-weight:600;&quot;&gt;المتغيرات: &lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="51"/>
+ <source>Second renaming</source>
+ <translation>أعاده تسميه ثانيه</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>أعاده تسميه القواعد</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation>%1 - نسخ (%2)</translation>
+ </message>
+ <message>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation>%1-نسخ (%2) %3</translation>
+ </message>
+</context>
+<context>
+ <name>ScanFileOrFolder</name>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
+ <source>%1 - copy</source>
+ <translation>%1-نسخ</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
+ <source>%1 - copy (%2)</source>
+ <translation>%1 - نسخ (%2)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
+ <source>%name% - copy</source>
+ <translation>%اسم% - نسخ</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
+ <source>%name% - copy (%number%)</source>
+ <translation>% الاسم%-النسخة (% العدد%)</translation>
+ </message>
+ <message>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation>مشكله في قراءه المجلد</translation>
+ </message>
+</context>
+<context>
+ <name>TransferThread</name>
+ <message>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>% اسم%-نسخ% لاحقه%</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>(% الاسم%-النسخ (% العدد%% اللاحق +ه%</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation>الملف غير موجود</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
+ <translation>غير قادر على تغيير التاريخ</translation>
+ </message>
+ <message>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
+ <translation>حاول أعاده تسميه باستخدام أحرف خاصه</translation>
+ </message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation>تاريخ تعديل خاطئ أو غير قادر علي الحصول عليه ، يمكنك تعطيل نقل الوقت للقيام بذلك</translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished">غير قادر على إنشاء مجلد الوجهة:</translation>
+ </message>
+ <message>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished">errno: %1 غير قادر علي إنشاء المجلد الوجهة</translation>
+ </message>
+</context>
+<context>
+ <name>WriteThread</name>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
+ <source>Path resolution error (Empty path)</source>
+ <translation>(خطأ في دقة المسار (مسار فارغ</translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation>غير قادر على إنشاء مجلد الوجهة:</translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation>errno: %1 غير قادر علي إنشاء المجلد الوجهة</translation>
+ </message>
+ <message>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation>خطا داخلي ، يرجى الإبلاغ عن ذلك!</translation>
+ </message>
+</context>
+<context>
+ <name>copyEngineOptions</name>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="44"/>
+ <source>Transfer</source>
+ <translation>نقل</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
+ <source>Move the whole folder</source>
+ <translation>نقل المجلد بأكمله</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
+ <source>Transfer the file rights</source>
+ <translation>نقل حقوق الملف</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
+ <source>Keep the file date</source>
+ <translation>الاحتفاظ بتاريخ الملف</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation>إنشاء مسار كامل إذا لم يكن موجودا</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation>اختباري </translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation>البدء التلقائي</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
+ <source>Error and collision</source>
+ <translation>الخطا والاصطدام</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
+ <source>When folder error</source>
+ <translation>عند خطا في المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
+ <source>When file error</source>
+ <translation>عند خطا في الملف</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
+ <source>When file collision</source>
+ <translation>عندما تتضارب الملفات</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished">الكتابة فوق إذا اختلف تاريخ التعديل</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
+ <translation>عندما يتضارب المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
+ <translation>تحقق مما إذا كان مجلد الوجهة موجودا</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
+ <translation>أعاده تسميه القواعد</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
+ <translation>حذف الملفات المنقولة جزئيا</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
+ <translation>أعاده تسميه الوجهة الاصليه</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
+ <source>Performance</source>
+ <translation>الاداء</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation>Inode threads</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
+ <source>Misc</source>
+ <translation>متفرقات</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
+ <source>Check the disk space</source>
+ <translation>تحقق من مساحة القرص</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
+ <source>Use this folder when destination is not set</source>
+ <translation>استخدم هذا المجلد عندما لا يتم تعيين الوجهة</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
+ <source>Browse</source>
+ <translation>استعراض </translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
+ <source>Filters</source>
+ <translation>فلاتر</translation>
+ </message>
+</context>
+<context>
+ <name>fileErrorDialog</name>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="14"/>
+ <source>Error with file</source>
+ <translation>خطا في الملف</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="20"/>
+ <source>Error</source>
+ <translation>الخطا</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="59"/>
+ <source>Size</source>
+ <translation>حجم</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="76"/>
+ <source>Modified</source>
+ <translation>معدل</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="93"/>
+ <source>File name</source>
+ <translation>اسم الملف</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="110"/>
+ <source>Destination</source>
+ <translation>الوجهه</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="127"/>
+ <source>Folder</source>
+ <translation>مجلد</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="173"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp; تنفيذ هذا الاجراء دوما</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="193"/>
+ <source>Try in with elevated privileges</source>
+ <translation>جرب مع الامتيازات المرتفعة</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="200"/>
+ <source>Put to bottom</source>
+ <translation>وضع إلى أسفل</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="207"/>
+ <source>Retry</source>
+ <translation>اعاده المحاوله</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="214"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;تخطي</translation>
+ </message>
+ <message>
+ <location filename="../../fileErrorDialog.ui" line="221"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;الغاء الامر</translation>
+ </message>
+</context>
+<context>
+ <name>fileExistsDialog</name>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="14"/>
+ <source>The file exists</source>
+ <translation>الملف موجود</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>المصدر</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>الوجهه</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="82"/>
+ <location filename="../../fileExistsDialog.ui" line="170"/>
+ <source>Size</source>
+ <translation>حجم</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="99"/>
+ <location filename="../../fileExistsDialog.ui" line="187"/>
+ <source>Modified</source>
+ <translation>معدل</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="116"/>
+ <location filename="../../fileExistsDialog.ui" line="204"/>
+ <source>File name</source>
+ <translation>اسم الملف</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="133"/>
+ <location filename="../../fileExistsDialog.ui" line="221"/>
+ <source>Folder</source>
+ <translation>مجلد</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="277"/>
+ <source>Suggest new &amp;name</source>
+ <translation>اقتراح &amp;اسم جديد</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="288"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp; تنفيذ هذا الاجراء دوما</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="346"/>
+ <location filename="../../fileExistsDialog.ui" line="349"/>
+ <source>Overwrite if modification date differs</source>
+ <translation>الكتابة فوق إذا اختلف تاريخ التعديل</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="308"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;اعاده تسميه</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="315"/>
+ <source>&amp;Overwrite</source>
+ <translation>&amp;الكتابة فوق</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="325"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;تخطي</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="332"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;الغاء الامر</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="341"/>
+ <source>Overwrite if newer</source>
+ <translation>الكتابة فوق إذا كان أحدث</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="354"/>
+ <location filename="../../fileExistsDialog.ui" line="357"/>
+ <source>Overwrite if older</source>
+ <translation>الكتابة فوق إذا كان أقدم</translation>
+ </message>
+</context>
+<context>
+ <name>fileIsSameDialog</name>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="40"/>
+ <source>Size</source>
+ <translation>حجم</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="110"/>
+ <source>Modified</source>
+ <translation>معدل</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="70"/>
+ <source>File name</source>
+ <translation>اسم الملف</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="14"/>
+ <source>The source and destination are same</source>
+ <translation>المصدر والوجهة متشابهان</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="90"/>
+ <source>Folder</source>
+ <translation>مجلد</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="159"/>
+ <source>Suggest new &amp;name</source>
+ <translation>اقتراح &amp;اسم جديد</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="170"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp; تنفيذ هذا الاجراء دوما</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="190"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;اعاده تسميه</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="197"/>
+ <source>&amp;Skip</source>
+ <translation>&amp;تخطي</translation>
+ </message>
+ <message>
+ <location filename="../../fileIsSameDialog.ui" line="204"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;الغاء الامر</translation>
+ </message>
+</context>
+<context>
+ <name>folderExistsDialog</name>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="34"/>
+ <source>Source</source>
+ <translation>المصدر</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="50"/>
+ <source>Destination</source>
+ <translation>الوجهه</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="14"/>
+ <source>The source and destination is identical</source>
+ <translation>المصدر والوجهة متطابقان</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="82"/>
+ <location filename="../../folderExistsDialog.ui" line="150"/>
+ <source>Modified</source>
+ <translation>معدل</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="99"/>
+ <location filename="../../folderExistsDialog.ui" line="160"/>
+ <source>Folder name</source>
+ <translation>اسم المجلد</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="116"/>
+ <location filename="../../folderExistsDialog.ui" line="184"/>
+ <source>Folder</source>
+ <translation>مجلد</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="227"/>
+ <source>Suggest new &amp;name</source>
+ <translation>اقتراح &amp;اسم جديد</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="238"/>
+ <source>&amp;Always perform this action</source>
+ <translation>&amp; تنفيذ هذا الاجراء دوما</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="245"/>
+ <source>&amp;Rename</source>
+ <translation>&amp;اعاده تسميه</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="252"/>
+ <source>Merge</source>
+ <translation>دمج</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="259"/>
+ <source>Skip</source>
+ <translation>تخطي</translation>
+ </message>
+ <message>
+ <location filename="../../folderExistsDialog.ui" line="266"/>
+ <source>&amp;Cancel</source>
+ <translation>&amp;الغاء الامر</translation>
+ </message>
+</context>
+</TS>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.qm
new file mode 100755
index 0000000..10475cf
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/de/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.ts
index fb6408e..dc9f497 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/de/translation.ts
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/de/translation.ts
@@ -2,144 +2,93 @@
<!DOCTYPE TS>
<TS version="2.1" language="de" sourcelanguage="en">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="26"/>
- <location filename="../../AvancedQFile.cpp" line="57"/>
- <location filename="../../AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation>Auf dieser Plattform nicht unterstützt</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation>Datum der letzten Änderung ist falsch</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translatorcomment> </translatorcomment>
- <translation>Datum des letzten Zugriffs ist falsch</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation>Unbekannter Fehler: %1</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation>Unbekannter Fehler</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation>Pfad Konvertierungsfehler</translation>
- </message>
-</context>
-<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation>Verschiebemodus - Sie können nicht kopieren</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation>Kopiermodus - Sie können nicht verschieben</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation>Ziel</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation>Aktuelles Ziel: &quot;%1&quot; benutzen?</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
- <translation>Der Modus wurde vorher erzwungen. Interner Fehler - Bitte bei mir melden! </translation>
+ <translation>Der Modus wurde vorher erzwungen. Interner Fehler - Bitte bei mir melden</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation>Fragen</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation>Überspringen</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation>Fusionieren</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation>Umbenennen</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation>Ans Ende verschieben</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation>Überschreiben</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation>Überschreiben, falls verschieden</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation>Überschreiben, falls neuer</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation>Überschreiben, falls älter</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation>Automatisch</translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation>Sequentiell</translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation>Parallel</translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation>Fehlerhafte Optionen</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>Optionen nicht geladen - Kein Zugriff auf Filter</translation>
</message>
@@ -147,85 +96,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation>Fragen</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation>Überspringen</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation>Fusionieren</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation>Umbenennen</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation>Ans Ende verschieben</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation>Überschreiben</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation>Überschreiben, falls verschieden</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation>Überschreiben, falls neuer</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation>Überschreiben, falls älter</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation>Automatisch</translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation>Sequentiell</translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation>Parallel</translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation>Fehlerhafte Optionen</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>Option nicht geladen - Kein Zugriff auf Filter</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation>Option nicht geladen - Kann nicht auf Filter zugreifen</translation>
</message>
@@ -261,12 +200,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../FileErrorDialog.cpp" line="54"/>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation>Ordnerfehler</translation>
</message>
<message>
- <location filename="../../FileErrorDialog.cpp" line="57"/>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation>Ordnername</translation>
</message>
@@ -274,22 +213,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../FileExistsDialog.cpp" line="137"/>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">%name% - Kopie%suffix%</translation>
</message>
<message>
- <location filename="../../FileExistsDialog.cpp" line="144"/>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">%name% - Kopie% (%number%)%suffix%</translation>
</message>
<message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation>Versuche Umbenennung mit Sonderzeichen</translation>
</message>
@@ -297,22 +236,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
- <translation type="unfinished">%name% - Kopie</translation>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished">%name% - Kopie%suffix%</translation>
</message>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished">%name% - Kopie (%number%)</translation>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished">%name% - Kopie% (%number%)%suffix%</translation>
</message>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation>Versuche Umbenennung mit Sonderzeichen</translation>
</message>
@@ -403,55 +342,55 @@
<translation>Filter</translation>
</message>
<message>
- <location filename="../../Filters.ui" line="30"/>
+ <location filename="../../Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation>Ausschließungs-Filter</translation>
</message>
<message>
- <location filename="../../Filters.ui" line="93"/>
+ <location filename="../../Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation>Einschließungs-Filter</translation>
</message>
<message>
- <location filename="../../Filters.ui" line="105"/>
+ <location filename="../../Filters.ui" line="132"/>
<source>None = Include all</source>
<translation>Keiner = Alle einschließen</translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="93"/>
- <location filename="../../Filters.cpp" line="131"/>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
<source>Raw text</source>
<translation>Roh-Text</translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="96"/>
- <location filename="../../Filters.cpp" line="134"/>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation>Vereinfachte RegEx</translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="99"/>
- <location filename="../../Filters.cpp" line="137"/>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation>Perls RegEx</translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="107"/>
- <location filename="../../Filters.cpp" line="145"/>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
<source>Only on file</source>
<translation>Nur auf Datei</translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="110"/>
- <location filename="../../Filters.cpp" line="148"/>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation>Nur auf Ordner</translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="116"/>
- <location filename="../../Filters.cpp" line="154"/>
- <location filename="../../Filters.cpp" line="216"/>
- <location filename="../../Filters.cpp" line="255"/>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
<source>Full match</source>
<translation>Volle Übereinstimmung</translation>
</message>
@@ -459,27 +398,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation>Ordner existiert bereits</translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
- <translation type="unfinished">%name% - Kopie</translation>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished">%name% - Kopie%suffix%</translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished">%name% - Kopie (%number%)</translation>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished">%name% - Kopie% (%number%)%suffix%</translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation>Fehler</translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation>Versuche Umbenennung mit Sonderzeichen</translation>
</message>
@@ -487,49 +426,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation>Falscher Modus: %1 - Kann Element nicht verschieben oder kopieren</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation>Konnte die Transferliste: %1 nicht speichern</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation>Lesefehler, oder Dateigröße=0</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation>Falscher Header: &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation>Die Transferliste ist im gemischten Modus, aber diese Instanz ist nicht im selben Modus</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation>Die Transferliste ist im Kopiermodus, aber diese Instanz ist nicht im selben Modus</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation>Die Transferliste ist im Verschiebe-Modus, aber diese Instanz ist nicht im selben Modus</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation>Bei der Zeilenanalyse sind Fehler aufgetreten</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation>Transferliste: %1 kann nicht geöffnet werden</translation>
</message>
@@ -537,33 +476,39 @@
<context>
<name>MkPath</name>
<message>
- <location filename="../../MkPath.cpp" line="142"/>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation>Der Ordner kann nicht erstellt werden</translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="155"/>
+ <location filename="../../MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation>Quell-Ordner existiert nicht</translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="183"/>
+ <location filename="../../MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation>Kann den Ordner nicht temporär umbenennen</translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="206"/>
+ <location filename="../../MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation>Kann den Ordner nicht endgültig verschieben</translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="233"/>
+ <location filename="../../MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation>Kann den Ordner nicht verschieben</translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="93"/>
- <location filename="../../MkPath.cpp" line="276"/>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation>Kann Ordner nicht verschieben: Fehler Nummer: %1</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation>Kann nicht löschen</translation>
</message>
@@ -571,26 +516,19 @@
<context>
<name>ReadThread</name>
<message>
- <location filename="../../ReadThread.cpp" line="59"/>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
- <translation>Interner Fehler - Bitte bei mir melden!</translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation>Interner Fehler beim Lesen der Quelldatei: Blockgröße außerhalb des zulässigen Bereichs</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
- <translation>Die Quelldatei kann nicht gelesen werden: </translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
- <translation>Datei während des Lesevorgangs abgeschnitten, Daten wurden möglicherweise verändert</translation>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -604,19 +542,19 @@
<location filename="../../RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
+ <translation>%name% - Kopie%suffix%</translation>
</message>
<message>
<location filename="../../RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
+ <translation>%name% - Kopie% (%number%)%suffix%</translation>
</message>
<message>
<location filename="../../RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; für den originalen Dateinamen, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; für die extra Nummer, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; Datei suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../RenamingRules.ui" line="51"/>
@@ -624,194 +562,129 @@
<translation>Zweite Umbenennung</translation>
</message>
<message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation>%1 - Kopie</translation>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>Umbennungsregeln</translation>
</message>
<message>
- <location filename="../../RenamingRules.cpp" line="43"/>
- <location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
- <translation>%1 - Kopie (%2)</translation>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation>%1 - Kopie%2</translation>
</message>
<message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation>Umbennungsregeln</translation>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation>%1 - Kopie (%2) {1 ?} {2)%3?}</translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation>Ordner der schwarzen Liste</translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation>%1 - Kopie</translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation>%1 - Kopie (%2)</translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
- <translation type="unfinished">%name% - Kopie</translation>
+ <translation>%name% - Kopie</translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
- <translation type="unfinished">%name% - Kopie (%number%)</translation>
+ <translation>%name% - Kopie (%number%)</translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation>Dies ist kein Ordner</translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation>Ordner existiert bereits</translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation>Der Ordner kann nicht gelesen werden</translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
- <translation>Problem mit der Namen-Encodierung</translation>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation>Problem beim Lesen des Ordners</translation>
</message>
</context>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../TransferThread.cpp" line="244"/>
- <location filename="../../TransferThread.cpp" line="673"/>
- <location filename="../../TransferThread.cpp" line="745"/>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation>Datei nicht gefunden</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="346"/>
- <location filename="../../TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="421"/>
- <location filename="../../TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished">Interner Fehler: Bereits geöffnet</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished">Laufwerk %1</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished">Unbekannter Ordner</translation>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation type="unfinished">%name% - Kopie%suffix%</translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished">Stammverzeichnis</translation>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation type="unfinished">%name% - Kopie% (%number%)%suffix%</translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
- <translation type="unfinished">Quelle existiert nicht</translation>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation>Datei nicht gefunden</translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <location filename="../../TransferThread.cpp" line="1333"/>
- <location filename="../../TransferThread.cpp" line="1348"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
<source>Unable to change the date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="711"/>
- <location filename="../../TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished">Quelldatei existiert nicht</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
- <translation type="unfinished">Prüfsummen sind verschieden</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
- <translation type="unfinished">Interner Fehler: Ubertragene Größe ungleich</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="751"/>
- <location filename="../../TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished">Ordner kann nicht erstellt werden</translation>
+ <translation>Kann Datum nicht ändern</translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="228"/>
+ <location filename="../../TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation>Versuche Umbenennung mit Sonderzeichen</translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished">%name% - Kopie</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished">%name% - Kopie (%number%)</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
- <translation type="unfinished">Andere Datei befindet sich am selben Ort</translation>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation>Falsches Änderungsdatum oder Fehler beim Auslesen, Sie können die Übertragung des Zeitstempels deaktivieren</translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
- <translation type="unfinished">Interner Fehler: Ziel ist nicht geschlossen</translation>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished">Zielordner konnte nicht erstellt werden: </translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
- <translation type="unfinished">Interner Fehler: Puffer ist nicht leer</translation>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished">Zielordner konnte nicht erstellt werden, Fehler Nummer: %1</translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../WriteThread.cpp" line="83"/>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
- <translation>Pfad-Auflösungsfehler (leerer Pfad)</translation>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
- <translation>Interner Fehler - Bitte bei mir melden!</translation>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation type="unfinished">Zielordner konnte nicht erstellt werden: </translation>
</message>
<message>
- <location filename="../../WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
- <translation>Quelldatei kann nicht gelesen werden: </translation>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation type="unfinished">Zielordner konnte nicht erstellt werden, Fehler Nummer: %1</translation>
</message>
<message>
- <location filename="../../WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
- <translation>Datenabbruch beim Lesen, Daten wurden möglicherweise verändert</translation>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation type="unfinished"></translation>
</message>
</context>
<context>
@@ -822,193 +695,163 @@
<translation>Übertragung</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="53"/>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation>Verschiebe den ganzen Ordner</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="60"/>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
<source>Transfer the file rights</source>
<translation>Übertrage die Dateirechte</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="70"/>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
<source>Keep the file date</source>
<translation>Datum der Dateien beibehalten</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
- <translation>Übertragung automatisch starten</translation>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation>Vollen Pfad erstellen, wenn nicht vorhanden</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="90"/>
- <location filename="../../copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
- <translation>Leistung drosseln</translation>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
- <translation>Genau nach Reihenfolge</translation>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="139"/>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation>Fehler und Kollision</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="145"/>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
- <translation>Bei Ordnerfehlern:</translation>
+ <translation>Bei Ordnerfehler</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="155"/>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
<source>When file error</source>
- <translation>Bei Dateifehlern:</translation>
+ <translation>Bei Dateifehler</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="181"/>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
- <translation>Bei Dateikollisionen:</translation>
+ <translation>Bei Dateikollision</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation type="unfinished">Überschreiben, falls Änderungsdatum verschieden</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="241"/>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
<source>When folder collision</source>
- <translation>Bei Ordnerkollisionen:</translation>
+ <translation>Bei Ordnerkollision</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="272"/>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
<source>Check if destination folder exists</source>
<translation>Prüfen ob Zielordner vorhanden ist</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="279"/>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
<source>Renaming rules</source>
<translation>Umbennungsregeln</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="299"/>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
<source>Delete partially transferred files</source>
<translation>Unvollständig übertragene Dateien löschen</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="312"/>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
<source>Rename the original destination</source>
<translation>Original-Ziel umbenennen</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="343"/>
- <source>Control</source>
- <translation>Überprüfung</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
- <translation>Prüfsumme</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
- <translation>Nur nach einem Fehler</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
- <translation>Ignorieren falls unmöglich</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
- <translation>Prüfsummen vergleichen</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="414"/>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation>Leistung</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation>Paralleler Puffer</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="427"/>
- <location filename="../../copyEngineOptions.ui" line="440"/>
- <location filename="../../copyEngineOptions.ui" line="453"/>
- <location filename="../../copyEngineOptions.ui" line="490"/>
- <location filename="../../copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation>KB</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
- <translation>Blockgröße</translation>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation>Sequentieller Puffer</translation>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
- <translation>OS-Puffer aktivieren</translation>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
- <translation>OS-Puffer nur verwenden, wenn kleiner als</translation>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
- <translation>Übertragungs-Algorithmus</translation>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
- <translation>Parallelisieren wenn kleiner als</translation>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="589"/>
- <location filename="../../copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="618"/>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation>Verschiedenes</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="624"/>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation>Auf freien Speicherplatz überprüfen</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="634"/>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
- <translation type="unfinished"></translation>
+ <translation>Diesen Ordner benutzen, wenn kein Ziel definiert wurde</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="646"/>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation>Wählen</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="668"/>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation>Filter</translation>
</message>
@@ -1139,6 +982,18 @@
<translation>Überschreiben, falls Änderungsdatum verschieden</translation>
</message>
<message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation>Umbenennen (&amp;R)</translation>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.qm
new file mode 100755
index 0000000..3738845
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/id/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.ts
index e17b3f2..ef5da14 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/id/translation.ts
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/el/translation.ts
@@ -2,143 +2,93 @@
<!DOCTYPE TS>
<TS version="2.1">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="26"/>
- <location filename="../../AvancedQFile.cpp" line="57"/>
- <location filename="../../AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -146,85 +96,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
+ <source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -260,12 +200,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../FileErrorDialog.cpp" line="54"/>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileErrorDialog.cpp" line="57"/>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -273,22 +213,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../FileExistsDialog.cpp" line="137"/>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileExistsDialog.cpp" line="144"/>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -296,22 +236,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -402,55 +342,55 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.ui" line="30"/>
+ <location filename="../../Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.ui" line="93"/>
+ <location filename="../../Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.ui" line="105"/>
+ <location filename="../../Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="93"/>
- <location filename="../../Filters.cpp" line="131"/>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="96"/>
- <location filename="../../Filters.cpp" line="134"/>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="99"/>
- <location filename="../../Filters.cpp" line="137"/>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="107"/>
- <location filename="../../Filters.cpp" line="145"/>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="110"/>
- <location filename="../../Filters.cpp" line="148"/>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="116"/>
- <location filename="../../Filters.cpp" line="154"/>
- <location filename="../../Filters.cpp" line="216"/>
- <location filename="../../Filters.cpp" line="255"/>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -458,27 +398,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -486,49 +426,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -536,33 +476,39 @@
<context>
<name>MkPath</name>
<message>
- <location filename="../../MkPath.cpp" line="142"/>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="155"/>
+ <location filename="../../MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="183"/>
+ <location filename="../../MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="206"/>
+ <location filename="../../MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="233"/>
+ <location filename="../../MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="93"/>
- <location filename="../../MkPath.cpp" line="276"/>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
@@ -570,24 +516,17 @@
<context>
<name>ReadThread</name>
<message>
- <location filename="../../ReadThread.cpp" line="59"/>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -623,193 +562,128 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../RenamingRules.cpp" line="43"/>
- <location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../TransferThread.cpp" line="244"/>
- <location filename="../../TransferThread.cpp" line="673"/>
- <location filename="../../TransferThread.cpp" line="745"/>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="346"/>
- <location filename="../../TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="421"/>
- <location filename="../../TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="711"/>
- <location filename="../../TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="751"/>
- <location filename="../../TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <location filename="../../TransferThread.cpp" line="1333"/>
- <location filename="../../TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="228"/>
- <source>Try rename with using special characters</source>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../WriteThread.cpp" line="83"/>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -821,193 +695,163 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="53"/>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="60"/>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
<source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="70"/>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
<source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="90"/>
- <location filename="../../copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="139"/>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="145"/>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="155"/>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="181"/>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="414"/>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="427"/>
- <location filename="../../copyEngineOptions.ui" line="440"/>
- <location filename="../../copyEngineOptions.ui" line="453"/>
- <location filename="../../copyEngineOptions.ui" line="490"/>
- <location filename="../../copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="589"/>
- <location filename="../../copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="618"/>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="624"/>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="634"/>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="646"/>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="668"/>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -1138,6 +982,18 @@
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.qm
new file mode 100755
index 0000000..d925dd6
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/en/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.ts
index 223e40a..4a444fe 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/en/translation.ts
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/en/translation.ts
@@ -2,143 +2,93 @@
<!DOCTYPE TS>
<TS version="2.1" language="en">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="26"/>
- <location filename="../../AvancedQFile.cpp" line="57"/>
- <location filename="../../AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation type="unfinished"></translation>
- </message>
-</context>
-<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -146,85 +96,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
- <source>Overwrite if older</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
<location filename="../../CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
+ <source>Overwrite if older</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation type="unfinished"></translation>
</message>
@@ -260,12 +200,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../FileErrorDialog.cpp" line="54"/>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileErrorDialog.cpp" line="57"/>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation type="unfinished"></translation>
</message>
@@ -273,22 +213,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../FileExistsDialog.cpp" line="137"/>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileExistsDialog.cpp" line="144"/>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -296,22 +236,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -402,55 +342,55 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.ui" line="30"/>
+ <location filename="../../Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.ui" line="93"/>
+ <location filename="../../Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.ui" line="105"/>
+ <location filename="../../Filters.ui" line="132"/>
<source>None = Include all</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="93"/>
- <location filename="../../Filters.cpp" line="131"/>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
<source>Raw text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="96"/>
- <location filename="../../Filters.cpp" line="134"/>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="99"/>
- <location filename="../../Filters.cpp" line="137"/>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="107"/>
- <location filename="../../Filters.cpp" line="145"/>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
<source>Only on file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="110"/>
- <location filename="../../Filters.cpp" line="148"/>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="116"/>
- <location filename="../../Filters.cpp" line="154"/>
- <location filename="../../Filters.cpp" line="216"/>
- <location filename="../../Filters.cpp" line="255"/>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
<source>Full match</source>
<translation type="unfinished"></translation>
</message>
@@ -458,27 +398,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
@@ -486,49 +426,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -536,33 +476,39 @@
<context>
<name>MkPath</name>
<message>
- <location filename="../../MkPath.cpp" line="142"/>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="155"/>
+ <location filename="../../MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="183"/>
+ <location filename="../../MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="206"/>
+ <location filename="../../MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="233"/>
+ <location filename="../../MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="93"/>
- <location filename="../../MkPath.cpp" line="276"/>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation type="unfinished"></translation>
</message>
@@ -570,24 +516,17 @@
<context>
<name>ReadThread</name>
<message>
- <location filename="../../ReadThread.cpp" line="59"/>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
<translation type="unfinished"></translation>
</message>
@@ -628,188 +567,123 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../RenamingRules.cpp" line="43"/>
- <location filename="../../RenamingRules.cpp" line="73"/>
- <source>%1 - copy (%2)</source>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../TransferThread.cpp" line="244"/>
- <location filename="../../TransferThread.cpp" line="673"/>
- <location filename="../../TransferThread.cpp" line="745"/>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="346"/>
- <location filename="../../TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="421"/>
- <location filename="../../TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="711"/>
- <location filename="../../TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="751"/>
- <location filename="../../TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
+ <source>Unable to change the date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
+ <location filename="../../TransferThread.cpp" line="179"/>
+ <source>Try rename with using special characters</source>
<translation type="unfinished"></translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <location filename="../../TransferThread.cpp" line="1333"/>
- <location filename="../../TransferThread.cpp" line="1348"/>
- <source>Unable to change the date</source>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="228"/>
- <source>Try rename with using special characters</source>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../WriteThread.cpp" line="83"/>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -821,193 +695,163 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="53"/>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="60"/>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
<source>Transfer the file rights</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="70"/>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
<source>Keep the file date</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="90"/>
- <location filename="../../copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="139"/>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="145"/>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="155"/>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="181"/>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="241"/>
- <source>When folder collision</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="272"/>
- <source>Check if destination folder exists</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="279"/>
- <source>Renaming rules</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="299"/>
- <source>Delete partially transferred files</source>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="312"/>
- <source>Rename the original destination</source>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="343"/>
- <source>Control</source>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
+ <source>When folder collision</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
+ <source>Check if destination folder exists</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
+ <source>Renaming rules</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
+ <source>Delete partially transferred files</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
+ <source>Rename the original destination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="414"/>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="427"/>
- <location filename="../../copyEngineOptions.ui" line="440"/>
- <location filename="../../copyEngineOptions.ui" line="453"/>
- <location filename="../../copyEngineOptions.ui" line="490"/>
- <location filename="../../copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="589"/>
- <location filename="../../copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="618"/>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="624"/>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="634"/>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="646"/>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="668"/>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation type="unfinished"></translation>
</message>
@@ -1138,6 +982,18 @@
<translation type="unfinished"></translation>
</message>
<message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation type="unfinished"></translation>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.qm
new file mode 100755
index 0000000..feaf1fc
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/es/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.ts
index d69e5eb..aad6412 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/es/translation.ts
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/es/translation.ts
@@ -2,143 +2,93 @@
<!DOCTYPE TS>
<TS version="2.1" language="es" sourcelanguage="en">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="26"/>
- <location filename="../../AvancedQFile.cpp" line="57"/>
- <location filename="../../AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation>No es compatible con esta plataforma</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation>Fecha de última modificación es incorrecto</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation>Fecha de último acceso es incorrecto</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation>Error desconocido: %1</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation>Error desconocido</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation>Error de conversión de Sendero</translation>
- </message>
-</context>
-<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation>El motor se ve obligado a moverse, no se puede copiar con ella</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation>El motor se ve obligado a copiar, no te puedes mover con él</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation>Destino</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation>Utilice el destino &quot;%1&quot; actual?</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation>El modo se ha visto obligado previamente. Este es un error interno, por favor repórtelo</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation>Pedir</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation>Omitir</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation>Unir</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation>Cambiar el nombre</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation>Ponga al final</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation>Sobrescribir</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation>Sobrescribir si es diferente</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation>Sobrescribir si nuevo</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation>Sobrescribir si es mayor</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation>Automático</translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation>Secuencial</translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation>Paralelo</translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation>error Opciones</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>Opciones del motor no está cargado. No es posible acceder a los filtros</translation>
</message>
@@ -146,85 +96,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation>Pedir</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation>Omitir</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation>Unir</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation>Cambiar el nombre</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation>Ponga al final</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation>Sobrescribir</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation>Sobrescribir si es diferente</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation>Sobrescribir si nuevo</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation>Sobrescribir si es mayor</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation>Automático</translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation>Secuencial</translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation>Paralelo</translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation>error Opciones</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>Opciones del motor no está cargado. No es posible acceder a los filtros</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation>Opciones del motor no está cargado, no se puede acceder a los filtros</translation>
</message>
@@ -260,12 +200,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../FileErrorDialog.cpp" line="54"/>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation>Error en la carpeta</translation>
</message>
<message>
- <location filename="../../FileErrorDialog.cpp" line="57"/>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation>Nombre de la carpeta</translation>
</message>
@@ -273,22 +213,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../FileExistsDialog.cpp" line="137"/>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
<source>%name% - copy%suffix%</source>
- <translation type="unfinished"></translation>
+ <translation>%name% - copia%suffix%</translation>
</message>
<message>
- <location filename="../../FileExistsDialog.cpp" line="144"/>
+ <location filename="../../FileExistsDialog.cpp" line="198"/>
<source>%name% - copy (%number%)%suffix%</source>
- <translation type="unfinished"></translation>
+ <translation>%name% - copia (%number%)%suffix%</translation>
</message>
<message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
- <location filename="../../FileExistsDialog.cpp" line="228"/>
+ <location filename="../../FileExistsDialog.cpp" line="289"/>
<source>Try rename with using special characters</source>
<translation>Trate de cambiar el nombre con el uso de caracteres especiales</translation>
</message>
@@ -296,22 +236,22 @@
<context>
<name>FileIsSameDialog</name>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="111"/>
- <source>%name% - copy</source>
- <translation type="unfinished">%name% - copia</translation>
+ <location filename="../../FileIsSameDialog.cpp" line="140"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>%name% - copia%suffix%</translation>
</message>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="118"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished">%name% - copia (%number%)</translation>
+ <location filename="../../FileIsSameDialog.cpp" line="147"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>%name% - copia (%number%)%suffix%</translation>
</message>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
- <location filename="../../FileIsSameDialog.cpp" line="184"/>
+ <location filename="../../FileIsSameDialog.cpp" line="220"/>
<source>Try rename with using special characters</source>
<translation>Trate de cambiar el nombre con el uso de caracteres especiales</translation>
</message>
@@ -402,55 +342,55 @@
<translation>Filtros</translation>
</message>
<message>
- <location filename="../../Filters.ui" line="30"/>
+ <location filename="../../Filters.ui" line="39"/>
<source>Exclusion filters</source>
<translation>Filtros de exclusión</translation>
</message>
<message>
- <location filename="../../Filters.ui" line="93"/>
+ <location filename="../../Filters.ui" line="111"/>
<source>Inclusion filters</source>
<translation>Filtros de inclusión</translation>
</message>
<message>
- <location filename="../../Filters.ui" line="105"/>
+ <location filename="../../Filters.ui" line="132"/>
<source>None = Include all</source>
<translation>Ninguno = Incluya todos los</translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="93"/>
- <location filename="../../Filters.cpp" line="131"/>
+ <location filename="../../Filters.cpp" line="94"/>
+ <location filename="../../Filters.cpp" line="132"/>
<source>Raw text</source>
<translation>texto Fuente</translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="96"/>
- <location filename="../../Filters.cpp" line="134"/>
+ <location filename="../../Filters.cpp" line="97"/>
+ <location filename="../../Filters.cpp" line="135"/>
<source>Simplified regex</source>
<translation>Simplificado regex</translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="99"/>
- <location filename="../../Filters.cpp" line="137"/>
+ <location filename="../../Filters.cpp" line="100"/>
+ <location filename="../../Filters.cpp" line="138"/>
<source>Perl&apos;s regex</source>
<translation>Perl&apos;s regex</translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="107"/>
- <location filename="../../Filters.cpp" line="145"/>
+ <location filename="../../Filters.cpp" line="108"/>
+ <location filename="../../Filters.cpp" line="146"/>
<source>Only on file</source>
<translation>Sólo en el archivo</translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="110"/>
- <location filename="../../Filters.cpp" line="148"/>
+ <location filename="../../Filters.cpp" line="111"/>
+ <location filename="../../Filters.cpp" line="149"/>
<source>Only on folder</source>
<translation>Sólo en la carpeta</translation>
</message>
<message>
- <location filename="../../Filters.cpp" line="116"/>
- <location filename="../../Filters.cpp" line="154"/>
- <location filename="../../Filters.cpp" line="216"/>
- <location filename="../../Filters.cpp" line="255"/>
+ <location filename="../../Filters.cpp" line="117"/>
+ <location filename="../../Filters.cpp" line="155"/>
+ <location filename="../../Filters.cpp" line="217"/>
+ <location filename="../../Filters.cpp" line="256"/>
<source>Full match</source>
<translation>Partido completo</translation>
</message>
@@ -458,27 +398,27 @@
<context>
<name>FolderExistsDialog</name>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="57"/>
+ <location filename="../../FolderExistsDialog.cpp" line="84"/>
<source>Folder already exists</source>
<translation>Carpeta ya existe</translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="122"/>
- <source>%name% - copy</source>
- <translation type="unfinished">%name% - copia</translation>
+ <location filename="../../FolderExistsDialog.cpp" line="164"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>%name% - copia%suffix%</translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="131"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished">%name% - copia (%number%)</translation>
+ <location filename="../../FolderExistsDialog.cpp" line="173"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>%name% - copia (%number%)%suffix%</translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
<source>Error</source>
<translation>Error</translation>
</message>
<message>
- <location filename="../../FolderExistsDialog.cpp" line="190"/>
+ <location filename="../../FolderExistsDialog.cpp" line="240"/>
<source>Try rename with using special characters</source>
<translation>Trate de cambiar el nombre con el uso de caracteres especiales</translation>
</message>
@@ -486,49 +426,49 @@
<context>
<name>ListThread</name>
<message>
- <location filename="../../ListThread.cpp" line="1487"/>
- <location filename="../../ListThread.cpp" line="2419"/>
+ <location filename="../../ListThreadListChange.cpp" line="242"/>
+ <location filename="../../ListThreadListChange.cpp" line="413"/>
<source>Unable do to move or copy item into wrong forced mode: %1</source>
<translation>No se puede hacer para mover o copiar elemento en modo incorrecto obligado: %1</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1494"/>
- <location filename="../../ListThread.cpp" line="2426"/>
+ <location filename="../../ListThreadListChange.cpp" line="249"/>
+ <location filename="../../ListThreadListChange.cpp" line="420"/>
<source>Unable to save the transfer list: %1</source>
<translation>No se puede guardar la lista de transferencias: %1</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1510"/>
+ <location filename="../../ListThreadListChange.cpp" line="270"/>
<source>Problem reading file, or file-size is 0</source>
<translation>Problema al leer el archivo o archivos de tamaño es 0</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1517"/>
+ <location filename="../../ListThreadListChange.cpp" line="277"/>
<source>Wrong header: &quot;%1&quot;</source>
<translation>Encabezado incorrecto: &quot;%1&quot;</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1526"/>
+ <location filename="../../ListThreadListChange.cpp" line="286"/>
<source>The transfer list is in mixed mode, but this instance is not in this mode</source>
<translation>La lista de transferencia está en modo mixto, pero este caso no es de este modo</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1535"/>
+ <location filename="../../ListThreadListChange.cpp" line="295"/>
<source>The transfer list is in copy mode, but this instance is not in this mode</source>
<translation>La lista de transferencia está en el modo de copia, pero esta instancia no está en este modo</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1541"/>
+ <location filename="../../ListThreadListChange.cpp" line="301"/>
<source>The transfer list is in move mode, but this instance is not in this mode</source>
<translation>La lista de transferencia es el modo de desplazamiento, pero esta instancia no está en este modo</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1604"/>
+ <location filename="../../ListThreadListChange.cpp" line="365"/>
<source>Some errors have been found during the line parsing</source>
<translation>Algunos errores han sido encontrados durante el análisis de línea</translation>
</message>
<message>
- <location filename="../../ListThread.cpp" line="1612"/>
+ <location filename="../../ListThreadListChange.cpp" line="373"/>
<source>Unable to open the transfer list: %1</source>
<translation>No se puede abrir la lista de transferencias: %1</translation>
</message>
@@ -536,33 +476,39 @@
<context>
<name>MkPath</name>
<message>
- <location filename="../../MkPath.cpp" line="142"/>
+ <location filename="../../MkPath.cpp" line="187"/>
+ <location filename="../../MkPath.cpp" line="210"/>
<source>Unable to create the folder</source>
<translation>No se puede crear la carpeta</translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="155"/>
+ <location filename="../../MkPath.cpp" line="227"/>
<source>The source folder don&apos;t exists</source>
<translation>La carpeta de origen no existe</translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="183"/>
+ <location filename="../../MkPath.cpp" line="255"/>
<source>Unable to temporary rename the folder</source>
<translation>No es posible cambiar el nombre de la carpeta temporal</translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="206"/>
+ <location filename="../../MkPath.cpp" line="278"/>
<source>Unable to do the final real move the folder</source>
<translation>No se puede hacer el movimiento final real de la carpeta</translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="233"/>
+ <location filename="../../MkPath.cpp" line="309"/>
<source>Unable to move the folder</source>
<translation>No se puede mover la carpeta</translation>
</message>
<message>
- <location filename="../../MkPath.cpp" line="93"/>
- <location filename="../../MkPath.cpp" line="276"/>
+ <location filename="../../MkPath.cpp" line="315"/>
+ <source>Unable to move the folder: errno: %1</source>
+ <translation>No se puede mover la carpeta: errno: %1</translation>
+ </message>
+ <message>
+ <location filename="../../MkPath.cpp" line="124"/>
+ <location filename="../../MkPath.cpp" line="394"/>
<source>Unable to remove</source>
<translation>No se puede eliminar</translation>
</message>
@@ -570,26 +516,19 @@
<context>
<name>ReadThread</name>
<message>
- <location filename="../../ReadThread.cpp" line="59"/>
+ <location filename="../../async/ReadThread.cpp" line="78"/>
<source>Internal error, please report it!</source>
- <translation>Error interno, por favor informe de ello!</translation>
- </message>
- <message>
- <location filename="../../ReadThread.cpp" line="188"/>
- <source>Internal error reading the source file:block size out of range</source>
- <translation>Error interno de leer el archivo de origen: tamaño de bloque fuera de rango</translation>
+ <translation>¡Error interno, por favor repórtelo!</translation>
</message>
<message>
- <location filename="../../ReadThread.cpp" line="196"/>
- <location filename="../../ReadThread.cpp" line="420"/>
+ <location filename="../../async/ReadThread.cpp" line="541"/>
<source>Unable to read the source file: </source>
- <translation>No se puede leer el archivo de origen: </translation>
+ <translation>No se puede leer el archivo fuente: </translation>
</message>
<message>
- <location filename="../../ReadThread.cpp" line="237"/>
- <location filename="../../ReadThread.cpp" line="468"/>
+ <location filename="../../async/ReadThread.cpp" line="595"/>
<source>File truncated during the read, possible data change</source>
- <translation>Archivo truncada durante el cambio de lectura, los datos posibles</translation>
+ <translation>Archivo truncado durante la lectura, posible cambio de datos</translation>
</message>
</context>
<context>
@@ -603,19 +542,19 @@
<location filename="../../RenamingRules.ui" line="41"/>
<source>%name% - copy%suffix%</source>
<extracomment>%name% should not be translated</extracomment>
- <translation type="unfinished"></translation>
+ <translation>%name% - copia%suffix%</translation>
</message>
<message>
<location filename="../../RenamingRules.ui" line="57"/>
<source>%name% - copy (%number%)%suffix%</source>
<extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
+ <translation>%name% - copia (%number%)%suffix%</translation>
</message>
<message>
<location filename="../../RenamingRules.ui" line="67"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; for the original file name, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; for the extra number, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; file suffix&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<extracomment>%name%, %number% should not be translated</extracomment>
- <translation type="unfinished"></translation>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Variables: &lt;span style=&quot; font-weight:600;&quot;&gt;%name%&lt;/span&gt; para el nombre del archivo original, &lt;span style=&quot; font-weight:600;&quot;&gt;%number%&lt;/span&gt; para el número extra, &lt;span style=&quot; font-weight:600;&quot;&gt;%suffix%&lt;/span&gt; sufijo de archivo&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../../RenamingRules.ui" line="51"/>
@@ -623,194 +562,129 @@
<translation>En segundo lugar el cambio de nombre</translation>
</message>
<message>
- <location filename="../../RenamingRules.cpp" line="39"/>
- <location filename="../../RenamingRules.cpp" line="62"/>
- <source>%1 - copy</source>
- <translation>%1 - copia</translation>
+ <location filename="../../RenamingRules.ui" line="14"/>
+ <source>Renaming rules</source>
+ <translation>Reglas de Cambio de nombre</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>
+ <location filename="../../RenamingRules.cpp" line="46"/>
+ <location filename="../../RenamingRules.cpp" line="71"/>
+ <source>%1 - copy%2</source>
+ <translation>%1 - copia%2</translation>
</message>
<message>
- <location filename="../../RenamingRules.ui" line="14"/>
- <source>Renaming rules</source>
- <translation>Reglas de Cambio de nombre</translation>
+ <location filename="../../RenamingRules.cpp" line="50"/>
+ <location filename="../../RenamingRules.cpp" line="84"/>
+ <source>%1 - copy (%2)%3</source>
+ <translation>%1 - copia (%2)%3</translation>
</message>
</context>
<context>
<name>ScanFileOrFolder</name>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="274"/>
- <source>Blacklisted folder</source>
- <translation>Carpeta de la lista negra</translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="338"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="442"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="444"/>
<source>%1 - copy</source>
<translation>%1 - copia</translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="345"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="453"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="455"/>
<source>%1 - copy (%2)</source>
<translation>%1 - copia (%2)</translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="401"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="566"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="568"/>
<source>%name% - copy</source>
- <translation type="unfinished">%name% - copia</translation>
+ <translation>%name% - copia</translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="408"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="577"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="579"/>
<source>%name% - copy (%number%)</source>
- <translation type="unfinished">%name% - copia (%number%)</translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="444"/>
- <source>This is not a folder</source>
- <translation>Esto no es una carpeta</translation>
+ <translation>%name% - copia (%number%)</translation>
</message>
<message>
- <location filename="../../ScanFileOrFolder.cpp" line="446"/>
- <source>The folder does exists</source>
- <translation>La carpeta no existe</translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="448"/>
- <source>The folder is not readable</source>
- <translation>La carpeta no se puede leer</translation>
- </message>
- <message>
- <location filename="../../ScanFileOrFolder.cpp" line="459"/>
- <source>Problem with name encoding</source>
- <translation>Problema con codificación de nombres</translation>
+ <location filename="../../ScanFileOrFolder.cpp" line="663"/>
+ <location filename="../../ScanFileOrFolder.cpp" line="667"/>
+ <source>Problem with folder read</source>
+ <translation>Problema con la carpeta leída</translation>
</message>
</context>
<context>
<name>TransferThread</name>
<message>
- <location filename="../../TransferThread.cpp" line="244"/>
- <location filename="../../TransferThread.cpp" line="673"/>
- <location filename="../../TransferThread.cpp" line="745"/>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <source>File not found</source>
- <translation>Archivo no encontrado</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="346"/>
- <location filename="../../TransferThread.cpp" line="363"/>
- <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="421"/>
- <location filename="../../TransferThread.cpp" line="444"/>
- <source>Internal error: Already opening</source>
- <translation type="unfinished">Error interno: Ya la apertura</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="586"/>
- <source>Drive %1</source>
- <translation type="unfinished">Drive %1</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="588"/>
- <source>Unknown folder</source>
- <translation type="unfinished">Desconocido carpeta</translation>
+ <location filename="../../TransferThread.cpp" line="613"/>
+ <source>%name% - copy%suffix%</source>
+ <translation>%name% - copia%suffix%</translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="592"/>
- <source>root</source>
- <translation type="unfinished">raíz</translation>
+ <location filename="../../TransferThread.cpp" line="620"/>
+ <source>%name% - copy (%number%)%suffix%</source>
+ <translation>%name% - copia (%number%)%suffix%</translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="787"/>
- <source>The source doesn&apos;t exist</source>
- <translation type="unfinished">La fuente no existe</translation>
+ <location filename="../../TransferThread.cpp" line="648"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <source>File not found</source>
+ <translation>Archivo no encontrado</translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1315"/>
- <location filename="../../TransferThread.cpp" line="1333"/>
- <location filename="../../TransferThread.cpp" line="1348"/>
+ <location filename="../../TransferThread.cpp" line="891"/>
+ <location filename="../../TransferThread.cpp" line="927"/>
<source>Unable to change the date</source>
- <translation type="unfinished"></translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="711"/>
- <location filename="../../TransferThread.cpp" line="826"/>
- <source>The source file doesn&apos;t exist</source>
- <translation type="unfinished">El archivo de origen no existe</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1134"/>
- <source>The checksums do not match</source>
- <translation type="unfinished">Las sumas de comprobación no coinciden</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="1239"/>
- <source>Internal error: The size transfered doesn&apos;t match</source>
- <translation type="unfinished">Error interno: El tamaño transferido no coincide</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="751"/>
- <location filename="../../TransferThread.cpp" line="838"/>
- <source>Unable to do the folder</source>
- <translation type="unfinished">Incapaz de hacer la carpeta</translation>
+ <translation>No se puede cambiar la fecha</translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="228"/>
+ <location filename="../../TransferThread.cpp" line="179"/>
<source>Try rename with using special characters</source>
<translation>Trate de cambiar el nombre con el uso de caracteres especiales</translation>
</message>
+</context>
+<context>
+ <name>TransferThreadAsync</name>
<message>
- <location filename="../../TransferThread.cpp" line="645"/>
- <source>%name% - copy</source>
- <translation type="unfinished">%name% - copia</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="652"/>
- <source>%name% - copy (%number%)</source>
- <translation type="unfinished">%name% - copia (%number%)</translation>
- </message>
- <message>
- <location filename="../../TransferThread.cpp" line="832"/>
- <source>Another file exists at same place</source>
- <translation type="unfinished">Otro archivo existe en el mismo lugar</translation>
+ <location filename="../../async/TransferThreadAsync.cpp" line="340"/>
+ <source>Wrong modification date or unable to get it, you can disable time transfer to do it</source>
+ <translation>Fecha de modificación incorrecta o incapaz de obtenerla, puede desactivar la transferencia de tiempo para hacerlo</translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1224"/>
- <source>Internal error: The destination is not closed</source>
- <translation type="unfinished">Error interno: El destino no está cerrado</translation>
+ <location filename="../../async/TransferThreadAsync.cpp" line="428"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="446"/>
+ <source>Unable to create the destination folder: </source>
+ <translation>No se puede crear la carpeta de destino: </translation>
</message>
<message>
- <location filename="../../TransferThread.cpp" line="1250"/>
- <source>Internal error: The buffer is not empty</source>
- <translation type="unfinished">Error interno: El buffer no está vacío</translation>
+ <location filename="../../async/TransferThreadAsync.cpp" line="431"/>
+ <location filename="../../async/TransferThreadAsync.cpp" line="448"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation>No se puede crear la carpeta de destino, errno: %1</translation>
</message>
</context>
<context>
<name>WriteThread</name>
<message>
- <location filename="../../WriteThread.cpp" line="83"/>
+ <location filename="../../async/WriteThread.cpp" line="135"/>
<source>Path resolution error (Empty path)</source>
- <translation>Error de resolución de ruta (camino vacío)</translation>
+ <translation>Error de resolución de ruta (ruta vacía)</translation>
</message>
<message>
- <location filename="../../WriteThread.cpp" line="277"/>
- <source>Internal error, please report it!</source>
- <translation>Error interno, por favor informe de ello!</translation>
+ <location filename="../../async/WriteThread.cpp" line="164"/>
+ <location filename="../../async/WriteThread.cpp" line="197"/>
+ <source>Unable to create the destination folder: </source>
+ <translation>No se puede crear la carpeta de destino: </translation>
</message>
<message>
- <location filename="../../WriteThread.cpp" line="680"/>
- <source>Unable to read the source file: </source>
- <translation>No se puede leer el archivo de origen: </translation>
+ <location filename="../../async/WriteThread.cpp" line="175"/>
+ <location filename="../../async/WriteThread.cpp" line="199"/>
+ <source>Unable to create the destination folder, errno: %1</source>
+ <translation>No se puede crear la carpeta de destino, errno: %1</translation>
</message>
<message>
- <location filename="../../WriteThread.cpp" line="705"/>
- <source>File truncated during read, possible data change</source>
- <translation>Archivo truncado durante lectura, posible cambio de datos</translation>
+ <location filename="../../async/WriteThread.cpp" line="456"/>
+ <source>Internal error, please report it!</source>
+ <translation>¡Error interno, por favor repórtelo!</translation>
</message>
</context>
<context>
@@ -821,193 +695,163 @@
<translation>Transferencia</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="53"/>
+ <location filename="../../copyEngineOptions.ui" line="63"/>
<source>Move the whole folder</source>
<translation>Mueva la carpeta completa</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="60"/>
+ <location filename="../../copyEngineOptions.ui" line="97"/>
<source>Transfer the file rights</source>
<translation>Transferencia de los derechos de archivo</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="70"/>
+ <location filename="../../copyEngineOptions.ui" line="76"/>
<source>Keep the file date</source>
<translation>Mantener la fecha de archivo</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="83"/>
- <source>Autostart the transfer</source>
- <translation>Inicio automático de la transferencia</translation>
+ <location filename="../../copyEngineOptions.ui" line="114"/>
+ <source>Create full path if not exists</source>
+ <translation>Crear ruta completa si no existe</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="90"/>
- <location filename="../../copyEngineOptions.ui" line="110"/>
- <source>Less performance if checked</source>
- <translation>Si comprueba Menos rendimiento</translation>
+ <location filename="../../copyEngineOptions.ui" line="138"/>
+ <source>Checksum</source>
+ <translation>Suma de comprobación</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="113"/>
- <source>Follow the strict order</source>
- <translation>Siga el orden estricto</translation>
+ <location filename="../../copyEngineOptions.ui" line="83"/>
+ <source>Auto start</source>
+ <translation>Inicio automático</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="139"/>
+ <location filename="../../copyEngineOptions.ui" line="154"/>
<source>Error and collision</source>
<translation>Error y de la colisión</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="145"/>
+ <location filename="../../copyEngineOptions.ui" line="160"/>
<source>When folder error</source>
<translation>Cuando el error carpeta</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="155"/>
+ <location filename="../../copyEngineOptions.ui" line="170"/>
<source>When file error</source>
<translation>Cuando archivo error</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="181"/>
+ <location filename="../../copyEngineOptions.ui" line="196"/>
<source>When file collision</source>
<translation>Cuando archivo colisión</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="241"/>
+ <location filename="../../copyEngineOptions.ui" line="239"/>
+ <source>Overwrite if not same size</source>
+ <translation>Sobrescribir si no es del mismo tamaño</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="244"/>
+ <source>Overwrite if modification date differs</source>
+ <translation>Sobrescribir si la fecha de modificación difiere</translation>
+ </message>
+ <message>
+ <location filename="../../copyEngineOptions.ui" line="266"/>
<source>When folder collision</source>
<translation>Cuando la colisión carpeta</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="272"/>
+ <location filename="../../copyEngineOptions.ui" line="297"/>
<source>Check if destination folder exists</source>
<translation>Compruebe si existe la carpeta de destino</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="279"/>
+ <location filename="../../copyEngineOptions.ui" line="304"/>
<source>Renaming rules</source>
<translation>Reglas de Cambio de nombre</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="299"/>
+ <location filename="../../copyEngineOptions.ui" line="324"/>
<source>Delete partially transferred files</source>
<translation>Eliminar archivos parcialmente transferidos</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="312"/>
+ <location filename="../../copyEngineOptions.ui" line="337"/>
<source>Rename the original destination</source>
<translation>Cambie el nombre del destino original</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="343"/>
- <source>Control</source>
- <translation>Controlar</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="349"/>
- <source>Checksum</source>
- <translation>Suma de comprobación</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="358"/>
- <source>Only after error</source>
- <translation>Sólo después de un error</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="365"/>
- <source>Ignore if impossible</source>
- <translation>No haga caso si no es posible</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="382"/>
- <source>Verify checksums</source>
- <translation>Verifique checksums</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="414"/>
+ <location filename="../../copyEngineOptions.ui" line="368"/>
<source>Performance</source>
<translation>Rendimiento</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="420"/>
- <source>Parallel buffer</source>
- <translation>Búfer paralelo</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="427"/>
- <location filename="../../copyEngineOptions.ui" line="440"/>
- <location filename="../../copyEngineOptions.ui" line="453"/>
- <location filename="../../copyEngineOptions.ui" line="490"/>
- <location filename="../../copyEngineOptions.ui" line="559"/>
- <source>KB</source>
- <translation>KB</translation>
- </message>
- <message>
- <location filename="../../copyEngineOptions.ui" line="469"/>
- <source>Block size</source>
- <translation>Tamaño del bloque</translation>
+ <location filename="../../copyEngineOptions.ui" line="387"/>
+ <source>Inode threads</source>
+ <translation>Inode threads</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="476"/>
- <source>Sequential buffer</source>
- <translation>Tampón secuencial</translation>
+ <location filename="../../copyEngineOptions.ui" line="397"/>
+ <location filename="../../copyEngineOptions.ui" line="413"/>
+ <source>MB</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="483"/>
- <source>Enable OS buffer</source>
- <translation>Habilitar el OS de amortiguación</translation>
+ <location filename="../../copyEngineOptions.ui" line="429"/>
+ <source>Uncheck this under Windows create problem</source>
+ <translation>Desmarca esto en Windows crear problema</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="506"/>
- <source>OS buffer only if smaller than</source>
- <translation>OS de amortiguación sólo si menor que</translation>
+ <location filename="../../copyEngineOptions.ui" line="436"/>
+ <source>OS Buffer</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="513"/>
- <source>Transfer algorithm</source>
- <translation>Algoritmo de transferencia</translation>
+ <location filename="../../copyEngineOptions.ui" line="456"/>
+ <source>Disable parallel transfer when are different devices</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="552"/>
- <source>Parallelize if smaller than</source>
- <translation>Paralelice si más pequeño que</translation>
+ <location filename="../../copyEngineOptions.ui" line="463"/>
+ <source>Buffer for different device</source>
+ <translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="582"/>
- <source>Inode threads (unsafe &gt; 1)</source>
+ <location filename="../../copyEngineOptions.ui" line="470"/>
+ <source>OS FLags</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="589"/>
- <location filename="../../copyEngineOptions.ui" line="599"/>
- <source>More cpu, but better organisation on the disk</source>
+ <location filename="../../copyEngineOptions.ui" line="477"/>
+ <source>Buffer for same device</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="602"/>
- <source>Order the list</source>
+ <location filename="../../copyEngineOptions.ui" line="484"/>
+ <source>OS native copy (disable speed limitation)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="618"/>
+ <location filename="../../copyEngineOptions.ui" line="514"/>
<source>Misc</source>
<translation>Misc</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="624"/>
+ <location filename="../../copyEngineOptions.ui" line="520"/>
<source>Check the disk space</source>
<translation>Compruebe el espacio en disco</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="634"/>
+ <location filename="../../copyEngineOptions.ui" line="530"/>
<source>Use this folder when destination is not set</source>
- <translation type="unfinished"></translation>
+ <translation>Use esta carpeta cuando el destino no esté configurado</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="646"/>
+ <location filename="../../copyEngineOptions.ui" line="542"/>
<source>Browse</source>
<translation>Busque</translation>
</message>
<message>
- <location filename="../../copyEngineOptions.ui" line="668"/>
+ <location filename="../../copyEngineOptions.ui" line="564"/>
<source>Filters</source>
<translation>Filtros</translation>
</message>
@@ -1138,6 +982,18 @@
<translation>Sobrescribir si la fecha de modificación difiere</translation>
</message>
<message>
+ <location filename="../../fileExistsDialog.ui" line="362"/>
+ <location filename="../../fileExistsDialog.ui" line="365"/>
+ <source>Overwrite if not same size</source>
+ <translation>Sobrescribir si no es del mismo tamaño</translation>
+ </message>
+ <message>
+ <location filename="../../fileExistsDialog.ui" line="370"/>
+ <location filename="../../fileExistsDialog.ui" line="373"/>
+ <source>Overwrite if not same size and date</source>
+ <translation>Sobrescribir si no es del mismo tamaño y fecha</translation>
+ </message>
+ <message>
<location filename="../../fileExistsDialog.ui" line="308"/>
<source>&amp;Rename</source>
<translation>&amp;Cambiar el nombre</translation>
diff --git a/plugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.qm b/plugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.qm
new file mode 100755
index 0000000..c538b95
--- /dev/null
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.qm
Binary files differ
diff --git a/plugins/CopyEngine/Ultracopier/Languages/fr/translation.ts b/plugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.ts
index 1eeef1b..6bec60f 100644..100755
--- a/plugins/CopyEngine/Ultracopier/Languages/fr/translation.ts
+++ b/plugins/CopyEngine/Ultracopier-Spec/Languages/fr/translation.ts
@@ -2,143 +2,93 @@
<!DOCTYPE TS>
<TS version="2.1" language="fr" sourcelanguage="en">
<context>
- <name>AvancedQFile</name>
- <message>
- <location filename="../../AvancedQFile.cpp" line="26"/>
- <location filename="../../AvancedQFile.cpp" line="57"/>
- <location filename="../../AvancedQFile.cpp" line="88"/>
- <source>Not supported on this platform</source>
- <translation>Non supporté sur cette plateforme</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="40"/>
- <source>Last modified date is wrong</source>
- <translation>Date de dernière modification du fichier incorrecte</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="71"/>
- <source>Last access date is wrong</source>
- <translation>Date du dernier accès au fichier incorrecte</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="121"/>
- <source>Unknown error: %1</source>
- <translation>Erreur inconnue: %1</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="187"/>
- <source>Unknown error</source>
- <translation>Erreur inconnue</translation>
- </message>
- <message>
- <location filename="../../AvancedQFile.cpp" line="133"/>
- <source>Path conversion error</source>
- <translation>Erreur de conversion de chemain</translation>
- </message>
-</context>
-<context>
<name>CopyEngine</name>
<message>
- <location filename="../../CopyEngine.cpp" line="429"/>
- <location filename="../../CopyEngine.cpp" line="451"/>
+ <location filename="../../CopyEngine.cpp" line="438"/>
+ <location filename="../../CopyEngine.cpp" line="461"/>
<source>The engine is forced to move, you can&apos;t copy with it</source>
<translation>Le moteur est forcé en déplacement, vous ne pouvez pas copier avec</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="462"/>
- <location filename="../../CopyEngine.cpp" line="484"/>
+ <location filename="../../CopyEngine.cpp" line="473"/>
+ <location filename="../../CopyEngine.cpp" line="496"/>
<source>The engine is forced to copy, you can&apos;t move with it</source>
<translation>Le moteur est forcé en copie, vous ne pouvez pas déplacer avec</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="520"/>
<source>Destination</source>
<translation>Destination</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="508"/>
+ <location filename="../../CopyEngine.cpp" line="520"/>
<source>Use the actual destination &quot;%1&quot;?</source>
<translation>Utiliser la destination actuelle &quot;%1&quot;?</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="732"/>
+ <location filename="../../CopyEngine.cpp" line="685"/>
<source>The mode has been forced previously. This is an internal error, please report it</source>
<translation>Le mode a été forcé. C&apos;est une erreur interne, merci de la repporter</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1062"/>
- <location filename="../../CopyEngine.cpp" line="1065"/>
- <location filename="../../CopyEngine.cpp" line="1070"/>
- <location filename="../../CopyEngine.cpp" line="1074"/>
+ <location filename="../../CopyEngine.cpp" line="976"/>
+ <location filename="../../CopyEngine.cpp" line="979"/>
+ <location filename="../../CopyEngine.cpp" line="984"/>
+ <location filename="../../CopyEngine.cpp" line="988"/>
<source>Ask</source>
<translation>Demander</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1063"/>
- <location filename="../../CopyEngine.cpp" line="1067"/>
- <location filename="../../CopyEngine.cpp" line="1071"/>
- <location filename="../../CopyEngine.cpp" line="1075"/>
+ <location filename="../../CopyEngine.cpp" line="977"/>
+ <location filename="../../CopyEngine.cpp" line="981"/>
+ <location filename="../../CopyEngine.cpp" line="985"/>
+ <location filename="../../CopyEngine.cpp" line="989"/>
<source>Skip</source>
<translation>Passer</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1066"/>
+ <location filename="../../CopyEngine.cpp" line="980"/>
<source>Merge</source>
<translation>Fusionner</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1068"/>
- <location filename="../../CopyEngine.cpp" line="1080"/>
+ <location filename="../../CopyEngine.cpp" line="982"/>
+ <location filename="../../CopyEngine.cpp" line="994"/>
<source>Rename</source>
<translation>Renommer</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1072"/>
+ <location filename="../../CopyEngine.cpp" line="986"/>
<source>Put at the end</source>
<translation>Mettre à la fin</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1076"/>
+ <location filename="../../CopyEngine.cpp" line="990"/>
<source>Overwrite</source>
<translation>Écraser</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1077"/>
+ <location filename="../../CopyEngine.cpp" line="991"/>
<source>Overwrite if different</source>
<translation>Écraser si différent</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1078"/>
+ <location filename="../../CopyEngine.cpp" line="992"/>
<source>Overwrite if newer</source>
<translation>Écraser si plus récent</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1079"/>
+ <location filename="../../CopyEngine.cpp" line="993"/>
<source>Overwrite if older</source>
<translation>Écraser si plus vieux</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1082"/>
- <source>Automatic</source>
- <translation>Automatique</translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1083"/>
- <source>Sequential</source>
- <translation>Séquentiel</translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1084"/>
- <source>Parallel</source>
- <translation>Parallèle</translation>
- </message>
- <message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
<source>Options error</source>
<translation>Erreur d&apos;options</translation>
</message>
<message>
- <location filename="../../CopyEngine.cpp" line="1185"/>
+ <location filename="../../CopyEngine.cpp" line="1064"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>Le moteur d&apos;options n&apos;est pas chargé. Impossible d&apos;accédé aux filtres</translation>
</message>
@@ -146,85 +96,75 @@
<context>
<name>CopyEngineFactory</name>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="427"/>
+ <location filename="../../CopyEngineFactory.cpp" line="303"/>
+ <source>Supported only on Windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
<location filename="../../CopyEngineFactory.cpp" line="430"/>
- <location filename="../../CopyEngineFactory.cpp" line="435"/>
- <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="433"/>
+ <location filename="../../CopyEngineFactory.cpp" line="438"/>
+ <location filename="../../CopyEngineFactory.cpp" line="442"/>
<source>Ask</source>
<translation>Demander</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="428"/>
- <location filename="../../CopyEngineFactory.cpp" line="432"/>
- <location filename="../../CopyEngineFactory.cpp" line="436"/>
- <location filename="../../CopyEngineFactory.cpp" line="440"/>
+ <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="435"/>
+ <location filename="../../CopyEngineFactory.cpp" line="439"/>
+ <location filename="../../CopyEngineFactory.cpp" line="443"/>
<source>Skip</source>
<translation>Passer</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="431"/>
+ <location filename="../../CopyEngineFactory.cpp" line="434"/>
<source>Merge</source>
<translation>Fusionner</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="433"/>
- <location filename="../../CopyEngineFactory.cpp" line="445"/>
+ <location filename="../../CopyEngineFactory.cpp" line="436"/>
+ <location filename="../../CopyEngineFactory.cpp" line="448"/>
<source>Rename</source>
<translation>Renommer</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="437"/>
+ <location filename="../../CopyEngineFactory.cpp" line="440"/>
<source>Put at the end</source>
<translation>Mettre à la fin</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="441"/>
+ <location filename="../../CopyEngineFactory.cpp" line="444"/>
<source>Overwrite</source>
<translation>Écraser</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="442"/>
+ <location filename="../../CopyEngineFactory.cpp" line="445"/>
<source>Overwrite if different</source>
<translation>Écraser si différent</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="443"/>
+ <location filename="../../CopyEngineFactory.cpp" line="446"/>
<source>Overwrite if newer</source>
<translation>Écraser si plus récent</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="444"/>
+ <location filename="../../CopyEngineFactory.cpp" line="447"/>
<source>Overwrite if older</source>
<translation>Écraser si plus vieux</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="447"/>
- <source>Automatic</source>
- <translation>Automatique</translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="448"/>
- <source>Sequential</source>
- <translation>Séquentiel</translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="449"/>
- <source>Parallel</source>
- <translation>Parallèle</translation>
- </message>
- <message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
<source>Options error</source>
<translation>Erreur d&apos;options</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="500"/>
+ <location filename="../../CopyEngineFactory.cpp" line="463"/>
<source>Options engine is not loaded. Unable to access the filters</source>
<translation>Le moteur d&apos;options n&apos;est pas chargé. Impossible d&apos;accédé aux filtres</translation>
</message>
<message>
- <location filename="../../CopyEngineFactory.cpp" line="539"/>
+ <location filename="../../CopyEngineFactory.cpp" line="502"/>
<source>Options engine is not loaded, can&apos;t access to the filters</source>
<translation>Moteur d&apos;options non chargé, impossible d&apos;accéder aux filtres</translation>
</message>
@@ -260,12 +200,12 @@
<context>
<name>FileErrorDialog</name>
<message>
- <location filename="../../FileErrorDialog.cpp" line="54"/>
+ <location filename="../../FileErrorDialog.cpp" line="87"/>
<source>Error on folder</source>
<translation>Erreur sur un dossier</translation>
</message>
<message>
- <location filename="../../FileErrorDialog.cpp" line="57"/>
+ <location filename="../../FileErrorDialog.cpp" line="90"/>
<source>Folder name</source>
<translation>Nom de répertoire</translation>
</message>
@@ -273,22 +213,22 @@
<context>
<name>FileExistsDialog</name>
<message>
- <location filename="../../FileExistsDialog.cpp" line="137"/>
+ <location filename="../../FileExistsDialog.cpp" line="191"/>
<source>