]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Merge branch 'release/20.04'
authorAlexander Lohnau <alexander.lohnau@gmx.de>
Mon, 13 Apr 2020 19:25:52 +0000 (21:25 +0200)
committerAlexander Lohnau <alexander.lohnau@gmx.de>
Mon, 13 Apr 2020 19:25:52 +0000 (21:25 +0200)
src/kitemviews/kfileitemmodel.cpp
src/settings/services/servicemenuinstaller/CMakeLists.txt
src/settings/services/servicemenuinstaller/servicemenuinstaller.cpp

index 4b35a0248a5e07f976451fc2b5f80792bc64d5d5..e4dca2734871d3b0c9e0dc0da1375fab76d202e5 100644 (file)
@@ -33,6 +33,9 @@
 #include <QMimeData>
 #include <QTimer>
 #include <QWidget>
+#include <QMutex>
+
+Q_GLOBAL_STATIC_WITH_ARGS(QMutex, s_collatorMutex, (QMutex::Recursive))
 
 // #define KFILEITEMMODEL_DEBUG
 
@@ -1878,6 +1881,8 @@ int KFileItemModel::sortRoleCompare(const ItemData* a, const ItemData* b, const
 
 int KFileItemModel::stringCompare(const QString& a, const QString& b, const QCollator& collator) const
 {
+    QMutexLocker collatorLock(s_collatorMutex());
+
     if (m_naturalSorting) {
         return collator.compare(a, b);
     }
index b5591cad70ce258369e279e8abf9649463aeab96..9888999368267e519553bc125e1d4c3adec2e440 100644 (file)
@@ -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})
index e3866a6ae054b5e62014b99ee9768126491e3a1d..73882e8c2f73643d8313283fea9ead234277f7b7 100644 (file)
@@ -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."));