Skip to content
Snippets Groups Projects
updatehandler.cpp 1.68 KiB
Newer Older
  • Learn to ignore specific revisions
  • #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