Hi, On 28.04.24 12:22, Méven wrote:
Here is an email for incubating a new KDE project: Kiview. Kiview is a simple file previewer written in C++/Qml, from its README:
looking through the code there are unfortunately a lot of things one trips over.
First and foremost, as others have mentioned, there is way too much system() / shell stuff going on. This kind of code tends to be hard to get working reliably and easily creates security vulnerabilities.
Instead, I would approach the whole problem differently, by trying to leverage the tools KDE Frameworks already offers and uses. Why do you need to execute /usr/bin/unzip when KArchive offers this functionality? Why use WebEngine when there are already solutions in KDE for rendering PDF files? All this could be done in-process without involving filesystem operations or shell commands (and probably in a fraction of the computation time).
Do you know about the KParts interface? Have a look at that. I think it's pretty close to what you want already. E.g. Ark already has a very simple document previewer based on that.
Architectural concerns aside, here is a short list of things I noticed which should be improved:
- Don't inherit QThread. Instead, use a more modern task interface such as QtConcurrent::run() or std::launch.
- You do not need threads to asynchronously handle a QProcess. It has signals for that.
- Numbers which have a fixed meaning should be an enum{}.- Don't write to files with a fixed name in /tmp. Multiple instances of your program will clash and you might overwrite user data. Tools like QTemporaryDir exist which avoid these problems.
- What is going on with the clipboard stuff in dolphinbridge.cpp...? That looks like an abuse of the clipboard.
- Prepending magic prefixes like !isDir! to paths isn't a proper solution for anything.
Hope this helps with the next iteration of this program. Greetings, Sven
OpenPGP_0xA4AAD0019BE03F15.asc
Description: OpenPGP public key
OpenPGP_signature.asc
Description: OpenPGP digital signature