Skip to content
Snippets Groups Projects
Commit a189ca94 authored by akiraohgaki's avatar akiraohgaki
Browse files

Add package class

parent 8f6cf246
No related branches found
No related tags found
No related merge requests found
#include <QJsonObject>
#include <QMimeDatabase>
#include <QProcess>
#include "package.h"
namespace Utility {
Package::Package(QObject *parent) : QObject(parent)
{}
bool Package::uncompressArchive(const QString &path, const QString &targetDir)
{
QJsonObject archiveTypes;
archiveTypes["application/x-tar"] = QString("tar");
archiveTypes["application/x-gzip"] = QString("tar");
archiveTypes["application/gzip"] = QString("tar");
archiveTypes["application/x-bzip"] = QString("tar");
archiveTypes["application/x-bzip2"] = QString("tar");
archiveTypes["application/x-xz"] = QString("tar");
archiveTypes["application/x-lzma"] = QString("tar");
archiveTypes["application/x-lzip"] = QString("tar");
archiveTypes["application/x-compressed-tar"] = QString("tar");
archiveTypes["application/x-bzip-compressed-tar"] = QString("tar");
archiveTypes["application/x-bzip2-compressed-tar"] = QString("tar");
archiveTypes["application/x-xz-compressed-tar"] = QString("tar");
archiveTypes["application/x-lzma-compressed-tar"] = QString("tar");
archiveTypes["application/x-lzip-compressed-tar"] = QString("tar");
archiveTypes["application/zip"] = QString("zip");
archiveTypes["application/x-7z-compressed"] = QString("7z");
archiveTypes["application/x-rar"] = QString("rar");
archiveTypes["application/x-rar-compressed"] = QString("rar");
QMimeDatabase mimeDb;
QString mimeType = mimeDb.mimeTypeForFile(path).name();
if (archiveTypes.contains(mimeType)) {
QString archiveType = archiveTypes[mimeType].toString();
QProcess process;
QString program;
QStringList arguments;
if (archiveType == "tar") {
program = "tar";
arguments << "-xf" << path << "-C" << targetDir;
}
else if (archiveType == "zip") {
program = "unzip";
arguments << "-o" << path << "-d" << targetDir;
}
else if (archiveType == "7z") {
program = "7z";
arguments << "x" << path << "-o" + targetDir; // No space between -o and directory
}
else if (archiveType == "rar") {
program = "unrar";
arguments << "e" << path << targetDir;
}
process.start(program, arguments);
if (process.waitForFinished()) {
process.waitForReadyRead();
return true;
}
}
return false;
}
bool Package::installPlasmapkg(const QString &path, const QString &type)
{
QProcess process;
QString program = "plasmapkg2"; // Use plasmapkg2 for now
QStringList arguments;
arguments << "-t" << type << "-i" << path;
process.start(program, arguments);
if (process.waitForFinished()) {
return true;
}
return false;
}
bool Package::uninstallPlasmapkg(const QString &path, const QString &type)
{
QProcess process;
QString program = "plasmapkg2"; // Use plasmapkg2 for now
QStringList arguments;
arguments << "-t" << type << "-r" << path;
process.start(program, arguments);
if (process.waitForFinished()) {
return true;
}
return false;
}
} // namespace Utility
#ifndef UTILITY_PACKAGE_H
#define UTILITY_PACKAGE_H
#include <QObject>
namespace Utility {
class Package : public QObject
{
Q_OBJECT
public:
explicit Package(QObject *parent = 0);
static bool uncompressArchive(const QString &path, const QString &targetDir);
static bool installPlasmapkg(const QString &path, const QString &type = "plasmoid");
static bool uninstallPlasmapkg(const QString &path, const QString &type = "plasmoid");
};
} // namespace Utility
#endif // UTILITY_PACKAGE_H
...@@ -20,14 +20,16 @@ SOURCES += \ ...@@ -20,14 +20,16 @@ SOURCES += \
src/core/network.cpp \ src/core/network.cpp \
src/handlers/xdgurl.cpp \ src/handlers/xdgurl.cpp \
src/utility/file.cpp \ src/utility/file.cpp \
src/utility/json.cpp src/utility/json.cpp \
src/utility/package.cpp
HEADERS += \ HEADERS += \
src/core/config.h \ src/core/config.h \
src/core/network.h \ src/core/network.h \
src/handlers/xdgurl.h \ src/handlers/xdgurl.h \
src/utility/file.h \ src/utility/file.h \
src/utility/json.h src/utility/json.h \
src/utility/package.h
RESOURCES += \ RESOURCES += \
src/configs.qrc \ src/configs.qrc \
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment