#include <QMimeData>
#include <QTimer>
#include <QWidget>
+#include <QMutex>
+
+Q_GLOBAL_STATIC_WITH_ARGS(QMutex, s_collatorMutex, (QMutex::Recursive))
// #define KFILEITEMMODEL_DEBUG
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);
}
#include <QDirIterator>
#include <QCommandLineParser>
#include <QMimeDatabase>
+#include <QUrl>
+#include <QDesktopServices>
+#include <QGuiApplication>
#include <KLocalizedString>
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()) {
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."));