Skip to content
Snippets Groups Projects
updatehandler.cpp 1.68 KiB
Newer Older
#include "updatehandler.h"
akiraohgaki's avatar
akiraohgaki committed

#ifdef QTLIB_UNIX
akiraohgaki's avatar
akiraohgaki committed
#include <thread>
#include <chrono>

akiraohgaki's avatar
akiraohgaki committed
#include "appimage/update.h"
#endif

#include "handlers/confighandler.h"

UpdateHandler::UpdateHandler(ConfigHandler *configHandler, QObject *parent)
akiraohgaki's avatar
akiraohgaki committed
    : QObject(parent), configHandler_(configHandler)
{}

QString UpdateHandler::checkAll() const
akiraohgaki's avatar
akiraohgaki committed
{
}

QString UpdateHandler::update(const QString &path) const
{
}
akiraohgaki's avatar
akiraohgaki committed

#ifdef QTLIB_UNIX
QString UpdateHandler::describeAppImage(const QString &path) const
{
akiraohgaki's avatar
akiraohgaki committed
    appimage::update::Updater appImageUpdater(path.toStdString());
    QString updateInformation;
akiraohgaki's avatar
akiraohgaki committed
    std::string description;
    if (appImageUpdater.describeAppImage(description)) {
        updateInformation = QString::fromStdString(description);
    }
    return updateInformation;
}

bool UpdateHandler::checkAppImage(const QString &path) const
akiraohgaki's avatar
akiraohgaki committed
{
    appimage::update::Updater appImageUpdater(path.toStdString());
    bool updateAvailable;
akiraohgaki's avatar
akiraohgaki committed
    if (appImageUpdater.checkForChanges(updateAvailable)) {
        return updateAvailable;
    }
akiraohgaki's avatar
akiraohgaki committed
    return false;
}

bool UpdateHandler::updateAppImage(const QString &path)
akiraohgaki's avatar
akiraohgaki committed
{
    appimage::update::Updater appImageUpdater(path.toStdString(), false);
akiraohgaki's avatar
akiraohgaki committed
    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);
            }
        }
        auto newPath = path; // dummy
        emit updateFinished(path, newPath);
akiraohgaki's avatar
akiraohgaki committed
        if (!appImageUpdater.hasError()) {
            return true;
        }
    }
akiraohgaki's avatar
akiraohgaki committed
    return false;
akiraohgaki's avatar
akiraohgaki committed
}
#endif