2013-09-15 19:11:39 +00:00
|
|
|
#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:
|
|
|
|
|
2013-09-23 00:40:51 +00:00
|
|
|
AsyncReqComponent(Window* window, std::shared_ptr<HttpReq> req, std::function<void(std::shared_ptr<HttpReq>)> onSuccess, std::function<void()> onCancel = nullptr);
|
2013-09-15 19:11:39 +00:00
|
|
|
|
|
|
|
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;
|
|
|
|
};
|