mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-05 16:19:10 +00:00
Dolphin Services: Launch Deb/Rpm archives with QDesktopServices
Summary: When you are inside the services store and you choose to install a deb/rpm package they open in the default application (mostlikely a package installer utility like discover). PS: I have written some ideas/questions, maybe you can comment on them :-) ? Test Plan: Tests still pass, try out what was described in the summary. A product which has a deb/rpm package is for example: `Jetbrains Dolphin Plugin` Reviewers: #dolphin, elvisangelaccio, ngraham, aspotashev Subscribers: kfm-devel Tags: #dolphin Differential Revision: https://phabricator.kde.org/D28795
This commit is contained in:
parent
35b4c6d4df
commit
514d9c8fc9
|
@ -4,6 +4,7 @@ add_definitions(-DTRANSLATION_DOMAIN=\"dolphin_servicemenuinstaller\")
|
|||
add_executable(servicemenuinstaller servicemenuinstaller.cpp)
|
||||
target_link_libraries(servicemenuinstaller PRIVATE
|
||||
Qt5::Core
|
||||
Qt5::Gui
|
||||
KF5::I18n
|
||||
)
|
||||
install(TARGETS servicemenuinstaller ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
|
||||
|
|
|
@ -25,6 +25,9 @@
|
|||
#include <QDirIterator>
|
||||
#include <QCommandLineParser>
|
||||
#include <QMimeDatabase>
|
||||
#include <QUrl>
|
||||
#include <QDesktopServices>
|
||||
#include <QGuiApplication>
|
||||
|
||||
#include <KLocalizedString>
|
||||
|
||||
|
@ -201,6 +204,10 @@ bool cmdInstall(const QString &archive, QString &errorText)
|
|||
return false;
|
||||
}
|
||||
} else {
|
||||
const QStringList binaryPackages = {"application/vnd.debian.binary-package", "application/x-rpm"};
|
||||
if (binaryPackages.contains(QMimeDatabase().mimeTypeForFile(archive).name())) {
|
||||
return QDesktopServices::openUrl(QUrl(archive));
|
||||
}
|
||||
const QString dir = generateDirPath(archive);
|
||||
if (QFile::exists(dir)) {
|
||||
if (!QDir(dir).removeRecursively()) {
|
||||
|
@ -318,7 +325,7 @@ bool cmdUninstall(const QString &archive, QString &errorText)
|
|||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QCoreApplication app(argc, argv);
|
||||
QGuiApplication app(argc, argv);
|
||||
|
||||
QCommandLineParser parser;
|
||||
parser.addPositionalArgument(QStringLiteral("command"), i18nc("@info:shell", "Command to execute: install or uninstall."));
|
||||
|
|
Loading…
Reference in a new issue