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

#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"

AppImageHandler::AppImageHandler(ConfigHandler *configHandler, QObject *parent)
    : QObject(parent), configHandler_(configHandler)
{}

akiraohgaki's avatar
akiraohgaki committed
QString AppImageHandler::describeAppImage(const QString &path) const
{
    QString updateInformation;

#ifdef QTLIB_UNIX
    appimage::update::Updater appImageUpdater(path.toStdString());
    std::string description;
    if (appImageUpdater.describeAppImage(description)) {
        updateInformation = QString::fromStdString(description);
    }
#endif

    return updateInformation;
}

akiraohgaki's avatar
akiraohgaki committed
bool AppImageHandler::isUpdateAvailable(const QString &path) const
{
#ifdef QTLIB_UNIX
    appimage::update::Updater appImageUpdater(path.toStdString());
    bool updateAvailable;
akiraohgaki's avatar
akiraohgaki committed
    if (appImageUpdater.checkForChanges(updateAvailable)) {
        return updateAvailable;
    }
akiraohgaki's avatar
akiraohgaki committed
#endif
akiraohgaki's avatar
akiraohgaki committed

akiraohgaki's avatar
akiraohgaki committed
    return false;
}

#ifdef QTLIB_UNIX
akiraohgaki's avatar
akiraohgaki committed
bool AppImageHandler::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);
            }
        }
        emit updateFinished(path);
        if (!appImageUpdater.hasError()) {
            return true;
        }
    }
akiraohgaki's avatar
akiraohgaki committed

    return false;
akiraohgaki's avatar
akiraohgaki committed
}
#endif