summaryrefslogtreecommitdiffhomepage
path: root/opentrack/software-update-dialog.hpp
blob: caad7cfa1e5d904e10e7893745fc983cdcece59f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#pragma once

#include <QtNetwork>
#include <QDialog>
#include "ui_software-update.h"

extern "C" const char* const opentrack_version;

struct update_query final
{
    explicit update_query(QWidget* parent) : parent(parent), qnam(parent) {}

    QWidget* parent;
    QNetworkReply* r = nullptr;
    QNetworkAccessManager qnam;
    QByteArray buf;
    bool abort = false;

    void on_finished();
    void on_ready() { buf.append(r->readAll()); }
    void maybe_show_dialog();
};

class update_dialog : public QDialog
{
    Q_OBJECT
    friend struct update_query;
private:
    Ui::UpdateDialog ui;
    update_query& q;
private slots:
    void close(QAbstractButton*) { QDialog::close(); }
public:
    update_dialog(QWidget* parent, update_query& q, const QString& new_version);
};