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

updateAppImage

parent d2447c8a
No related branches found
No related tags found
No related merge requests found
#include "appimagehandler.h"
#ifdef QTLIB_UNIX
#include <thread>
#include <chrono>
#include "appimage/update.h"
#endif
......@@ -39,12 +42,23 @@ bool AppImageHandler::isUpdateAvailable(const QString &path) const
}
#ifdef QTLIB_UNIX
bool AppImageHandler::updateAppImage(const QString &path) const
bool AppImageHandler::updateAppImage(const QString &path)
{
appimage::update::Updater appImageUpdater(path.toStdString(), false);
/*if (appImageUpdater.start()) {
// TODO: make signals&slots bindings later
}*/
if (appImageUpdater.start()) {
emit updateStarted(path);
while (!appImageUpdater.isDone()) {
std::this_thread::sleep_for(std::chrono::milliseconds(100));
double progress;
if (appImageUpdater.progress(progress)) {
emit updateProgress(path, progress * 100);
}
}
emit updateFinished(path);
if (!appImageUpdater.hasError()) {
return true;
}
}
return false;
}
......
......@@ -11,12 +11,17 @@ class AppImageHandler : public QObject
public:
explicit AppImageHandler(ConfigHandler *configHandler, QObject *parent = nullptr);
signals:
void updateStarted(QString path);
void updateFinished(QString path);
void updateProgress(QString path, int progress);
public slots:
QString describeAppImage(const QString &path) const;
bool isUpdateAvailable(const QString &path) const;
#ifdef QTLIB_UNIX
bool updateAppImage(const QString &path) const;
bool updateAppImage(const QString &path);
#endif
private:
......
......@@ -38,6 +38,10 @@ WebSocketServer::WebSocketServer(ConfigHandler *configHandler, const QString &se
connect(itemHandler_, &ItemHandler::installFinished, this, &WebSocketServer::itemInstallFinished);
connect(itemHandler_, &ItemHandler::uninstallStarted, this, &WebSocketServer::itemUninstallStarted);
connect(itemHandler_, &ItemHandler::uninstallFinished, this, &WebSocketServer::itemUninstallFinished);
connect(appImageHandler_, &AppImageHandler::updateStarted, this, &WebSocketServer::appImageUpdateStarted);
connect(appImageHandler_, &AppImageHandler::updateFinished, this, &WebSocketServer::appImageUpdateFinished);
connect(appImageHandler_, &AppImageHandler::updateProgress, this, &WebSocketServer::appImageUpdateProgress);
}
WebSocketServer::~WebSocketServer()
......@@ -193,6 +197,28 @@ void WebSocketServer::itemUninstallFinished(QJsonObject result)
sendMessage("", "ItemHandler::uninstallFinished", data);
}
void WebSocketServer::appImageUpdateStarted(QString path)
{
QJsonArray data;
data.append(path);
sendMessage("", "AppImageHandler::updateStarted", data);
}
void WebSocketServer::appImageUpdateFinished(QString path)
{
QJsonArray data;
data.append(path);
sendMessage("", "AppImageHandler::updateFinished", data);
}
void WebSocketServer::appImageUpdateProgress(QString path, int progress)
{
QJsonArray data;
data.append(path);
data.append(progress);
sendMessage("", "AppImageHandler::updateProgress", data);
}
void WebSocketServer::receiveMessage(const QString &id, const QString &func, const QJsonArray &data)
{
/* message object format
......
......@@ -51,6 +51,10 @@ private slots:
void itemUninstallStarted(QJsonObject result);
void itemUninstallFinished(QJsonObject result);
void appImageUpdateStarted(QString path);
void appImageUpdateFinished(QString path);
void appImageUpdateProgress(QString path, int progress);
private:
void receiveMessage(const QString &id, const QString &func, const QJsonArray &data);
void sendMessage(const QString &id, const QString &func, const QJsonArray &data);
......
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