#pragma once #include #include struct RecentBook { std::string path; std::string title; std::string author; bool operator==(const RecentBook& other) const { return path == other.path; } }; class RecentBooksStore { // Static instance static RecentBooksStore instance; std::vector recentBooks; public: ~RecentBooksStore() = default; // Get singleton instance static RecentBooksStore& getInstance() { return instance; } // Add a book to the recent list (moves to front if already exists) void addBook(const std::string& path, const std::string& title, const std::string& author); // Remove a book path from the recent list (e.g., when archived or deleted) // Returns true if the book was found and removed bool removeBook(const std::string& path); // Get the list of recent books (most recent first) const std::vector& getBooks() const { return recentBooks; } // Get the count of recent books int getCount() const { return static_cast(recentBooks.size()); } bool saveToFile() const; bool loadFromFile(); }; // Helper macro to access recent books store #define RECENT_BOOKS RecentBooksStore::getInstance()