rpcsx/rpcs3/rpcs3qt/update_manager.h
2019-10-22 01:51:50 +02:00

37 lines
973 B
C++

#pragma once
#include <QtCore>
#include <QtNetwork>
#include "progress_dialog.h"
class update_manager : public QObject
{
Q_OBJECT
private:
const std::string m_update_url = "https://update.rpcs3.net/?api=v1&c=";
const std::string m_tmp_folder = "/rpcs3_old/";
private:
progress_dialog* m_progress_dialog = nullptr;
QWidget* m_parent = nullptr;
QNetworkAccessManager m_manager;
QNetworkReply* reply_rpcs3 = nullptr;
std::string m_expected_hash;
u64 m_expected_size = 0;
private:
bool handle_reply(QNetworkReply* reply, std::function<bool(update_manager& man, const QByteArray&, bool)> func, bool automatic, const std::string& message);
bool handle_json(const QByteArray& json_data, bool automatic);
bool handle_rpcs3(const QByteArray& rpcs3_data, bool automatic);
public:
update_manager();
void check_for_updates(bool automatic, QWidget* parent = nullptr);
private Q_SLOTS:
void handle_error(QNetworkReply::NetworkError error);
};