Files
Crosspoint/src/activities/ActivityResult.h
T
2026-07-04 21:21:24 +03:00

83 lines
1.6 KiB
C++

#pragma once
#include <cstdint>
#include <functional>
#include <string>
#include <type_traits>
#include <utility>
#include <variant>
struct WifiResult {
bool connected = false;
std::string ssid;
std::string ip;
};
struct KeyboardResult {
std::string text;
};
struct MenuResult {
int action = -1;
uint8_t orientation = 0;
uint8_t pageTurnOption = 0;
};
struct ChapterResult {
int spineIndex = 0;
std::string anchor;
};
struct PercentResult {
int percent = 0;
};
struct IntervalResult {
uint32_t value = 0;
};
struct PageResult {
uint32_t page = 0;
};
struct ProgressChangeResult {
int spineIndex = 0;
int page = 0;
int totalPages = 0;
std::string xpath;
float percentage = 0.0f;
bool hasSavedProgress = false;
};
enum class NetworkMode;
struct NetworkModeResult {
NetworkMode mode;
};
struct FootnoteResult {
std::string href;
};
struct FilePathResult {
std::string path;
};
using ResultVariant =
std::variant<std::monostate, WifiResult, KeyboardResult, MenuResult, ChapterResult, PercentResult, IntervalResult,
PageResult, ProgressChangeResult, NetworkModeResult, FootnoteResult, FilePathResult>;
struct ActivityResult {
bool isCancelled = false;
ResultVariant data;
explicit ActivityResult() = default;
template <typename ResultType>
requires std::is_constructible_v<ResultVariant, ResultType&&>
// cppcheck-suppress noExplicitConstructor
ActivityResult(ResultType&& result) : data{std::forward<ResultType>(result)} {}
};
using ActivityResultHandler = std::function<void(const ActivityResult&)>;