Something went wrong. Try again.
A fork of https://github.com/crosspoint-reader/crosspoint-reader
Something went wrong. Try again.
1.8 kB · 55 lines
C
at master
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#pragma once#include <OpdsParser.h>
#include <string>#include <utility>#include <vector>
#include "../Activity.h"#include "OpdsServerStore.h"#include "util/ButtonNavigator.h"
/** * Activity for browsing and downloading books from an OPDS server. * Supports navigation through catalog hierarchy and downloading EPUBs. */class OpdsBookBrowserActivity final : public Activity { public: enum class BrowserState { CHECK_WIFI, WIFI_SELECTION, LOADING, BROWSING, DOWNLOADING, ERROR, SEARCH_INPUT };
explicit OpdsBookBrowserActivity(GfxRenderer& renderer, MappedInputManager& mappedInput, OpdsServer server) : Activity("OpdsBookBrowser", renderer, mappedInput), buttonNavigator(), server(std::move(server)) {}
void onEnter() override; void onExit() override; void loop() override; void render(RenderLock&&) override;
private: ButtonNavigator buttonNavigator; BrowserState state = BrowserState::LOADING; std::vector<OpdsEntry> entries; std::vector<std::string> navigationHistory; std::string currentPath; std::string searchTemplate; bool consumeConfirm = false; bool consumeBack = false; // Added missing member int selectorIndex = 0; std::string errorMessage; std::string statusMessage; size_t downloadProgress = 0; size_t downloadTotal = 0;
OpdsServer server; // Copied at construction — safe even if the store changes during browsing
void checkAndConnectWifi(); void launchWifiSelection(); void onWifiSelectionComplete(bool connected); void fetchFeed(const std::string& path); void navigateToEntry(const OpdsEntry& entry); void navigateBack(); void downloadBook(const OpdsEntry& book); void launchSearch(); void performSearch(const std::string& query); bool preventAutoSleep() override { return true; }};