Bug 233902 - A better handling of file operations
Summary: A better handling of file operations
Status: CONFIRMED
Alias: None
Product: kdelibs
Classification: Frameworks and Libraries
Component: general (show other bugs)
Version: Git
Platform: Neon Linux
: NOR wishlist
Target Milestone: ---
Assignee: kdelibs bugs
URL:
Keywords:
: 340042 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-04-10 01:25 UTC by m.wege
Modified: 2023-11-23 17:48 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
Example for integration into other file manager (6.29 KB, patch)
2023-11-22 20:56 UTC, BRULE Herman
Details

Note You need to log in before you can comment on or make changes to this bug.
Description m.wege 2010-04-10 01:25:34 UTC
Version:            (using KDE 4.4.2)
Installed from:    Ubuntu Packages

First posted at KDE-Brainstorm:

http://forum.kde.org/brainstorm.php#idea86138_page1

I want to suggest a better way how to improve the possibilities for the user to handle file operations. Problems are not only the display in notifications, but mainly the way they are handled, problems are handled with or the user can interfere with the ongoing operations.

The solution I would call "File operations queue" which would be similar to a printer queue (not the one of KDE4, which is still not very mature). With the file operations queue there would be
- only one notifications item showing details only by device or operation type
- the user then could open the file operations window which allows a detailed view and manipulation
- Similar to a printer queue, the file operations queue collects all file operations (copy, move, delete, downloads)
- All operations have (automatically) assigned priorities to prevents too many operations on the same device and/or at the same time
- It is possible to manually change of priorities, delete tasks or part of a task (like deletion or copying of a file from the queue
- There is a kind of record keeping so that there is limited undo functionality
- The user can predefine priorities by file-type, device, operation type (e.g. delete)
- The file operations queue saved through session management. Tasks can be continued after reboot.
- When the user shuts down the system, he is offered to shut down after the tasks are finished or to shut down immediately.
- The user can define a total amount of system resources for file operations, so that he can still work during large file copy operations if he has a slow system.
- File operations which failed (e.g. copying or downloads which could not be finished because there was not enough disc space) can be resumed, the system offers the user also a a solution (start of disc sweeper)
- There could be plug-ins for operations should be repeated on a certain date/time (backup, up/download, synchronizing) or on a defined event (plug-in of a external harddrive)
finish other tasks while interaction is required when possible:)
I want to suggest a better way how to improve the possibilities for the user to handle file operations. Problems are not only the display in notifications, but mainly the way they are handled, problems are handled with or the user can interfere with the ongoing operations. The solution I would call "File operations queue" which would be similar to a printer queue (not the one of KDE4, which is still not very mature). With the file operations queue there would be - only one notifications item showing details only by device or operation type - the user then could open the file operations window which allows a detailed view and manipulation - Similar to a printer queue, the file operations queue collects all file operations (copy, move, delete, downloads) - All operations have (automatically) assigned priorities to prevents too many operations on the same device and/or at the same time - It is possible to manually change of priorities, delete tasks or part of a task (like deletion or copying of a file from the queue - There is a kind of record keeping so that there is limited undo functionality - The user can predefine priorities by file-type, device, operation type (e.g. delete) - The file operations queue saved through session management. Tasks can be continued after reboot. - When the user shuts down the system, he is offered to shut down after the tasks are finished or to shut down immediately. - The user can define a total amount of system resources for file operations, so that he can still work during large file copy operations if he has a slow system. - File operations which failed (e.g. copying or downloads which could not be finished because there was not enough disc space) can be resumed, the system offers the user also a a solution (start of disc sweeper) - There could be plug-ins for operations should be repeated on a certain date/time (backup, up/download, synchronizing) or on a defined event (plug-in of a external harddrive) finish other tasks while interaction is required when possible:)
I want to suggest a better way how to improve the possibilities for the user to handle file operations. Problems are not only the display in notifications, but mainly the way they are handled, problems are handled with or the user can interfere with the ongoing operations. The solution I would call "File operations queue" which would be similar to a printer queue (not the one of KDE4, which is still not very mature). With the file operations queue there would be - only one notifications item showing details only by device or operation type - the user then could open the file operations window which allows a detailed view and manipulation - Similar to a printer queue, the file operations queue collects all file operations (copy, move, delete, downloads) - All operations have (automatically) assigned priorities to prevents too many operations on the same device and/or at the same time - It is possible to manually change of priorities, delete tasks or part of a task (like deletion or copying of a file from the queue - There is a kind of record keeping so that there is limited undo functionality - The user can predefine priorities by file-type, device, operation type (e.g. delete) - The file operations queue saved through session management. Tasks can be continued after reboot. - When the user shuts down the system, he is offered to shut down after the tasks are finished or to shut down immediately. - The user can define a total amount of system resources for file operations, so that he can still work during large file copy operations if he has a slow system. - File operations which failed (e.g. copying or downloads which could not be finished because there was not enough disc space) can be resumed, the system offers the user also a a solution (start of disc sweeper) - There could be plug-ins for operations should be repeated on a certain date/time (backup, up/download, synchronizing) or on a defined event (plug-in of a external harddrive) finish other tasks while interaction is required when possible:)
 Cancel
Comment 1 omeringen 2013-01-22 16:09:09 UTC
Similar request :
https://bugs.kde.org/show_bug.cgi?id=161017
Comment 2 BRULE Herman 2013-02-12 18:35:56 UTC
Ultracopier do it, but need integration into KDE.
Comment 3 George P Burdell 2014-10-17 07:15:23 UTC
*** Bug 340042 has been marked as a duplicate of this bug. ***
Comment 4 BRULE Herman 2022-04-05 13:36:36 UTC
Some body can say WHERE!? intecept the copy/move to drop the event and send to Ultracopier?
Comment 5 BRULE Herman 2023-07-07 12:21:29 UTC
Hi, 20 years after start Ultracopier, I remain waiting a way to integrate into KDE as transparent file copy for file manager. I'm doing io_uring support, but even if Ultracopier beat KDE into performance, KDE don't help me to integrate it.
Comment 6 stefan pofahl 2023-08-15 06:35:22 UTC
I agree, it would be beneficial either to integrate "rsync" into "Dolphin" or even better to integrate "ultracopier" into KDE.
I face regularly issues to copy data to USB devices and to copy data to my NAS (connected via samba protocol).
As an alternative tool to copy data "MiniCopier" is mentioned:
https://sourceforge.net/software/file-copy/linux/
but this software is outdated.
Comment 7 ahmedmoselhi55 2023-11-22 20:13:43 UTC
It would be great to make a way to integrate ultracopier into dolphin as a part of plasma6 features
Comment 8 BRULE Herman 2023-11-22 20:56:17 UTC
Created attachment 163374 [details]
Example for integration into other file manager

Example for integration into other file manager, I'm open to help into what I can.
Comment 9 ahmedmoselhi55 2023-11-23 17:13:35 UTC
(In reply to BRULE Herman from comment #8)
> Created attachment 163374 [details]
> Example for integration into other file manager
> 
> Example for integration into other file manager, I'm open to help into what
> I can.

I tried to compile using your patch on latest pcmanfm-qt release (i.e 1.4.0) but got the following errors:

[   19s] /home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/pcmanfm/mainwindow.cpp: In function 'void PCManFM::sendRawOrderListA(const QStringList&, QLocalSocket&, int)':
[   19s] /home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/pcmanfm/mainwindow.cpp:1871:13: warning: variable 'byteWriten' set but not used [-Wunused-but-set-variable]
[   19s]  1871 |         int byteWriten;
[   19s]       |             ^~~~~~~~~~
[   19s] /home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/pcmanfm/mainwindow.cpp: In member function 'void PCManFM::MainWindow::on_actionPaste_triggered()':
[   19s] /home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/pcmanfm/mainwindow.cpp:1885:30: error: 'parseClipboardData' was not declared in this scope
[   19s]  1885 |     std::tie(paths, isCut) = parseClipboardData(*data);
[   19s]       |                              ^~~~~~~~~~~~~~~~~~
[   19s] /home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/pcmanfm/mainwindow.cpp:1893:48: error: 'QString::QString(const char*)' is private within this context
[   19s]  1893 |             sendRawOrderListA(QStringList() << "protocol" << "0002", socket, 1);
[   19s]       |                                                ^~~~~~~~~~
[   19s] In file included from /usr/include/qt5/QtCore/qhashfunctions.h:44,
[   19s]                  from /usr/include/qt5/QtCore/qlist.h:47,
[   19s]                  from /usr/include/qt5/QtCore/qvariant.h:45,
[   19s]                  from /usr/include/qt5/QtCore/QVariant:1,
[   19s]                  from /home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/build/pcmanfm/pcmanfm-qt_autogen/include/ui_main-win.h:12,
[   19s]                  from /home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/pcmanfm/mainwindow.h:23,
[   19s]                  from /home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/pcmanfm/mainwindow.cpp:20:
[   19s] /usr/include/qt5/QtCore/qstring.h:973:5: note: declared private here
[   19s]   973 |     QString(const char *ch);
[   19s]       |     ^~~~~~~
[   19s] /home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/pcmanfm/mainwindow.cpp:1893:62: error: 'QString::QString(const char*)' is private within this context
[   19s]  1893 |             sendRawOrderListA(QStringList() << "protocol" << "0002", socket, 1);
[   19s]       |                                                              ^~~~~~
[   19s] /usr/include/qt5/QtCore/qstring.h:973:5: note: declared private here
[   19s]   973 |     QString(const char *ch);
[   19s]       |     ^~~~~~~
[   19s] /home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/pcmanfm/mainwindow.cpp:1898:22: error: 'QString::QString(const char*)' is private within this context
[   19s]  1898 |                 l << "mv";
[   19s]       |                      ^~~~
[   19s] /usr/include/qt5/QtCore/qstring.h:973:5: note: declared private here
[   19s]   973 |     QString(const char *ch);
[   19s]       |     ^~~~~~~
[   19s] /home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/pcmanfm/mainwindow.cpp:1902:22: error: 'QString::QString(const char*)' is private within this context
[   19s]  1902 |                 l << "cp";
[   19s]       |                      ^~~~
[   19s] /usr/include/qt5/QtCore/qstring.h:973:5: note: declared private here
[   19s]   973 |     QString(const char *ch);
[   19s]       |     ^~~~~~~
[   19s] /home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/pcmanfm/mainwindow.cpp:1905:39: error: 'QString::QString(const char*)' is private within this context
[   19s]  1905 |                 l << n.toString().get();
[   19s]       |                                       ^
[   19s] /usr/include/qt5/QtCore/qstring.h:973:5: note: declared private here
[   19s]   973 |     QString(const char *ch);
[   19s]       |     ^~~~~~~
[   19s] /home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/pcmanfm/mainwindow.cpp:1906:55: error: 'QString::QString(const char*)' is private within this context
[   19s]  1906 |             l << currentPage()->path().toString().get();
[   19s]       |                                                       ^
[   19s] /usr/include/qt5/QtCore/qstring.h:973:5: note: declared private here
[   19s]   973 |     QString(const char *ch);
[   19s]       |     ^~~~~~~
[   19s] make[2]: *** [pcmanfm/CMakeFiles/pcmanfm-qt.dir/build.make:335: pcmanfm/CMakeFiles/pcmanfm-qt.dir/mainwindow.cpp.o] Error 1
[   19s] make[2]: Leaving directory '/home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/build'
[   19s] make[1]: *** [CMakeFiles/Makefile2:138: pcmanfm/CMakeFiles/pcmanfm-qt.dir/all] Error 2
[   19s] make[1]: Leaving directory '/home/abuild/rpmbuild/BUILD/pcmanfm-qt-1.4.0.r3/build'
[   19s] make: *** [Makefile:139: all] Error 2


this is the commit i made : https://github.com/ahmedmoselhi/pcmanfm-qt/commit/b618bb69a1a946e1b7e60569147b3bfca399e331
Comment 10 BRULE Herman 2023-11-23 17:48:49 UTC
it's not compatible with last version, I do this patch for very old version, and just provided as example