#ifndef LIBRARYFILTER_H #define LIBRARYFILTER_H #include #include "tvshow.h" #include #include #include class LibraryFilter { public: LibraryFilter(QList& shows, QDir libraryDir); QList all() const; QList airing() const; QList withWallpaper() const; QList recentlyWatched() const; bool handleApiRequest(QHttpRequest* req, QHttpResponse* resp) const; Episode* getEpisodeForPath(const QString& path) const; TvShow* getTvShowForPath(const QString& path) const; TvShow* getShowForRemoteId(const QString trackerIdentifierKey, int remoteId) const; TvShow* getRandomShow() const; QString getRandomWallpaper() const; QDir getLibraryDir() const; QList statusCompleted() const; QList statusWatching() const; QList statusWaitingForNewEpisodes() const; QList statusOnHold() const; QList statusDropped() const; QList statusPlanToWatch() const; void sendLists(QHttpResponse *resp, QList > > lists) const; QList > > genLists() const; QList missingFiles() const; QList noRemoteId() const; private: typedef bool (*FilterFunction)(const TvShow &, const LibraryFilter&, const void*); QList filter(FilterFunction, const void* userData = NULL) const; static bool filterAll(const TvShow&, const LibraryFilter&, const void *userData); static bool filterAiring(const TvShow & show, const LibraryFilter&, const void* userData); static bool filterHasWallpaper(const TvShow& show, const LibraryFilter& filter, const void* userData); static bool filterRecentlyWatched(const TvShow& show, const LibraryFilter&, const void *userData); static bool filterStatus(const TvShow& show, const LibraryFilter&, const void* userData); static bool filterNoRemoteId(const TvShow& show, const LibraryFilter&, const void*); TvShow* getRandomShow(const QList &shows) const; const QList& tvShows; QDir libraryDir; }; #endif // LIBRARYFILTER_H