mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-28 00:55:39 +00:00
40 lines
1.1 KiB
C
40 lines
1.1 KiB
C
|
#pragma once
|
||
|
|
||
|
#include "../GuiComponent.h"
|
||
|
#include "../HttpReq.h"
|
||
|
#include <functional>
|
||
|
|
||
|
/* Usage example:
|
||
|
std::shared_ptr<HttpReq> httpreq = std::make_shared<HttpReq>("cdn.garcya.us", "/wp-content/uploads/2010/04/TD250.jpg");
|
||
|
AsyncReqComponent* req = new AsyncReqComponent(mWindow, httpreq,
|
||
|
[] (std::shared_ptr<HttpReq> r)
|
||
|
{
|
||
|
LOG(LogInfo) << "Request completed";
|
||
|
LOG(LogInfo) << " error, if any: " << r->getErrorMsg();
|
||
|
}, [] ()
|
||
|
{
|
||
|
LOG(LogInfo) << "Request canceled";
|
||
|
});
|
||
|
|
||
|
mWindow->pushGui(req);
|
||
|
//we can forget about req, since it will always delete itself
|
||
|
*/
|
||
|
|
||
|
class AsyncReqComponent : public GuiComponent
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
AsyncReqComponent(Window* window, std::shared_ptr<HttpReq> req, std::function<void(std::shared_ptr<HttpReq>)> onSuccess, std::function<void()> onCancel = NULL);
|
||
|
|
||
|
bool input(InputConfig* config, Input input) override;
|
||
|
void update(int deltaTime) override;
|
||
|
void render(const Eigen::Affine3f& parentTrans) override;
|
||
|
|
||
|
private:
|
||
|
std::function<void(std::shared_ptr<HttpReq>)> mSuccessFunc;
|
||
|
std::function<void()> mCancelFunc;
|
||
|
|
||
|
unsigned int mTime;
|
||
|
std::shared_ptr<HttpReq> mRequest;
|
||
|
};
|