1#ifndef YAZE_APP_PLATFORM_WASM_WASM_DROP_HANDLER_H_
2#define YAZE_APP_PLATFORM_WASM_WASM_DROP_HANDLER_H_
11#include "absl/status/status.h"
12#include "absl/status/statusor.h"
25class WasmDropHandler {
32 using DropCallback = std::function<void(
const std::string& filename,
33 const std::vector<uint8_t>& data)>;
39 using ErrorCallback = std::function<void(
const std::string& error_message)>;
45 static WasmDropHandler& GetInstance();
54 absl::Status Initialize(
const std::string& element_id =
"",
55 DropCallback on_drop =
nullptr,
56 ErrorCallback on_error =
nullptr);
62 void SetDropCallback(DropCallback on_drop);
68 void SetErrorCallback(ErrorCallback on_error);
74 void SetEnabled(
bool enabled);
80 bool IsEnabled()
const {
return enabled_; }
86 void SetOverlayVisible(
bool visible);
92 void SetOverlayText(
const std::string& text);
98 static bool IsSupported();
105 static bool IsValidRomFile(
const std::string& filename);
113 static void HandleDroppedFile(
const char* filename,
const uint8_t* data,
120 static void HandleDropError(
const char* error_message);
125 static void HandleDragEnter();
130 static void HandleDragLeave();
140 WasmDropHandler(
const WasmDropHandler&) =
delete;
141 WasmDropHandler& operator=(
const WasmDropHandler&) =
delete;
144 bool initialized_ =
false;
145 bool enabled_ =
false;
146 DropCallback drop_callback_;
147 ErrorCallback error_callback_;
148 std::string element_id_;
149 int drag_counter_ = 0;
152 static std::unique_ptr<WasmDropHandler> instance_;
160void yazeHandleDroppedFile(
const char* filename,
const uint8_t* data,
162void yazeHandleDropError(
const char* error_message);
163void yazeHandleDragEnter();
164void yazeHandleDragLeave();