Something went wrong. Try again.
A fork of https://github.com/crosspoint-reader/crosspoint-reader
Something went wrong. Try again.
1.8 kB · 86 lines
C
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687#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; // Exact visible-codepoint offset within spineIndex, when the source (a bookmark) has one. // Preferred over xpath/percentage on resolution: it is immune to re-pagination. bool hasVisibleTextOffset = false; uint32_t visibleTextOffset = 0;};
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&)>;