diff src/include/anime.h @ 2:23d0d9319a00

Update Also converted everything to LF from CRLF
author Paper <mrpapersonic@gmail.com>
date Sat, 12 Aug 2023 03:16:26 -0400
parents 1ae666fdf9e2
children 5af270662505
line wrap: on
line diff
--- a/src/include/anime.h	Tue Aug 08 19:49:15 2023 -0400
+++ b/src/include/anime.h	Sat Aug 12 03:16:26 2023 -0400
@@ -1,168 +1,175 @@
-#ifndef __anime_h
-#define __anime_h
-#include <vector>
-#include <chrono>
-#include <map>
-#include "window.h"
-
-enum AnimeWatchingStatus {
-	CURRENT,
-	PLANNING,
-	COMPLETED,
-	DROPPED,
-	PAUSED,
-	REPEATING
-};
-
-enum AnimeAiringStatus {
-	FINISHED,
-	RELEASING,
-	NOT_YET_RELEASED,
-	CANCELLED,
-	HIATUS
-};
-
-enum AnimeFormat {
-	TV,
-	TV_SHORT,
-	MOVIE,
-	SPECIAL,
-	OVA,
-	ONA,
-	MUSIC,
-	MANGA,
-	NOVEL,
-	ONE_SHOT
-};
-
-enum AnimeSeason {
-	WINTER,
-	SPRING,
-	SUMMER,
-	FALL
-};
-
-class Anime {
-	public:
-		Anime();
-		Anime(const Anime& a);
-		/* List-specific data */
-		enum AnimeWatchingStatus status;
-		int progress;
-		int score;
-		std::chrono::year_month_day started;
-		std::chrono::year_month_day completed;
-		std::wstring notes;
-
-		/* Useful information */
-		int id;
-		std::wstring title;
-		int episodes;
-		enum AnimeAiringStatus airing;
-		std::chrono::year_month_day air_date;
-		std::vector<std::string> genres;
-		std::vector<std::string> producers;
-		enum AnimeFormat type;
-		enum AnimeSeason season;
-		int audience_score;
-		std::wstring synopsis;
-		int duration;
-};
-
-/* This is a simple wrapper on a vector that provides 
-   methods to make it easier to search the list. */
-class AnimeList {
-	public:
-		AnimeList();
-		AnimeList(const AnimeList& l);
-		~AnimeList();
-		void Add(Anime& anime);
-		void Insert(size_t pos, Anime& anime);
-		void Delete(size_t index);
-		void Clear();
-		std::vector<Anime>::iterator begin() noexcept;
-		std::vector<Anime>::iterator end() noexcept;
-		std::vector<Anime>::const_iterator cbegin() noexcept;
-		std::vector<Anime>::const_iterator cend() noexcept;
-		size_t Size() const;
-		Anime* AnimeById(int id);
-		bool AnimeInList(int id);
-		Anime& operator[](size_t index);
-		const Anime& operator[](size_t index) const;
-		std::wstring name;
-
-	private:
-		std::vector<Anime> anime_list;
-		std::map<int, Anime*> anime_id_to_anime;
-};
-
-class AnimeListWidgetModel : public QAbstractListModel {
-	Q_OBJECT
-	public:
-		enum columns {
-			AL_TITLE,
-			AL_PROGRESS,
-			AL_SCORE,
-			AL_AVG_SCORE,
-			AL_TYPE,
-			AL_SEASON,
-			AL_STARTED,
-			AL_COMPLETED,
-			AL_UPDATED,
-			AL_NOTES,
-			
-			NB_COLUMNS
-		};
-
-		AnimeListWidgetModel(QWidget* parent, AnimeList* alist);
-		~AnimeListWidgetModel() override = default;
-		//QVariant headerData(const int section, const Qt::Orientation orientation, const int role) const;
-		int rowCount(const QModelIndex& parent = QModelIndex()) const;
-		int columnCount(const QModelIndex& parent = QModelIndex()) const;
-		QVariant data(const QModelIndex& index, int role) const;
-		QVariant headerData(const int section, const Qt::Orientation orientation, const int role) const;
-		Anime* GetAnimeFromIndex(const QModelIndex& index);
-		void Update();
-
-	private:
-		//void AddAnime(AnimeList& list);
-		AnimeList& list;
-};
-
-class AnimeListWidget : public QTreeView {
-	Q_OBJECT
-	public:
-		AnimeListWidget(QWidget* parent, AnimeList* alist);
-
-	private slots:
-		void DisplayColumnHeaderMenu();
-		void DisplayListMenu();
-		void ItemDoubleClicked();
-		void SetColumnDefaults();
-		int VisibleColumnsCount() const;
-
-	private:
-		AnimeListWidgetModel* model = nullptr;
-};
-
-class AnimeListPage : public QTabWidget {
-	public:
-		AnimeListPage(QWidget* parent = nullptr);
-		void SyncAnimeList();
-		void FreeAnimeList();
-		int GetTotalAnimeAmount();
-		int GetTotalEpisodeAmount();
-		int GetTotalWatchedAmount();
-		int GetTotalPlannedAmount();
-		double GetAverageScore();
-		double GetScoreDeviation();
-
-	private:
-		std::vector<AnimeList> anime_lists;
-};
-
-extern std::map<enum AnimeSeason, std::string> AnimeSeasonToStringMap;
-extern std::map<enum AnimeFormat, std::string> AnimeFormatToStringMap;
-extern std::map<enum AnimeWatchingStatus, std::string> AnimeWatchingToStringMap;
-extern std::map<enum AnimeAiringStatus, std::string> AnimeAiringToStringMap;
+#ifndef __anime_h
+#define __anime_h
+#include <vector>
+#include <map>
+#include "date.h"
+#include "window.h"
+
+enum AnimeWatchingStatus {
+	CURRENT,
+	PLANNING,
+	COMPLETED,
+	DROPPED,
+	PAUSED,
+	REPEATING
+};
+
+enum AnimeAiringStatus {
+	FINISHED,
+	RELEASING,
+	NOT_YET_RELEASED,
+	CANCELLED,
+	HIATUS
+};
+
+enum AnimeFormat {
+	TV,
+	TV_SHORT,
+	MOVIE,
+	SPECIAL,
+	OVA,
+	ONA,
+	MUSIC,
+	MANGA,
+	NOVEL,
+	ONE_SHOT
+};
+
+enum AnimeSeason {
+	UNKNOWN,
+	WINTER,
+	SPRING,
+	SUMMER,
+	FALL
+};
+
+class Anime {
+	public:
+		Anime();
+		Anime(const Anime& a);
+		/* List-specific data */
+		enum AnimeWatchingStatus status;
+		int progress;
+		int score;
+		Date started;
+		Date completed;
+		int updated; /* this should be 64-bit */
+		std::wstring notes;
+
+		/* Useful information */
+		int id;
+		struct {
+			std::wstring romaji;
+			std::wstring english;
+			std::wstring native;
+		} title;
+		int episodes;
+		enum AnimeAiringStatus airing;
+		Date air_date;
+		std::vector<std::string> genres;
+		std::vector<std::string> producers;
+		enum AnimeFormat type;
+		enum AnimeSeason season;
+		int audience_score;
+		std::wstring synopsis;
+		int duration;
+};
+
+/* This is a simple wrapper on a vector that provides 
+   methods to make it easier to search the list. */
+class AnimeList {
+	public:
+		AnimeList();
+		AnimeList(const AnimeList& l);
+		~AnimeList();
+		void Add(Anime& anime);
+		void Insert(size_t pos, Anime& anime);
+		void Delete(size_t index);
+		void Clear();
+		std::vector<Anime>::iterator begin() noexcept;
+		std::vector<Anime>::iterator end() noexcept;
+		std::vector<Anime>::const_iterator cbegin() noexcept;
+		std::vector<Anime>::const_iterator cend() noexcept;
+		size_t Size() const;
+		Anime* AnimeById(int id);
+		int GetAnimeIndex(Anime& anime) const;
+		bool AnimeInList(int id);
+		Anime& operator[](size_t index);
+		const Anime& operator[](size_t index) const;
+		std::wstring name;
+
+	private:
+		std::vector<Anime> anime_list;
+		std::map<int, Anime*> anime_id_to_anime;
+};
+
+class AnimeListWidgetModel : public QAbstractListModel {
+	Q_OBJECT
+	public:
+		enum columns {
+			AL_TITLE,
+			AL_PROGRESS,
+			AL_SCORE,
+			AL_AVG_SCORE,
+			AL_TYPE,
+			AL_SEASON,
+			AL_STARTED,
+			AL_COMPLETED,
+			AL_UPDATED,
+			AL_NOTES,
+			
+			NB_COLUMNS
+		};
+
+		AnimeListWidgetModel(QWidget* parent, AnimeList* alist);
+		~AnimeListWidgetModel() override = default;
+		//QVariant headerData(const int section, const Qt::Orientation orientation, const int role) const;
+		int rowCount(const QModelIndex& parent = QModelIndex()) const;
+		int columnCount(const QModelIndex& parent = QModelIndex()) const;
+		QVariant data(const QModelIndex& index, int role) const;
+		QVariant headerData(const int section, const Qt::Orientation orientation, const int role) const;
+		Anime* GetAnimeFromIndex(const QModelIndex& index);
+		void UpdateAnime(Anime& anime);
+
+	private:
+		//void AddAnime(AnimeList& list);
+		AnimeList& list;
+};
+
+class AnimeListWidget : public QTreeView {
+	Q_OBJECT
+	public:
+		AnimeListWidget(QWidget* parent, AnimeList* alist);
+
+	private slots:
+		void DisplayColumnHeaderMenu();
+		void DisplayListMenu();
+		void ItemDoubleClicked();
+		void SetColumnDefaults();
+		int VisibleColumnsCount() const;
+
+	private:
+		AnimeListWidgetModel* model = nullptr;
+};
+
+class AnimeListPage : public QTabWidget {
+	public:
+		AnimeListPage(QWidget* parent = nullptr);
+		void SyncAnimeList();
+		void FreeAnimeList();
+		int GetTotalAnimeAmount();
+		int GetTotalEpisodeAmount();
+		int GetTotalWatchedAmount();
+		int GetTotalPlannedAmount();
+		double GetAverageScore();
+		double GetScoreDeviation();
+
+	private:
+		std::vector<AnimeList> anime_lists;
+};
+
+extern std::map<enum AnimeSeason, std::string> AnimeSeasonToStringMap;
+extern std::map<enum AnimeFormat, std::string> AnimeFormatToStringMap;
+extern std::map<enum AnimeWatchingStatus, std::string> AnimeWatchingToStringMap;
+extern std::map<enum AnimeAiringStatus, std::string> AnimeAiringToStringMap;
 #endif // __anime_h
\ No newline at end of file